/** * Obtain a ReadersAndLiveDocs instance from the * readerPool. If create is true, you must later call * {@link #release(ReadersAndUpdates, boolean)}. */ synchronized ReadersAndUpdates get(SegmentCommitInfo info, boolean create) { assert info.info.dir == originalDirectory: "info.dir=" + info.info.dir + " vs " + originalDirectory; if (closed.get()) { assert readerMap.isEmpty() : "Reader map is not empty: " + readerMap; throw new AlreadyClosedException("ReaderPool is already closed"); } ReadersAndUpdates rld = readerMap.get(info); if (rld == null) { if (create == false) { return null; } rld = new ReadersAndUpdates(segmentInfos.getIndexCreatedVersionMajor(), info, newPendingDeletes(info)); // Steal initial reference: readerMap.put(info, rld); } else { assert rld.info == info: "rld.info=" + rld.info + " info=" + info + " isLive?=" + assertInfoIsLive(rld.info) + " vs " + assertInfoIsLive(info); } if (create) { // Return ref to caller: rld.incRef(); } assert noDups(); return rld; }
/** * Obtain a ReadersAndLiveDocs instance from the * readerPool. If create is true, you must later call * {@link #release(ReadersAndUpdates)}. */ public synchronized ReadersAndUpdates get(SegmentCommitInfo info, boolean create) { // Make sure no new readers can be opened if another thread just closed us: ensureOpen(false); assert info.info.dir == directoryOrig: "info.dir=" + info.info.dir + " vs " + directoryOrig; ReadersAndUpdates rld = readerMap.get(info); if (rld == null) { if (!create) { return null; } rld = new ReadersAndUpdates(IndexWriter.this, info); // Steal initial reference: readerMap.put(info, rld); } else { assert rld.info == info: "rld.info=" + rld.info + " info=" + info + " isLive?=" + infoIsLive(rld.info) + " vs " + infoIsLive(info); } if (create) { // Return ref to caller: rld.incRef(); } assert noDups(); return rld; }
/** * Obtain a ReadersAndLiveDocs instance from the * readerPool. If create is true, you must later call * {@link #release(ReadersAndUpdates, boolean)}. */ synchronized ReadersAndUpdates get(SegmentCommitInfo info, boolean create) { assert info.info.dir == originalDirectory: "info.dir=" + info.info.dir + " vs " + originalDirectory; if (closed.get()) { assert readerMap.isEmpty() : "Reader map is not empty: " + readerMap; throw new AlreadyClosedException("ReaderPool is already closed"); } ReadersAndUpdates rld = readerMap.get(info); if (rld == null) { if (create == false) { return null; } rld = new ReadersAndUpdates(segmentInfos.getIndexCreatedVersionMajor(), info, newPendingDeletes(info)); // Steal initial reference: readerMap.put(info, rld); } else { assert rld.info == info: "rld.info=" + rld.info + " info=" + info + " isLive?=" + assertInfoIsLive(rld.info) + " vs " + assertInfoIsLive(info); } if (create) { // Return ref to caller: rld.incRef(); } assert noDups(); return rld; }
/** * Obtain a ReadersAndLiveDocs instance from the * readerPool. If create is true, you must later call * {@link #release(ReadersAndUpdates)}. */ public synchronized ReadersAndUpdates get(SegmentCommitInfo info, boolean create) { // Make sure no new readers can be opened if another thread just closed us: ensureOpen(false); assert info.info.dir == directoryOrig: "info.dir=" + info.info.dir + " vs " + directoryOrig; ReadersAndUpdates rld = readerMap.get(info); if (rld == null) { if (!create) { return null; } rld = new ReadersAndUpdates(IndexWriter.this, info); // Steal initial reference: readerMap.put(info, rld); } else { assert rld.info == info: "rld.info=" + rld.info + " info=" + info + " isLive?=" + infoIsLive(rld.info) + " vs " + infoIsLive(info); } if (create) { // Return ref to caller: rld.incRef(); } assert noDups(); return rld; }