@Override public long getVersion() { ensureOpen(); return segmentInfos.getVersion(); }
@Override public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(getClass().getSimpleName()); buffer.append('('); final String segmentsFile = segmentInfos.getSegmentsFileName(); if (segmentsFile != null) { buffer.append(segmentsFile).append(":").append(segmentInfos.getVersion()); } if (writer != null) { buffer.append(":nrt"); } for (final LeafReader r : getSequentialSubReaders()) { buffer.append(' '); buffer.append(r); } buffer.append(')'); return buffer.toString(); }
synchronized boolean nrtIsCurrent(SegmentInfos infos) { ensureOpen(); boolean isCurrent = infos.getVersion() == segmentInfos.getVersion() && docWriter.anyChanges() == false && bufferedUpdatesStream.any() == false && readerPool.anyDocValuesChanges() == false; if (infoStream.isEnabled("IW")) { if (isCurrent == false) { infoStream.message("IW", "nrtIsCurrent: infoVersion matches: " + (infos.getVersion() == segmentInfos.getVersion()) + "; DW changes: " + docWriter.anyChanges() + "; BD changes: "+ bufferedUpdatesStream.any()); } } return isCurrent; }
@Override public boolean isCurrent() throws IOException { ensureOpen(); if (writer == null || writer.isClosed()) { // Fully read the segments file: this ensures that it's // completely written so that if // IndexWriter.prepareCommit has been called (but not // yet commit), then the reader will still see itself as // current: SegmentInfos sis = SegmentInfos.readLatestCommit(directory); // we loaded SegmentInfos from the directory return sis.getVersion() == segmentInfos.getVersion(); } else { return writer.nrtIsCurrent(segmentInfos); } }
/** If {@link SegmentInfos#getVersion} is below {@code newVersion} then update it to this value. * * @lucene.internal */ public synchronized void advanceSegmentInfosVersion(long newVersion) { ensureOpen(); if (segmentInfos.getVersion() < newVersion) { segmentInfos.setVersion(newVersion); } changed(); }
/** Record that the files referenced by this {@link SegmentInfos} are no longer in use. Only call this if you are sure you previously * called {@link #incRefDeleter}. * * @lucene.internal */ public synchronized void decRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.decRef(segmentInfos); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "decRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
/** Record that the files referenced by this {@link SegmentInfos} are still in use. * * @lucene.internal */ public synchronized void incRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.incRef(segmentInfos, false); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "incRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
private DirectoryReader doOpenFromWriter(IndexCommit commit) throws IOException { if (commit != null) { return doOpenFromCommit(commit); } if (writer.nrtIsCurrent(segmentInfos)) { return null; } DirectoryReader reader = writer.getReader(applyAllDeletes, writeAllDeletes); // If in fact no changes took place, return null: if (reader.getVersion() == segmentInfos.getVersion()) { reader.decRef(); return null; } return reader; }
throw new IndexShardRestoreFailedException(shardId, "Failed to fetch index version after copying it over", e); recoveryState.getIndex().updateVersion(segmentCommitInfos.getVersion());
@Override public long getVersion() { ensureOpen(); return segmentInfos.getVersion(); }
@Override public long getVersion() { ensureOpen(); return segmentInfos.getVersion(); }
/** * Version number when this IndexReader was opened. */ public long getVersion() { ensureOpen(); return segmentInfos.getVersion(); }
/** * Version number when this IndexReader was opened. */ public long getVersion() { ensureOpen(); return segmentInfos.getVersion(); }
version = si.getVersion(); } else {
/** If {@link SegmentInfos#getVersion} is below {@code newVersion} then update it to this value. * * @lucene.internal */ public synchronized void advanceSegmentInfosVersion(long newVersion) { ensureOpen(); if (segmentInfos.getVersion() < newVersion) { segmentInfos.setVersion(newVersion); } changed(); }
/** Record that the files referenced by this {@link SegmentInfos} are still in use. * * @lucene.internal */ public synchronized void incRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.incRef(segmentInfos, false); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "incRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
synchronized void decRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.decRef(segmentInfos); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "decRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
synchronized void incRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.incRef(segmentInfos, false); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "incRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
/** Record that the files referenced by this {@link SegmentInfos} are no longer in use. Only call this if you are sure you previously * called {@link #incRefDeleter}. * * @lucene.internal */ public synchronized void decRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.decRef(segmentInfos); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "decRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }
synchronized void decRefDeleter(SegmentInfos segmentInfos) throws IOException { ensureOpen(); deleter.decRef(segmentInfos); if (infoStream.isEnabled("IW")) { infoStream.message("IW", "decRefDeleter for NRT reader version=" + segmentInfos.getVersion() + " segments=" + segString(segmentInfos)); } }