@Override public void close() throws IOException { IOUtils.close(() -> rld.release(reader), () -> onClose.accept(rld)); } }
@SuppressWarnings("try") private synchronized void closeMergeReaders(MergePolicy.OneMerge merge, boolean suppressExceptions) throws IOException { final boolean drop = suppressExceptions == false; try (Closeable finalizer = merge::mergeFinished) { IOUtils.applyToAll(merge.readers, sr -> { final ReadersAndUpdates rld = getPooledInstance(sr.getOriginalSegmentInfo(), false); // We still hold a ref so it should not have been removed: assert rld != null; if (drop) { rld.dropChanges(); } else { rld.dropMergingUpdates(); } rld.release(sr); release(rld); if (drop) { readerPool.drop(rld.info); } }); } finally { Collections.fill(merge.readers, null); } }
} finally { synchronized(this) { rld.release(sr); release(rld);
public void finish(IndexWriter.ReaderPool pool) throws IOException { try { rld.release(reader); } finally { pool.release(rld); } } }
public void finish(IndexWriter.ReaderPool pool) throws IOException { try { rld.release(reader); } finally { pool.release(rld); } } }
@Override public void close() throws IOException { IOUtils.close(() -> rld.release(reader), () -> onClose.accept(rld)); } }
rld.dropMergingUpdates(); rld.release(sr); readerPool.release(rld); if (drop) {
rld.dropMergingUpdates(); rld.release(sr); readerPool.release(rld); if (drop) {
@SuppressWarnings("try") private synchronized void closeMergeReaders(MergePolicy.OneMerge merge, boolean suppressExceptions) throws IOException { final boolean drop = suppressExceptions == false; try (Closeable finalizer = merge::mergeFinished) { IOUtils.applyToAll(merge.readers, sr -> { final ReadersAndUpdates rld = getPooledInstance(sr.getOriginalSegmentInfo(), false); // We still hold a ref so it should not have been removed: assert rld != null; if (drop) { rld.dropChanges(); } else { rld.dropMergingUpdates(); } rld.release(sr); release(rld); if (drop) { readerPool.drop(rld.info); } }); } finally { Collections.fill(merge.readers, null); } }
} finally { synchronized(this) { rld.release(sr); release(rld);