@Override public Map<String, String> getCommittedIndexFile(Segment segment) throws IOException { Map<String, String> indexFileStore = new HashMap<>(); Map<String, List<String>> snapShot = readCommittedIndexFileSnapShot.getSegmentIndexFileMap(); String segName; if (segment.getSegmentNo() != null) { segName = segment.getSegmentNo(); } else { segName = segment.getSegmentFileName(); } List<String> index = snapShot.get(segName); if (null == index) { index = new LinkedList<>(); } for (String indexPath : index) { if (indexPath.endsWith(CarbonTablePath.MERGE_INDEX_FILE_EXT)) { indexFileStore.put(indexPath, indexPath.substring(indexPath.lastIndexOf('/') + 1)); } else { indexFileStore.put(indexPath, null); } } return indexFileStore; }
@Override public SegmentRefreshInfo getCommittedSegmentRefreshInfo(Segment segment, UpdateVO updateVo) throws IOException { Map<String, SegmentRefreshInfo> snapShot = readCommittedIndexFileSnapShot.getSegmentTimestampUpdaterMap(); String segName; if (segment.getSegmentNo() != null) { segName = segment.getSegmentNo(); } else { segName = segment.getSegmentFileName(); } SegmentRefreshInfo segmentRefreshInfo = snapShot.get(segName); return segmentRefreshInfo; }
new ReadCommittedIndexFileSnapShot(indexFileStore, segmentTimestampUpdaterMap); this.readCommittedIndexFileSnapShot = readCommittedIndexFileSnapShot; prepareLoadMetadata();
private void prepareLoadMetadata() { int loadCount = 0; Map<String, List<String>> snapshotMap = this.readCommittedIndexFileSnapShot.getSegmentIndexFileMap(); LoadMetadataDetails[] loadMetadataDetailsArray = new LoadMetadataDetails[snapshotMap.size()]; String segmentID; for (Map.Entry<String, List<String>> entry : snapshotMap.entrySet()) { segmentID = entry.getKey(); LoadMetadataDetails loadMetadataDetails = new LoadMetadataDetails(); long timeSet; try { timeSet = Long.parseLong(segmentID); } catch (NumberFormatException nu) { timeSet = 0; } loadMetadataDetails.setLoadEndTime(timeSet); loadMetadataDetails.setLoadStartTime(timeSet); loadMetadataDetails.setSegmentStatus(SegmentStatus.SUCCESS); loadMetadataDetails.setLoadName(segmentID); loadMetadataDetailsArray[loadCount++] = loadMetadataDetails; } this.loadMetadataDetails = loadMetadataDetailsArray; }