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