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}