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/11/09 13:46:25 UTC

[lucene-solr] branch reference_impl_dev updated: @1112 Synchronize the leader elector.

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 b3297f4  @1112 Synchronize the leader elector.
b3297f4 is described below

commit b3297f4fb6a7d1daf579c08de452a67e0f63605a
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Mon Nov 9 07:46:04 2020 -0600

    @1112 Synchronize the leader elector.
---
 solr/core/src/java/org/apache/solr/cloud/LeaderElector.java | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java b/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
index f9556d5..b45dded 100644
--- a/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
+++ b/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
@@ -102,7 +102,7 @@ public class LeaderElector implements Closeable {
    *
    * @param replacement has someone else been the leader already?
    */
-  private boolean checkIfIamLeader(final ElectionContext context, boolean replacement) throws KeeperException,
+  private synchronized boolean checkIfIamLeader(final ElectionContext context, boolean replacement) throws KeeperException,
           InterruptedException, IOException {
     if (isClosed || (zkController != null && zkController.getCoreContainer().isShutDown())) {
       if (log.isDebugEnabled()) log.debug("Will not checkIfIamLeader, elector is closed");
@@ -262,7 +262,7 @@ public class LeaderElector implements Closeable {
    *
    * @return sequential node number
    */
-  public boolean joinElection(ElectionContext context, boolean replacement,boolean joinAtHead) throws KeeperException, InterruptedException, IOException {
+  public synchronized boolean joinElection(ElectionContext context, boolean replacement,boolean joinAtHead) throws KeeperException, InterruptedException, IOException {
     if (isClosed || (zkController != null && zkController.getCoreContainer().isShutDown())) {
       if (log.isDebugEnabled()) log.debug("Will not join election, elector is closed");
       return false;
@@ -438,6 +438,10 @@ public class LeaderElector implements Closeable {
    * Set up any ZooKeeper nodes needed for leader election.
    */
   public void setup(final ElectionContext context) {
+    ElectionContext tmpContext = this.context;
+    if (tmpContext != null) {
+      tmpContext.close();
+    }
     this.context = context;
   }