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/07/22 17:37:23 UTC

[lucene-solr] branch reference_impl updated: @303 Wait for previous replication to close before starting another.

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

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


The following commit(s) were added to refs/heads/reference_impl by this push:
     new 449699a  @303 Wait for previous replication to close before starting another.
449699a is described below

commit 449699a39f3f3e5b4945b28b1d0764bfb518663d
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Jul 22 12:36:58 2020 -0500

    @303 Wait for previous replication to close before starting another.
---
 .../src/java/org/apache/solr/cloud/ZkController.java    | 17 +++++++++++++----
 .../org/apache/solr/servlet/SolrDispatchFilter.java     | 11 +++++++----
 solr/reference_branch/prod/Dockerfile                   |  5 +++--
 3 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index b1c1180..c067e39 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -1286,10 +1286,12 @@ public class ZkController implements Closeable {
     }
 
     try {
-      cc.close();
-    } catch (IOException e) {
-      log.error("IOException on shutdown", e);
+      ParWork.close(cc);
+    } catch (Exception e) {
+      log.error("Exception on shutdown", e);
       return;
+    } finally {
+      ParWork.close(zkClient);
     }
     URL url = null;
     try {
@@ -1652,10 +1654,17 @@ public class ZkController implements Closeable {
     log.info("{} starting background replication from leader", coreName);
     ReplicateFromLeader replicateFromLeader = new ReplicateFromLeader(cc, coreName);
     synchronized (replicateFromLeader) { // synchronize to prevent any stop before we finish the start
-      if (replicateFromLeaders.putIfAbsent(coreName, replicateFromLeader) == null) {
+      ReplicateFromLeader prev = replicateFromLeaders.putIfAbsent(coreName, replicateFromLeader);
+      if (prev == null) {
         replicateFromLeader.startReplication(switchTransactionLog);
       } else {
         log.warn("A replicate from leader instance already exists for core {}", coreName);
+        try {
+          prev.close();
+        } catch (Exception e) {
+          ParWork.propegateInterrupt("Error closing previous replication attempt", e);
+        }
+        replicateFromLeader.startReplication(switchTransactionLog);
       }
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
index d09e6dc..3c8b5b2 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
@@ -360,10 +360,13 @@ public class SolrDispatchFilter extends BaseSolrFilter {
     } finally {
       if (cc != null) {
         httpClient = null;
-        try {
-          ParWork.close(cc);
-        } finally {
-          ParWork.close(zkClient);
+        // we may have already shutdown via shutdown hook
+        if (!cc.isShutDown()) {
+          try {
+            ParWork.close(cc);
+          } finally {
+            ParWork.close(zkClient);
+          }
         }
       }
       GlobalTracer.get().close();
diff --git a/solr/reference_branch/prod/Dockerfile b/solr/reference_branch/prod/Dockerfile
index 0f59c75..ed7fa18 100644
--- a/solr/reference_branch/prod/Dockerfile
+++ b/solr/reference_branch/prod/Dockerfile
@@ -10,12 +10,13 @@ ADD start-solr.sh /start-solr.sh
 
 RUN chmod +x /start-solr.sh
 
-RUN apt-get -y update; apt-get -y upgrade; apt-get -y install openjdk-11-jdk-headless; apt-get -y install ant; apt-get -y install git
+RUN apt-get -y update; apt-get -y upgrade; apt-get -y install openjdk-11-jdk-headless; apt-get -y install openjdk-11-jdk-slim; apt-get -y install ant; apt-get -y install git
 
 RUN cd "${BUILD_DIR}"; git clone https://github.com/apache/lucene-solr.git --branch reference_impl --single-branch reference_impl; \
 cd "${BUILD_DIR}/reference_impl"; ant ivy-bootstrap;cd solr; ant package -Dversion=9.0.0-miller_ref_impl; \
 cp -r build/*miller_ref_impl/* /opt/solr; chmod +x /opt/solr/bin/solr; \
-rm -r "${BUILD_DIR}"; rm -r /root/.ivy2
+rm -r "${BUILD_DIR}"; rm -r /root/.ivy2; apt-get -y remove ant; apt-get -y remove openjdk-11-jdk-headless; \
+apt-get -y remove git; apt -y autoclean; apt-get -y clean; apt -y autoremove
 
 WORKDIR ${INSTALL_DIR}