/** Returns an unmodifiable view of the list of all segments of the current segmentInfos */ final synchronized List<SegmentCommitInfo> listOfSegmentCommitInfos() { return segmentInfos.asList(); }
/** Returns an <b>unmodifiable</b> {@link Iterator} of contained segments in order. */ // @Override (comment out until Java 6) @Override public Iterator<SegmentCommitInfo> iterator() { return asList().iterator(); }
/** Replaces all segments in this instance, but keeps * generation, version, counter so that future commits * remain write once. */ void replace(SegmentInfos other) { rollbackSegmentInfos(other.asList()); lastGeneration = other.lastGeneration; }
final List<SegmentCommitInfo> segments = infos.asList();
SegmentInfos infos, int last, MergeContext mergeContext) throws IOException { MergeSpecification spec = new MergeSpecification(); final List<SegmentCommitInfo> segments = infos.asList();
public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, MergeContext mergeContext) throws IOException { final List<SegmentCommitInfo> segments = segmentInfos.asList(); final int numSegments = segments.size();
/** Returns an unmodifiable view of the list of all segments of the current segmentInfos */ final synchronized List<SegmentCommitInfo> listOfSegmentCommitInfos() { return segmentInfos.asList(); }
/** Returns an <b>unmodifiable</b> {@link Iterator} of contained segments in order. */ // @Override (comment out until Java 6) @Override public Iterator<SegmentCommitInfo> iterator() { return asList().iterator(); }
/** Returns an <b>unmodifiable</b> {@link Iterator} of contained segments in order. */ // @Override (comment out until Java 6) @Override public Iterator<SegmentCommitInfo> iterator() { return asList().iterator(); }
/** Returns an <b>unmodifiable</b> {@link Iterator} of contained segments in order. */ // @Override (comment out until Java 6) @Override public Iterator<SegmentCommitInfo> iterator() { return asList().iterator(); }
/** Replaces all segments in this instance, but keeps * generation, version, counter so that future commits * remain write once. */ void replace(SegmentInfos other) { rollbackSegmentInfos(other.asList()); lastGeneration = other.lastGeneration; }
/** Replaces all segments in this instance, but keeps * generation, version, counter so that future commits * remain write once. */ void replace(SegmentInfos other) { rollbackSegmentInfos(other.asList()); lastGeneration = other.lastGeneration; }
/** Replaces all segments in this instance, but keeps * generation, version, counter so that future commits * remain write once. */ void replace(SegmentInfos other) { rollbackSegmentInfos(other.asList()); lastGeneration = other.lastGeneration; }
private OneMerge findOneSegmentToExpunge(SegmentInfos infos, int maxNumSegments) throws IOException { int expungeCandidate = -1; int maxDelCount = 0; for (int i = maxNumSegments - 1; i >= 0; i--) { SegmentInfoPerCommit info = infos.info(i); int delCount = info.getDelCount(); if (delCount > maxDelCount) { expungeCandidate = i; maxDelCount = delCount; } } if (maxDelCount > 0) { return new OneMerge(infos.asList().subList(expungeCandidate, expungeCandidate + 1)); } return null; }
private OneMerge findOneSegmentToExpunge(SegmentInfos infos, int maxNumSegments) throws IOException { int expungeCandidate = -1; int maxDelCount = 0; for (int i = maxNumSegments - 1; i >= 0; i--) { SegmentInfoPerCommit info = infos.info(i); int delCount = info.getDelCount(); if (delCount > maxDelCount) { expungeCandidate = i; maxDelCount = delCount; } } if (maxDelCount > 0) { return new OneMerge(infos.asList().subList(expungeCandidate, expungeCandidate + 1)); } return null; }
private OneMerge findOneSegmentToExpunge(SegmentInfos infos, int maxNumSegments) throws IOException { int expungeCandidate = -1; int maxDelCount = 0; for(int i = maxNumSegments - 1; i >= 0; i--) { SegmentInfo info = infos.info(i); int delCount = info.getDelCount(); if(delCount > maxDelCount) { expungeCandidate = i; maxDelCount = delCount; } } if(maxDelCount > 0) { return new OneMerge(infos.asList().subList(expungeCandidate, expungeCandidate + 1)); } return null; }
/** * Finds merges necessary to expunge all deletes from the * index. The number of large segments will stay the same. */ @Override public MergeSpecification findForcedDeletesMerges(SegmentInfos infos) throws CorruptIndexException, IOException { final int numSegs = infos.size(); final int numLargeSegs = (numSegs < _numLargeSegments ? numSegs : _numLargeSegments); MergeSpecification spec = null; if (numLargeSegs < numSegs) { List<SegmentInfoPerCommit> smallSegmentList = infos.asList().subList(numLargeSegs, numSegs); SegmentInfos smallSegments = new SegmentInfos(); smallSegments.addAll(smallSegmentList); spec = super.findForcedDeletesMerges(smallSegments); } if (spec == null) spec = new MergeSpecification(); for (int i = 0; i < numLargeSegs; i++) { SegmentInfoPerCommit info = infos.info(i); if (info.hasDeletions()) { spec.add(new OneMerge(infos.asList().subList(i, i + 1))); } } return spec; }
/** * Finds merges necessary to expunge all deletes from the * index. The number of large segments will stay the same. */ @Override public MergeSpecification findForcedDeletesMerges(SegmentInfos infos) throws CorruptIndexException, IOException { final int numSegs = infos.size(); final int numLargeSegs = (numSegs < _numLargeSegments ? numSegs : _numLargeSegments); MergeSpecification spec = null; if (numLargeSegs < numSegs) { List<SegmentInfoPerCommit> smallSegmentList = infos.asList().subList(numLargeSegs, numSegs); SegmentInfos smallSegments = new SegmentInfos(); smallSegments.addAll(smallSegmentList); spec = super.findForcedDeletesMerges(smallSegments); } if (spec == null) spec = new MergeSpecification(); for (int i = 0; i < numLargeSegs; i++) { SegmentInfoPerCommit info = infos.info(i); if (info.hasDeletions()) { spec.add(new OneMerge(infos.asList().subList(i, i + 1))); } } return spec; }
@Override public MergeSpecification findForcedDeletesMerges(SegmentInfos infos) throws CorruptIndexException, IOException { final int numSegs = infos.size(); final int numLargeSegs = (numSegs < _numLargeSegments ? numSegs : _numLargeSegments); MergeSpecification spec = null; if(numLargeSegs < numSegs) { // hack to create a shallow sub-range as SegmentInfos instance, // it does not clone all metadata, but LogMerge does not need it final SegmentInfos smallSegments = new SegmentInfos(); smallSegments.rollbackSegmentInfos(infos.asList().subList(numLargeSegs, numSegs)); spec = super.findForcedDeletesMerges(smallSegments); } if(spec == null) spec = new MergeSpecification(); for(int i = 0; i < numLargeSegs; i++) { SegmentInfo info = infos.info(i); if(info.hasDeletions()) { spec.add(new OneMerge(Collections.singletonList(infos.info(i)))); } } return spec; }
final synchronized boolean applyAllDeletesAndUpdates() throws IOException { flushDeletesCount.incrementAndGet(); final BufferedUpdatesStream.ApplyDeletesResult result; if (infoStream.isEnabled("IW")) { infoStream.message("IW", "now apply all deletes for all segments maxDoc=" + (docWriter.getNumDocs() + segmentInfos.totalMaxDoc())); } result = bufferedUpdatesStream.applyDeletesAndUpdates(readerPool, segmentInfos.asList()); if (result.anyDeletes) { checkpoint(); } if (!keepFullyDeletedSegments && result.allDeleted != null) { if (infoStream.isEnabled("IW")) { infoStream.message("IW", "drop 100% deleted segments: " + segString(result.allDeleted)); } for (SegmentCommitInfo info : result.allDeleted) { // If a merge has already registered for this // segment, we leave it in the readerPool; the // merge will skip merging it and will then drop // it once it's done: if (!mergingSegments.contains(info)) { segmentInfos.remove(info); pendingNumDocs.addAndGet(-info.info.maxDoc()); readerPool.drop(info); } } checkpoint(); } bufferedUpdatesStream.prune(segmentInfos); return result.anyDeletes; }