You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/10/01 23:46:42 UTC

[lucene-solr] 01/26: @884 Wait longer in prep for recovery, don't close stream in indexfetcher, info logging for prod again, separate executor for async response handling in http2solrclient.

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 6713cf48545ed51bb03ee19169430d6e9fe6bf08
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Oct 1 07:28:52 2020 -0500

    @884 Wait longer in prep for recovery, don't close stream in indexfetcher, info logging for prod again, separate executor for async response handling in http2solrclient.
---
 .../core/src/java/org/apache/solr/cloud/RecoveryStrategy.java |  4 ++--
 solr/core/src/java/org/apache/solr/handler/IndexFetcher.java  |  3 ++-
 solr/server/resources/log4j2.xml                              |  6 +++---
 .../org/apache/solr/client/solrj/impl/Http2SolrClient.java    | 11 ++++++++++-
 4 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index 65b960e..a6ec9a1 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -993,10 +993,10 @@ public class RecoveryStrategy implements Runnable, Closeable {
     }
 
     int conflictWaitMs = zkController.getLeaderConflictResolveWait();
-    int readTimeout = conflictWaitMs + Integer.parseInt(System.getProperty("prepRecoveryReadTimeoutExtraWait", "8000"));
+    int readTimeout = conflictWaitMs + Integer.parseInt(System.getProperty("prepRecoveryReadTimeoutExtraWait", "30000"));
     // nocommit
     try (Http2SolrClient client = new Http2SolrClient.Builder(leaderBaseUrl).withHttpClient(core.getCoreContainer().getUpdateShardHandler().
-        getTheSharedHttpClient()).idleTimeout(readTimeout).connectionTimeout(1000).markInternalRequest().build()) {
+        getTheSharedHttpClient()).idleTimeout(readTimeout).connectionTimeout(3000).markInternalRequest().build()) {
       prepCmd.setBasePath(leaderBaseUrl);
       log.info("Sending prep recovery command to [{}]; [{}]", leaderBaseUrl, prepCmd);
       Cancellable result = client.asyncRequest(prepCmd, null, new NamedListAsyncListener());
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 249b9a9..799119f 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -1730,7 +1730,8 @@ public class IndexFetcher {
           } finally {
             if (is != null) {
               while (is.read() != -1) {}
-              IOUtils.closeQuietly(is);
+              // dont close
+              //IOUtils.closeQuietly(is);
             }
           }
         }
diff --git a/solr/server/resources/log4j2.xml b/solr/server/resources/log4j2.xml
index 22cbe7f..e91cba9 100644
--- a/solr/server/resources/log4j2.xml
+++ b/solr/server/resources/log4j2.xml
@@ -64,8 +64,8 @@
   <Loggers>
 
     <AsyncLogger name="org.eclipse.jetty.servlets" level="WARN"/>
-    <AsyncLogger name="org.eclipse.jetty" level="WARN"/>
-    <AsyncLogger name="org.eclipse.jetty.server.Server" level="WARN"/>
+    <AsyncLogger name="org.eclipse.jetty" level="DEBUG"/>
+    <AsyncLogger name="org.eclipse.jetty.server.Server" level="DEBUG"/>
     <AsyncLogger name="org.apache.hadoop" level="WARN"/>
     <AsyncLogger name="org.apache.solr.update.LoggingInfoStream" level="OFF"/>
     <AsyncLogger name="org.apache.zookeeper" level="WARN"/>
@@ -73,7 +73,7 @@
       <AppenderRef ref="SlowLogFile"/>
     </AsyncLogger>
 
-    <AsyncRoot level="WARN">
+    <AsyncRoot level="INFO">
       <AppenderRef ref="MainLogFile"/>
     </AsyncRoot>
   </Loggers>
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index dbb7596..2974ba8 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -39,6 +39,7 @@ import java.util.Set;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Phaser;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
@@ -61,6 +62,7 @@ import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.client.solrj.util.Constants;
 import org.apache.solr.common.ParWork;
+import org.apache.solr.common.PerThreadExecService;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.StringUtils;
 import org.apache.solr.common.params.CommonParams;
@@ -71,6 +73,7 @@ import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.util.Base64;
 import org.apache.solr.common.util.CloseTracker;
 import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.common.util.SolrInternalHttpClient;
@@ -152,6 +155,9 @@ public class Http2SolrClient extends SolrClient {
   private volatile String serverBaseUrl;
   private volatile boolean closeClient;
 
+  private ExecutorService asyncResponseExec = new PerThreadExecService(ParWork.getRootSharedExecutor(), Math.max(16, Runtime.getRuntime().availableProcessors() / 2),
+      true, true);
+
   protected Http2SolrClient(String serverBaseUrl, Builder builder) {
     assert (closeTracker = new CloseTracker()) != null;
     assert ObjectReleaseTracker.track(this);
@@ -271,6 +277,9 @@ public class Http2SolrClient extends SolrClient {
   public void close() {
     assert closeTracker.close();
     asyncTracker.close();
+
+    ExecutorUtil.shutdownAndAwaitTermination(asyncResponseExec);
+
     if (closeClient) {
       try {
         httpClient.stop();
@@ -428,7 +437,7 @@ public class Http2SolrClient extends SolrClient {
         public void onHeaders(Response response) {
           super.onHeaders(response);
           InputStreamResponseListener listener = this;
-          httpClient.getExecutor().execute(() -> {
+          asyncResponseExec.execute(() -> {
             if (log.isDebugEnabled()) log.debug("async response ready");
             InputStream is = listener.getInputStream();
             try {