Java Code Examples for org.apache.lucene.index.IndexReader#getRefCount()
The following examples show how to use
org.apache.lucene.index.IndexReader#getRefCount() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CloseReaderTask.java From lucene-solr with Apache License 2.0 | 5 votes |
@Override public int doLogic() throws IOException { IndexReader reader = getRunData().getIndexReader(); getRunData().setIndexReader(null); if (reader.getRefCount() != 1) { System.out.println("WARNING: CloseReader: reference count is currently " + reader.getRefCount()); } reader.decRef(); return 1; }
Example 2
Source File: BlurIndexCloser.java From incubator-retired-blur with Apache License 2.0 | 5 votes |
private void tryToCloseReaders() { LOG.debug("Trying to close [{0}] readers", readers.size()); Iterator<IndexReader> it = readers.iterator(); while (it.hasNext()) { IndexReader reader = it.next(); if (reader.getRefCount() == 1) { it.remove(); closeInternal(reader); } else { LOG.debug("Could not close indexreader [" + reader + "] because of ref count [" + reader.getRefCount() + "]."); } } }
Example 3
Source File: TestIndexSearcher.java From lucene-solr with Apache License 2.0 | 4 votes |
public void testReopen() throws Exception { assertU(adoc("id","1", "v_t","Hello Dude", "v_s1","string1")); assertU(adoc("id","2", "v_t","Hello Yonik", "v_s1","string2")); assertU(commit()); SolrQueryRequest sr1 = req("q","foo"); IndexReader r1 = sr1.getSearcher().getRawReader(); String sval1 = getStringVal(sr1, "v_s1",0); assertEquals("string1", sval1); assertU(adoc("id","3", "v_s1","{!literal}")); assertU(adoc("id","4", "v_s1","other stuff")); assertU(commit()); SolrQueryRequest sr2 = req("q","foo"); IndexReader r2 = sr2.getSearcher().getRawReader(); // make sure the readers share the first segment // Didn't work w/ older versions of lucene2.9 going from segment -> multi assertEquals(r1.leaves().get(0).reader(), r2.leaves().get(0).reader()); assertU(adoc("id","5", "v_f","3.14159")); assertU(adoc("id","6", "v_f","8983", "v_s1","string6")); assertU(commit()); SolrQueryRequest sr3 = req("q","foo"); IndexReader r3 = sr3.getSearcher().getRawReader(); // make sure the readers share segments // assertEquals(r1.getLeafReaders()[0], r3.getLeafReaders()[0]); assertEquals(r2.leaves().get(0).reader(), r3.leaves().get(0).reader()); assertEquals(r2.leaves().get(1).reader(), r3.leaves().get(1).reader()); sr1.close(); sr2.close(); // should currently be 1, but this could change depending on future index management int baseRefCount = r3.getRefCount(); assertEquals(1, baseRefCount); Map<String, Metric> metrics = h.getCore().getCoreMetricManager().getRegistry().getMetrics(); @SuppressWarnings({"unchecked"}) Gauge<Date> g = (Gauge<Date>)metrics.get("SEARCHER.searcher.registeredAt"); Date sr3SearcherRegAt = g.getValue(); assertU(commit()); // nothing has changed SolrQueryRequest sr4 = req("q","foo"); assertSame("nothing changed, searcher should be the same", sr3.getSearcher(), sr4.getSearcher()); assertEquals("nothing changed, searcher should not have been re-registered", sr3SearcherRegAt, g.getValue()); IndexReader r4 = sr4.getSearcher().getRawReader(); // force an index change so the registered searcher won't be the one we are testing (and // then we should be able to test the refCount going all the way to 0 assertU(adoc("id","7", "v_f","7574")); assertU(commit()); // test that reader didn't change assertSame(r3, r4); assertEquals(baseRefCount, r4.getRefCount()); sr3.close(); assertEquals(baseRefCount, r4.getRefCount()); sr4.close(); assertEquals(baseRefCount-1, r4.getRefCount()); SolrQueryRequest sr5 = req("q","foo"); IndexReaderContext rCtx5 = sr5.getSearcher().getTopReaderContext(); assertU(delI("1")); assertU(commit()); SolrQueryRequest sr6 = req("q","foo"); IndexReaderContext rCtx6 = sr6.getSearcher().getTopReaderContext(); assertEquals(1, rCtx6.leaves().get(0).reader().numDocs()); // only a single doc left in the first segment assertTrue( !rCtx5.leaves().get(0).reader().equals(rCtx6.leaves().get(0).reader()) ); // readers now different sr5.close(); sr6.close(); }