You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by es...@apache.org on 2019/06/07 00:05:50 UTC

[geode] branch feature/GEODE-6812 updated: GEODE-6812: Do not return null if waitToBecomeElder

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

eshu11 pushed a commit to branch feature/GEODE-6812
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-6812 by this push:
     new 94fd6d6  GEODE-6812: Do not return null if waitToBecomeElder
94fd6d6 is described below

commit 94fd6d630b16ed437d48874ad4471f52b3559adf
Author: eshu <es...@pivotal.io>
AuthorDate: Thu Jun 6 17:00:37 2019 -0700

    GEODE-6812: Do not return null if waitToBecomeElder
    
    * waitToBecomeElder could return false earlier without waiting if the node is being shutdown.
    * always return an elderState when waitToBecomeElder is true.
---
 .../geode/distributed/internal/ClusterElderManager.java    |  3 +--
 .../distributed/internal/ClusterElderManagerTest.java      | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterElderManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterElderManager.java
index debe3e1..2ced332 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterElderManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterElderManager.java
@@ -84,11 +84,10 @@ public class ClusterElderManager {
 
   public ElderState getElderState(boolean waitToBecomeElder) throws InterruptedException {
     if (waitToBecomeElder) {
-      // This should always return true.
       waitForElder(clusterDistributionManager.getId());
     }
 
-    if (!isElder()) {
+    if (!isElder() && !waitToBecomeElder) {
       return null; // early return if this clusterDistributionManager is not the elder
     }
 
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/ClusterElderManagerTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/ClusterElderManagerTest.java
index 48b0a1f..9d34922 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/ClusterElderManagerTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/ClusterElderManagerTest.java
@@ -306,4 +306,18 @@ public class ClusterElderManagerTest {
       await().until(() -> !waitThread.isAlive());
     }
   }
+
+  @Test
+  public void getElderStateReturnsElderStateIfWaitsToBecomeElder() throws Exception {
+    Supplier<ElderState> elderStateSupplier = mock(Supplier.class);
+    ElderState elderState = mock(ElderState.class);
+    when(elderStateSupplier.get()).thenReturn(elderState);
+    ClusterElderManager clusterElderManager =
+        new ClusterElderManager(clusterDistributionManager, elderStateSupplier);
+    when(clusterDistributionManager.getId()).thenReturn(member0);
+    when(clusterDistributionManager.isCloseInProgress()).thenReturn(true);
+    when(clusterDistributionManager.getViewMembers()).thenReturn(Arrays.asList(member1));
+
+    assertThat(clusterElderManager.getElderState(true)).isEqualTo(elderState);
+  }
 }