private void swapNewReaderWithLatestLiveDocs() throws IOException { reader = createNewReaderWithLatestLiveDocs(reader); }
/** Returns a reader for merge, with the latest doc values updates and deletions. */ synchronized MergeReader getReaderForMerge(IOContext context) throws IOException { // We must carry over any still-pending DV updates because they were not // successfully written, e.g. because there was a hole in the delGens, // or they arrived after we wrote all DVs for merge but before we set // isMerging here: for (Map.Entry<String, List<DocValuesFieldUpdates>> ent : pendingDVUpdates.entrySet()) { List<DocValuesFieldUpdates> mergingUpdates = mergingDVUpdates.get(ent.getKey()); if (mergingUpdates == null) { mergingUpdates = new ArrayList<>(); mergingDVUpdates.put(ent.getKey(), mergingUpdates); } mergingUpdates.addAll(ent.getValue()); } SegmentReader reader = getReader(context); if (pendingDeletes.needsRefresh(reader)) { // beware of zombies: assert pendingDeletes.getLiveDocs() != null; reader = createNewReaderWithLatestLiveDocs(reader); } assert pendingDeletes.verifyDocCounts(reader); return new MergeReader(reader, pendingDeletes.getHardLiveDocs()); }
private void swapNewReaderWithLatestLiveDocs() throws IOException { reader = createNewReaderWithLatestLiveDocs(reader); }
/** Returns a reader for merge, with the latest doc values updates and deletions. */ synchronized MergeReader getReaderForMerge(IOContext context) throws IOException { // We must carry over any still-pending DV updates because they were not // successfully written, e.g. because there was a hole in the delGens, // or they arrived after we wrote all DVs for merge but before we set // isMerging here: for (Map.Entry<String, List<DocValuesFieldUpdates>> ent : pendingDVUpdates.entrySet()) { List<DocValuesFieldUpdates> mergingUpdates = mergingDVUpdates.get(ent.getKey()); if (mergingUpdates == null) { mergingUpdates = new ArrayList<>(); mergingDVUpdates.put(ent.getKey(), mergingUpdates); } mergingUpdates.addAll(ent.getValue()); } SegmentReader reader = getReader(context); if (pendingDeletes.needsRefresh(reader)) { // beware of zombies: assert pendingDeletes.getLiveDocs() != null; reader = createNewReaderWithLatestLiveDocs(reader); } assert pendingDeletes.verifyDocCounts(reader); return new MergeReader(reader, pendingDeletes.getHardLiveDocs()); }