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