You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2016/06/28 22:27:24 UTC
lucene-solr:branch_6x: SOLR-8657: Fix SolrRequestInfo error logs if
QuerySenderListener is being used
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x 723fc1dc8 -> eaabb9dc7
SOLR-8657: Fix SolrRequestInfo error logs if QuerySenderListener is being used
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/eaabb9dc
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/eaabb9dc
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/eaabb9dc
Branch: refs/heads/branch_6x
Commit: eaabb9dc77621cd9386a3b522f23280f52cbb5ce
Parents: 723fc1d
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Tue Jun 28 13:11:40 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Tue Jun 28 15:11:41 2016 -0700
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../org/apache/solr/core/QuerySenderListener.java | 10 +++++++---
.../org/apache/solr/request/SolrRequestInfo.java | 6 +++---
.../apache/solr/core/TestQuerySenderListener.java | 18 +++++++++++++-----
4 files changed, 25 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaabb9dc/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d750a27..817d85e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -57,6 +57,8 @@ Bug Fixes
* SOLR-9254: GraphTermsQueryQParserPlugin throws NPE when field being searched is not present in segment
(Joel Bernstein)
+* SOLR-8657: Fix SolrRequestInfo error logs if QuerySenderListener is being used (Pascal Chollet,
+ Tom�s Fern�ndez L�bbe)
Optimizations
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaabb9dc/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java b/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
index f3c1b4e..a5cda61 100644
--- a/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
+++ b/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
@@ -48,9 +48,9 @@ public class QuerySenderListener extends AbstractSolrEventListener {
log.info("QuerySenderListener sending requests to " + newSearcher);
List<NamedList> allLists = (List<NamedList>)getArgs().get("queries");
if (allLists == null) return;
+ boolean createNewReqInfo = SolrRequestInfo.getRequestInfo() == null;
for (NamedList nlst : allLists) {
SolrQueryRequest req = null;
-
try {
// bind the request to a particular searcher (the newSearcher)
NamedList params = addEventParms(currentSearcher, nlst);
@@ -64,7 +64,11 @@ public class QuerySenderListener extends AbstractSolrEventListener {
};
SolrQueryResponse rsp = new SolrQueryResponse();
- SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp));
+ if (createNewReqInfo) {
+ // SolrRequerstInfo for this thread could have been transferred from the parent
+ // thread.
+ SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp));
+ }
getCore().execute(getCore().getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
// Retrieve the Document instances (not just the ids) to warm
@@ -89,7 +93,7 @@ public class QuerySenderListener extends AbstractSolrEventListener {
// the failure should have already been logged.
} finally {
if (req != null) req.close();
- SolrRequestInfo.clearRequestInfo();
+ if (createNewReqInfo) SolrRequestInfo.clearRequestInfo();
}
}
log.info("QuerySenderListener done.");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaabb9dc/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java b/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
index ac45e31..f759c91 100644
--- a/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
+++ b/solr/core/src/java/org/apache/solr/request/SolrRequestInfo.java
@@ -147,7 +147,7 @@ public class SolrRequestInfo {
return new ExecutorUtil.InheritableThreadLocalProvider() {
@Override
public void store(AtomicReference ctx) {
- SolrRequestInfo me = threadLocal.get();
+ SolrRequestInfo me = SolrRequestInfo.getRequestInfo();
if (me != null) ctx.set(me);
}
@@ -156,13 +156,13 @@ public class SolrRequestInfo {
SolrRequestInfo me = (SolrRequestInfo) ctx.get();
if (me != null) {
ctx.set(null);
- threadLocal.set(me);
+ SolrRequestInfo.setRequestInfo(me);
}
}
@Override
public void clean(AtomicReference ctx) {
- threadLocal.remove();
+ SolrRequestInfo.clearRequestInfo();
}
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaabb9dc/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
index 8f89569..c1eb873 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
@@ -18,6 +18,8 @@ package org.apache.solr.core;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.params.EventParams;
+import org.apache.solr.common.util.ExecutorUtil;
+import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.RefCounted;
import org.junit.BeforeClass;
@@ -38,11 +40,16 @@ public class TestQuerySenderListener extends SolrTestCaseJ4 {
// in the same VM
preInitMockListenerCount = MockEventListener.getCreateCount();
+ if (usually()) {
+ // This is set by the SolrDispatchFilter, used in Http calls but not Embedded
+ ExecutorUtil.addThreadLocalProvider(SolrRequestInfo.getInheritableThreadLocalProvider());
+ }
initCore("solrconfig-querysender.xml","schema.xml");
+
}
public void testListenerCreationCounts() {
- SolrCore core = h.getCore();
+ h.getCore();
assertEquals("Unexpected number of listeners created",
EXPECTED_MOCK_LISTENER_INSTANCES,
@@ -73,14 +80,15 @@ public class TestQuerySenderListener extends SolrTestCaseJ4 {
String evt = mock.req.getParams().get(EventParams.EVENT);
assertNotNull("Event is null", evt);
assertTrue(evt + " is not equal to " + EventParams.FIRST_SEARCHER, evt.equals(EventParams.FIRST_SEARCHER) == true);
+
+ assertU(adoc("id", "1"));
+ assertU(commit());
- SolrIndexSearcher newSearcher = new SolrIndexSearcher(core, core.getNewIndexDir(), core.getLatestSchema(), core.getSolrConfig().indexConfig, "testQuerySenderListener", false, core.getDirectoryFactory());
-
- qsl.newSearcher(newSearcher, currentSearcher);
+ RefCounted<SolrIndexSearcher> newSearcherRef = core.getSearcher();
evt = mock.req.getParams().get(EventParams.EVENT);
assertNotNull("Event is null", evt);
assertTrue(evt + " is not equal to " + EventParams.NEW_SEARCHER, evt.equals(EventParams.NEW_SEARCHER) == true);
- newSearcher.close();
+ newSearcherRef.decref();
currentSearcherRef.decref();
}