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

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


The following commit(s) were added to refs/heads/feature/GEODE-7384 by this 
push:
     new 010937a  GEODE-7384: Members's old Persistent Member Id should be 
removed
010937a is described below

commit 010937a1f32b14fde28d2b2418addcd389eadb8b
Author: Eric Shu <[email protected]>
AuthorDate: Wed Oct 30 16:13:00 2019 -0700

    GEODE-7384: Members's old Persistent Member Id should be removed
    
      * Always remove old Persistent Member Id if persisting its new Id.
---
 .../cache/persistence/PersistenceAdvisorImpl.java      |  6 ++----
 .../cache/persistence/PersistenceAdvisorImplTest.java  | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImpl.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImpl.java
index f83844d..a207ce0 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImpl.java
@@ -646,7 +646,7 @@ public class PersistenceAdvisorImpl implements 
InternalPersistenceAdvisor {
     }
   }
 
-  private void memberRemoved(PersistentMemberID id, boolean revoked) {
+  void memberRemoved(PersistentMemberID id, boolean revoked) {
     if (logger.isDebugEnabled(LogMarker.PERSIST_ADVISOR_VERBOSE)) {
       logger.debug(LogMarker.PERSIST_ADVISOR_VERBOSE, "{}-{}: Member removed. 
persistentID={}",
           shortDiskStoreId(), regionPath, id);
@@ -758,9 +758,7 @@ public class PersistenceAdvisorImpl implements 
InternalPersistenceAdvisor {
 
       // The oldId and newId could be the same if the member is retrying a 
GII. See bug #42051
       if (oldId != null && !oldId.equals(newId)) {
-        if (initialized) {
-          memberRemoved(oldId, false);
-        }
+        memberRemoved(oldId, false);
       }
     }
   }
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImplTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImplTest.java
index fd2fe2c..486cf5c 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImplTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/PersistenceAdvisorImplTest.java
@@ -17,7 +17,10 @@ package org.apache.geode.internal.cache.persistence;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.util.Arrays;
@@ -236,4 +239,19 @@ public class PersistenceAdvisorImplTest {
     UUID uuid = new UUID(diskStoreIDIndex++, diskStoreIDIndex++);
     return new DiskStoreID(uuid);
   }
+
+  @Test
+  public void prepareNewMemberRemovesOldPersistentMemberId() {
+    InternalDistributedMember sender = mock(InternalDistributedMember.class);
+    PersistentMemberID oldId = mock(PersistentMemberID.class);
+    PersistentMemberID newId = mock(PersistentMemberID.class);
+    when(cacheDistributionAdvisor.containsId(sender)).thenReturn(true);
+    PersistenceAdvisorImpl spy = spy(persistenceAdvisorImpl);
+    doNothing().when(spy).memberRemoved(oldId, false);
+
+    spy.prepareNewMember(sender, oldId, newId);
+
+    verify(persistentMemberView).memberOnline(newId);
+    verify(spy).memberRemoved(oldId, false);
+  }
 }

Reply via email to