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/09/01 15:33:45 UTC
[lucene-solr] branch reference_impl_dev updated: @669 Overseer
issues a recent unignored tests is bringing to light.
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 c53e978 @669 Overseer issues a recent unignored tests is bringing to light.
c53e978 is described below
commit c53e97887b780f4958999988d18068a5c4ead7ab
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Sep 1 10:33:15 2020 -0500
@669 Overseer issues a recent unignored tests is bringing to light.
---
.../src/java/org/apache/solr/cloud/Overseer.java | 26 +++++++++++++++-------
.../apache/solr/cloud/OverseerElectionContext.java | 16 +++++++++----
2 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index 22c176a..41de82b 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -159,7 +159,7 @@ public class Overseer implements SolrCloseable {
public static final String OVERSEER_ELECT = "/overseer/overseer_elect";
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private volatile ElectionContext context;
+ private volatile OverseerElectionContext context;
private volatile boolean closeAndDone;
public boolean isDone() {
@@ -374,8 +374,8 @@ public class Overseer implements SolrCloseable {
} finally {
log.info("Overseer Loop exiting : {}", LeaderElector.getNodeName(myId));
- if (!isClosed() && !zkController.getCoreContainer().isShutDown()) {
- Overseer.this.close();
+ if (!isClosed && !closeAndDone) { // if we have not been closed, close so that we stop the other threads
+ Overseer.this.close(true);
}
}
@@ -627,7 +627,7 @@ public class Overseer implements SolrCloseable {
zkController.getNodeName());
this.id = id;
- this.context = context;
+ this.context = (OverseerElectionContext) context;
// try {
// if (context != null) context.close();
@@ -844,13 +844,19 @@ public class Overseer implements SolrCloseable {
this.closed = true;
close();
}
-
+
public void close() {
+ close(false);
+ }
+
+ public void close(boolean fromCSUpdateThread) {
if (this.id != null) {
log.info("Overseer (id={}) closing", id);
}
- IOUtils.closeQuietly(context);
- doClose();
+ if (context != null) {
+ context.close(fromCSUpdateThread);
+ }
+ //doClose(fromCSUpdateThread);
}
@Override
@@ -859,6 +865,10 @@ public class Overseer implements SolrCloseable {
}
void doClose() {
+ doClose(false);
+ }
+
+ void doClose(boolean fromCSUpdateThread) {
closed = true;
if (log.isDebugEnabled()) {
log.debug("doClose() - start");
@@ -890,7 +900,7 @@ public class Overseer implements SolrCloseable {
}
}
}
- if (updaterThread != null) {
+ if (updaterThread != null && !fromCSUpdateThread) {
while (true) {
try {
updaterThread.join();
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
index 3e6616f..9bcb731 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.List;
import org.apache.solr.common.ParWork;
-import org.apache.solr.common.cloud.ConnectionManager;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.util.Pair;
@@ -109,7 +108,11 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
}
@Override
- public void cancelElection() throws InterruptedException, KeeperException {
+ public void cancelElection() throws KeeperException, InterruptedException {
+ cancelElection(false);
+ }
+
+ public void cancelElection(boolean fromCSUpdateThread) throws InterruptedException, KeeperException {
try (ParWork closer = new ParWork(this, true)) {
if (zkClient.isConnected()) {
closer.collect("cancelElection", () -> {
@@ -123,7 +126,7 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
}
closer.collect("overseer", () -> {
try {
- overseer.doClose();
+ overseer.doClose(fromCSUpdateThread);
} catch (Exception e) {
ParWork.propegateInterrupt(e);
log.error("Exception closing Overseer", e);
@@ -134,6 +137,11 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
@Override
public void close() {
+ close(false);
+ }
+
+
+ public void close(boolean fromCSUpdateThread) {
this.isClosed = true;
try (ParWork closer = new ParWork(this, true)) {
closer.collect("superClose", () -> {
@@ -146,7 +154,7 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
});
closer.collect("Overseer", () -> {
try {
- cancelElection();
+ cancelElection(fromCSUpdateThread);
} catch (Exception e) {
ParWork.propegateInterrupt(e);
log.error("Exception closing Overseer", e);