You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/04/22 17:01:55 UTC
svn commit: r1328890 - in /lucene/dev/trunk/solr/core/src:
java/org/apache/solr/update/DirectUpdateHandler2.java
test/org/apache/solr/search/TestIndexSearcher.java
Author: yonik
Date: Sun Apr 22 15:01:55 2012
New Revision: 1328890
URL: http://svn.apache.org/viewvc?rev=1328890&view=rev
Log:
SOLR-3392: fix search leak when openSearcher=false
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1328890&r1=1328889&r2=1328890&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Sun Apr 22 15:01:55 2012
@@ -440,7 +440,8 @@ public class DirectUpdateHandler2 extend
core.getSearcher(true, false, waitSearcher);
} else {
// force open a new realtime searcher so realtime-get and versioning code can see the latest
- core.openNewSearcher(true,true);
+ RefCounted<SolrIndexSearcher> searchHolder = core.openNewSearcher(true, true);
+ searchHolder.decref();
}
if (ulog != null) ulog.postSoftCommit(cmd);
}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java?rev=1328890&r1=1328889&r2=1328890&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestIndexSearcher.java Sun Apr 22 15:01:55 2012
@@ -129,4 +129,33 @@ public class TestIndexSearcher extends S
sr5.close();
sr6.close();
}
+
+
+ // make sure we don't leak searchers (SOLR-3391)
+ public void testCloses() {
+ assertU(adoc("id","1"));
+ assertU(commit("openSearcher","false")); // this was enough to trigger SOLR-3391
+
+ int maxDoc = random().nextInt(20) + 1;
+
+ // test different combinations of commits
+ for (int i=0; i<100; i++) {
+
+ if (random().nextInt(100) < 50) {
+ String id = Integer.toString(random().nextInt(maxDoc));
+ assertU(adoc("id",id));
+ } else {
+ boolean soft = random().nextBoolean();
+ boolean optimize = random().nextBoolean();
+ boolean openSearcher = random().nextBoolean();
+
+ if (optimize) {
+ assertU(optimize("openSearcher",""+openSearcher, "softCommit",""+soft));
+ } else {
+ assertU(commit("openSearcher",""+openSearcher, "softCommit",""+soft));
+ }
+ }
+ }
+
+ }
}