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/13 14:35:22 UTC

[lucene-solr] branch reference_impl_dev updated: @982 Expanded dist update retry.

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


The following commit(s) were added to refs/heads/reference_impl_dev by this push:
     new ba72722  @982 Expanded dist update retry.
ba72722 is described below

commit ba72722e145aaa7abd47a5557367a28c8ccd4b15
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Oct 13 09:29:01 2020 -0500

    @982 Expanded dist update retry.
---
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java    |  2 --
 .../client/solrj/embedded/JettySolrRunner.java     |  5 +++
 .../org/apache/solr/update/SolrCmdDistributor.java | 37 ++++++----------------
 .../apache/solr/cloud/CollectionsAPISolrJTest.java |  1 -
 .../update/TestInPlaceUpdateWithRouteField.java    |  1 -
 5 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
index b590f7f..5c950c0 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
@@ -230,8 +230,6 @@ public class TestLTROnSolrCloud extends TestRerankBase {
     if (response.getStatus() != 0 || response.getErrorMessages() != null) {
       fail("Could not create collection. Response" + response.toString());
     }
-    ZkStateReader zkStateReader = solrCluster.getSolrClient().getZkStateReader();
-    solrCluster.waitForActiveCollection(name, numShards, numShards * numReplicas);
   }
 
 
diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
index e0f1efa..164ac28 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
@@ -327,6 +327,11 @@ public class JettySolrRunner implements Closeable {
     HttpConfiguration configuration = new HttpConfiguration();
     configuration.setRequestHeaderSize(16 * 1024);
     configuration.setResponseHeaderSize(16 * 1024);
+
+    // https://github.com/jersey/jersey/issues/3691
+    // https://github.com/eclipse/jetty.project/issues/1891
+    configuration.setNotifyRemoteAsyncErrors(false);
+
     ServerConnector connector;
     if (sslcontext != null) {
       configuration.setSecureScheme("https");
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index 2025633..5cd01e0 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@ -21,13 +21,10 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.net.ConnectException;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Phaser;
-import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.solr.client.solrj.SolrServerException;
@@ -59,7 +56,7 @@ public class SolrCmdDistributor implements Closeable {
 
   private volatile boolean finished = false; // see finish()
 
-  private int maxRetriesOnForward = MAX_RETRIES_ON_FORWARD;
+  private int maxRetries = MAX_RETRIES_ON_FORWARD;
 
   private final Set<Error> allErrors = ConcurrentHashMap.newKeySet();
   
@@ -102,25 +99,25 @@ public class SolrCmdDistributor implements Closeable {
         doRetry = true;
       }
 
-      // if it's a connect exception, lets try again
+      // if it's a io exception exception, lets try again
       if (err.t instanceof SolrServerException) {
-        if (((SolrServerException) err.t).getRootCause() instanceof ConnectException) {
+        if (((SolrServerException) err.t).getRootCause() instanceof IOException) {
           doRetry = true;
         }
       }
 
-      if (err.t instanceof ConnectException) {
+      if (err.t instanceof IOException) {
         doRetry = true;
       }
 
-      if (err.req.retries < maxRetriesOnForward && doRetry) {
+      if (err.req.retries < maxRetries && doRetry) {
         err.req.retries++;
 
-        SolrException.log(SolrCmdDistributor.log, "forwarding update to "
+        SolrException.log(SolrCmdDistributor.log, "sending update to "
                 + oldNodeUrl + " failed - retrying ... retries: "
                 + err.req.retries + " " + err.req.cmd.toString() + " params:"
                 + err.req.uReq.getParams() + " rsp:" + rspCode, err.t);
-        log.info("check retry true");
+        if (log.isDebugEnabled()) log.debug("check retry true");
         return true;
       } else {
         log.info("max retries exhausted or not a retryable error {} {}", err.req.retries, rspCode);
@@ -251,18 +248,11 @@ public class SolrCmdDistributor implements Closeable {
           }
 
           boolean retry = false;
-          if (t instanceof RejectedExecutionException || checkRetry(error)) {
+          if (checkRetry(error)) {
             retry = true;
           }
 
           if (retry) {
-            if (t instanceof RejectedExecutionException) {
-              try {
-                Thread.sleep(1000);
-              } catch (InterruptedException e) {
-                ParWork.propagateInterrupt(e);
-              }
-            }
             log.info("Retrying distrib update on error: {}", t.getMessage());
             submit(req);
             return;
@@ -279,14 +269,7 @@ public class SolrCmdDistributor implements Closeable {
       if (e instanceof SolrException) {
         error.statusCode = ((SolrException) e).code();
       }
-      if (e instanceof RejectedExecutionException || checkRetry(error)) {
-        if (e instanceof RejectedExecutionException) {
-          try {
-            Thread.sleep(1000);
-          } catch (InterruptedException e1) {
-            ParWork.propagateInterrupt(e1);
-          }
-        }
+      if (checkRetry(error)) {
         log.info("Retrying distrib update on error: {}", e.getMessage());
         submit(req);
       } else {
@@ -445,7 +428,7 @@ public class SolrCmdDistributor implements Closeable {
 
     @Override
     public boolean checkRetry() {
-      return false;
+      return true;
     }
 
     @Override
diff --git a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
index c3c36f0..7a205ff 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
@@ -168,7 +168,6 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
           .process(cluster.getSolrClient());
       assertEquals(0, response.getStatus());
       assertTrue(response.isSuccess());
-      cluster.waitForActiveCollection(COLL_NAME, 2, 4);
 
       DocCollection coll = cluster.getSolrClient().getClusterStateProvider().getClusterState().getCollection(COLL_NAME);
       Map<String, Slice> slices = coll.getSlicesMap();
diff --git a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdateWithRouteField.java b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdateWithRouteField.java
index 92e8eb7..21a48de 100644
--- a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdateWithRouteField.java
+++ b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdateWithRouteField.java
@@ -83,7 +83,6 @@ public class TestInPlaceUpdateWithRouteField extends SolrCloudTestCase {
       createCmd.setShards(Arrays.stream(shards).collect(Collectors.joining(",")));
     }
     createCmd.process(cluster.getSolrClient());
-    cluster.waitForActiveCollection(COLLECTION, shards.length, shards.length * replicas);
   }
 
   @Test