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/30 06:09:02 UTC
[lucene-solr] 01/02: @1081 Harden.
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 503d050d54247d183f8f012af8c5e3d9735037b6
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Oct 30 00:49:06 2020 -0500
@1081 Harden.
---
.../src/java/org/apache/solr/core/CoreContainer.java | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 883569d..b77b20c 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -42,6 +42,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import com.google.common.collect.ImmutableMap;
@@ -78,6 +79,7 @@ import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Replica.State;
+import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -1752,7 +1754,6 @@ public class CoreContainer implements Closeable {
if (name != null) {
if (isZooKeeperAware() && cd != null && cd.getCloudDescriptor() != null) {
CloudDescriptor cloudDesc = cd.getCloudDescriptor();
- cloudDesc.getCoreNodeName();
try {
deleteCoreNode(cloudDesc.getCollectionName(), cloudDesc.getCoreNodeName(), getZkController().getNodeName(), getZkController().getBaseUrl(), name);
} catch (Exception e) {
@@ -1851,6 +1852,23 @@ public class CoreContainer implements Closeable {
SolrException.log(log, "Failed to delete instance dir for core:" + cd.getName() + " dir:" + cd.getInstanceDir());
}
}
+ if (isZooKeeperAware() && cd != null && cd.getCloudDescriptor() != null) {
+ CloudDescriptor cloudDesc = cd.getCloudDescriptor();
+ cloudDesc.getCoreNodeName();
+ try {
+ getZkController().getZkStateReader().waitForState(cloudDesc.getCollectionName(), 5000, TimeUnit.MILLISECONDS, (c) -> {
+ if (c == null)
+ return true;
+ Slice slice = c.getSlice(cloudDesc.getShardId());
+ if(slice == null || slice.getReplica(cloudDesc.getCoreNodeName()) == null) {
+ return true;
+ }
+ return false;
+ });
+ } catch (TimeoutException | InterruptedException e) {
+ ParWork.propagateInterrupt(e);
+ }
+ }
}
}