You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ma...@apache.org on 2021/10/25 14:01:42 UTC
[solr] branch main updated: SOLR-15648
ManagedSchema#GetZkSchemaVersionCallable can get into a loop that wants to
go on for 10 minutes before it cuts off. (#352)
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 6452154 SOLR-15648 ManagedSchema#GetZkSchemaVersionCallable can get into a loop that wants to go on for 10 minutes before it cuts off. (#352)
6452154 is described below
commit 6452154f2493516bb3cdc91a8d30f17e467d4e95
Author: Mark Robert Miller <ma...@gmail.com>
AuthorDate: Mon Oct 25 09:01:38 2021 -0500
SOLR-15648 ManagedSchema#GetZkSchemaVersionCallable can get into a loop that wants to go on for 10 minutes before it cuts off. (#352)
---
.../src/java/org/apache/solr/schema/ManagedIndexSchema.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index 5ff5e33..c7a7b50 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -229,7 +229,7 @@ public final class ManagedIndexSchema extends IndexSchema {
// get a list of active replica cores to query for the schema zk version (skipping this core of course)
List<GetZkSchemaVersionCallable> concurrentTasks = new ArrayList<>();
for (String coreUrl : getActiveReplicaCoreUrls(zkController, collection, localCoreNodeName))
- concurrentTasks.add(new GetZkSchemaVersionCallable(coreUrl, schemaZkVersion));
+ concurrentTasks.add(new GetZkSchemaVersionCallable(coreUrl, schemaZkVersion, zkController));
if (concurrentTasks.isEmpty())
return; // nothing to wait for ...
@@ -318,12 +318,14 @@ public final class ManagedIndexSchema extends IndexSchema {
private static class GetZkSchemaVersionCallable extends SolrRequest<SolrResponse> implements Callable<Integer> {
+ private final ZkController zkController;
private String coreUrl;
private int expectedZkVersion;
- GetZkSchemaVersionCallable(String coreUrl, int expectedZkVersion) {
+ GetZkSchemaVersionCallable(String coreUrl, int expectedZkVersion,
+ ZkController zkController) {
super(METHOD.GET, "/schema/zkversion");
-
+ this.zkController = zkController;
this.coreUrl = coreUrl;
this.expectedZkVersion = expectedZkVersion;
}
@@ -340,7 +342,7 @@ public final class ManagedIndexSchema extends IndexSchema {
int remoteVersion = -1;
try (HttpSolrClient solr = new HttpSolrClient.Builder(coreUrl).build()) {
// eventually, this loop will get killed by the ExecutorService's timeout
- while (remoteVersion == -1 || remoteVersion < expectedZkVersion) {
+ while (remoteVersion == -1 || remoteVersion < expectedZkVersion && !zkController.getCoreContainer().isShutDown()) {
try {
HttpSolrClient.HttpUriRequestResponse mrr = solr.httpUriRequest(this);
NamedList<Object> zkversionResp = mrr.future.get();
@@ -357,6 +359,7 @@ public final class ManagedIndexSchema extends IndexSchema {
} catch (Exception e) {
if (e instanceof InterruptedException) {
+ Thread.currentThread().interrupt();
break; // stop looping
} else {
log.warn("Failed to get /schema/zkversion from {} due to: ", coreUrl, e);