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);