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

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

commit 9530677216f2479cb0b23e94c19c79ff13bda32b
Author: Bruce Schuchardt <[email protected]>
AuthorDate: Fri Dec 6 08:39:24 2019 -0800

    GEODE-7552: Break dependency on Services
    
    Rewrote locator installation to use Membership rather than the "hidden"
    Services interface.
    
    I rewrote some tests to stop using the internal interfaces of membership
    as well, and along the way saw that JGroupsMessenger was maintaining a
    collection of old identifiers that was only being consumed by a test & I
    removed it.
---
 .../apache/geode/cache30/ReconnectDUnitTest.java   |  4 ----
 .../ClusterDistributionManagerDUnitTest.java       | 10 +++++-----
 .../internal/membership/MembershipJUnitTest.java   |  2 +-
 .../gms/locator/GMSLocatorIntegrationTest.java     |  5 ++++-
 .../gms/messenger/GMSQuorumCheckerJUnitTest.java   | 20 +++++++++----------
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |  1 -
 .../geode/distributed/internal/Distribution.java   |  7 ++++---
 .../distributed/internal/DistributionImpl.java     | 20 ++++++++-----------
 .../distributed/internal/InternalLocator.java      |  7 ++++---
 .../internal/membership/NetLocator.java            |  4 ++--
 .../membership/adapter/GMSLocatorAdapter.java      | 12 ++++++-----
 .../internal/membership/gms/GMSMembership.java     |  1 -
 .../internal/membership/gms/api/Membership.java    |  3 ---
 .../membership/gms/interfaces/Messenger.java       |  5 -----
 .../membership/gms/locator/GMSLocator.java         |  6 ++++--
 .../membership/gms/messenger/GMSQuorumChecker.java |  7 ++-----
 .../membership/gms/messenger/JGroupsMessenger.java | 23 +---------------------
 .../gms/messenger/MembershipInformationImpl.java   | 11 +----------
 .../gms/api/MembershipAPIArchUnitTest.java         |  7 +------
 19 files changed, 54 insertions(+), 101 deletions(-)

diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectDUnitTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectDUnitTest.java
index 863860c..a1b5edb 100755
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectDUnitTest.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectDUnitTest.java
@@ -418,10 +418,6 @@ public class ReconnectDUnitTest extends 
JUnit4CacheTestCase {
               failure = false;
               cache = ((InternalLocator) locator).getCache();
               system = cache.getInternalDistributedSystem();
-              assertTrue(
-                  (getDistribution(system))
-                      .getServices().getMessenger()
-                      .isOldMembershipIdentifier(dm));
               return ds.getReconnectedSystem().getDistributedMember();
             } catch (InterruptedException e) {
               System.err.println("interrupted while waiting for reconnect");
diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ClusterDistributionManagerDUnitTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ClusterDistributionManagerDUnitTest.java
index e9a6341..78e2f6d 100644
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ClusterDistributionManagerDUnitTest.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ClusterDistributionManagerDUnitTest.java
@@ -60,7 +60,7 @@ import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
+import org.apache.geode.distributed.internal.membership.MembershipView;
 import 
org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.test.dunit.DistributedTestCase;
@@ -321,8 +321,7 @@ public class ClusterDistributionManagerDUnitTest extends 
DistributedTestCase {
   public void testWaitForViewInstallation() {
     InternalDistributedSystem system = getSystem(new Properties());
     ClusterDistributionManager dm = (ClusterDistributionManager) 
system.getDM();
-    Distribution membershipManager = dm.getDistribution();
-    GMSMembershipView view = 
membershipManager.getServices().getJoinLeave().getView();
+    MembershipView view = dm.getDistribution().getView();
 
     AtomicBoolean waitForViewInstallationDone = new AtomicBoolean();
     executorService.submit(() -> {
@@ -336,8 +335,9 @@ public class ClusterDistributionManagerDUnitTest extends 
DistributedTestCase {
 
     pause(2000);
 
-    GMSMembershipView newView = new GMSMembershipView(view, view.getViewId() + 
1);
-    membershipManager.installView(newView);
+    VM.getVM(1).invoke("create another member to initiate a new view", () -> {
+      getSystem(new Properties());
+    });
 
     await()
         .untilAsserted(() -> 
assertThat(waitForViewInstallationDone.get()).isTrue());
diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipJUnitTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipJUnitTest.java
index 5622252..acb9553 100755
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipJUnitTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipJUnitTest.java
@@ -288,7 +288,7 @@ public class MembershipJUnitTest {
                 
InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()))
             .create();
     doAnswer(invocation -> {
-      DistributionImpl.connectLocatorToServices(m1.getServices());
+      DistributionImpl.connectLocatorToServices(m1);
       return null;
     }).when(lifeCycleListener).started();
     m1.start();
diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorIntegrationTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorIntegrationTest.java
index 8ac21dd..aa16704 100644
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorIntegrationTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorIntegrationTest.java
@@ -32,6 +32,7 @@ import org.junit.rules.TemporaryFolder;
 import org.apache.geode.distributed.internal.DistributionConfigImpl;
 import org.apache.geode.distributed.internal.LocatorStats;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import 
org.apache.geode.distributed.internal.membership.gms.interfaces.JoinLeave;
@@ -85,7 +86,9 @@ public class GMSLocatorIntegrationTest {
                         
.getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR)),
                 
InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(),
                 
InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()));
-    gmsLocator.setServices(services);
+    GMSMembership membership = mock(GMSMembership.class);
+    when(membership.getServices()).thenReturn(services);
+    gmsLocator.setMembership(membership);
   }
 
   @After
diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
index a9fdade..ee3e628 100644
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
@@ -77,7 +77,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertTrue(quorum);
@@ -97,7 +97,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertTrue(quorum);
@@ -112,7 +112,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertFalse(quorum);
@@ -126,7 +126,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertFalse(quorum);
@@ -153,7 +153,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertTrue(quorum);
@@ -183,7 +183,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertTrue(quorum);
@@ -216,7 +216,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertFalse(quorum);
@@ -247,7 +247,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertFalse(quorum);
@@ -271,7 +271,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertTrue(quorum);
@@ -296,7 +296,7 @@ public class GMSQuorumCheckerJUnitTest {
     PingMessageAnswer answerer = new PingMessageAnswer(channel, 
pongResponders);
     Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
 
-    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel, null);
+    GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
     qc.initialize();
     boolean quorum = qc.checkForQuorum(500);
     assertFalse(quorum);
diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index 351b248..fc46b1d 100755
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@ -876,7 +876,6 @@ public class JGroupsMessengerJUnitTest {
     initMocks(false);
     JChannel channel = messenger.myChannel;
     tconfig.setOldDSMembershipInfo(new MembershipInformationImpl(channel,
-        Collections.singleton(new InternalDistributedMember("localhost", 
10000)),
         new ConcurrentLinkedQueue<>()));
     JGroupsMessenger newMessenger = new JGroupsMessenger();
     newMessenger.init(services);
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
index 876a32c..6bcb87a 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
@@ -25,7 +25,7 @@ import org.apache.geode.distributed.DistributedMember;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
-import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 import 
org.apache.geode.distributed.internal.membership.gms.api.MembershipTestHook;
 import org.apache.geode.distributed.internal.membership.gms.api.QuorumChecker;
 
@@ -123,8 +123,6 @@ public interface Distribution {
 
   Set<InternalDistributedMember> getMembersNotShuttingDown();
 
-  Services getServices();
-
   // TODO - this method is only used by tests
   @VisibleForTesting
   void forceDisconnect(String reason);
@@ -166,4 +164,7 @@ public interface Distribution {
    * method so that services will know how to react.
    */
   void setCloseInProgress();
+
+  Membership getMembership();
+
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
index 2950e4c..c26171e 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
@@ -45,7 +45,6 @@ import 
org.apache.geode.distributed.internal.direct.DirectChannel;
 import org.apache.geode.distributed.internal.direct.ShunnedMemberException;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
-import 
org.apache.geode.distributed.internal.membership.adapter.GMSLocatorAdapter;
 import org.apache.geode.distributed.internal.membership.adapter.ServiceConfig;
 import 
org.apache.geode.distributed.internal.membership.adapter.auth.GMSAuthenticator;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
@@ -157,18 +156,20 @@ public class DistributionImpl implements Distribution {
     GMSHealthMonitor.loadEmergencyClasses();
   }
 
-  public static void connectLocatorToServices(Services services) {
+  public static void connectLocatorToServices(Membership membership) {
     // see if a locator was started and put it in GMS Services
     InternalLocator l = (InternalLocator) Locator.getLocator();
     if (l != null && l.getLocatorHandler() != null) {
-      if (l.getLocatorHandler().setServices(services)) {
-        services
-            .setLocator(((GMSLocatorAdapter) 
l.getLocatorHandler()).getGMSLocator());
-      }
+      l.getLocatorHandler().setMembership(membership);
     }
   }
 
   @Override
+  public Membership getMembership() {
+    return membership;
+  }
+
+  @Override
   public void start() {
     membership.start();
   }
@@ -572,11 +573,6 @@ public class DistributionImpl implements Distribution {
     return membership.getMembersNotShuttingDown();
   }
 
-  @Override
-  public Services getServices() {
-    return membership.getServices();
-  }
-
   // TODO - this method is only used by tests
   @Override
   @VisibleForTesting
@@ -920,7 +916,7 @@ public class DistributionImpl implements Distribution {
 
     @Override
     public void started() {
-      connectLocatorToServices(distribution.getServices());
+      connectLocatorToServices(distribution.getMembership());
     }
 
     @Override
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
index 86c9fba..2cedb30 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
@@ -707,9 +707,10 @@ public class InternalLocator extends Locator implements 
ConnectListener, LogConf
           (InternalDistributedSystem) 
DistributedSystem.connect(distributedSystemProperties);
 
       if (peerLocator) {
-        netLocator.setServices(
-            internalDistributedSystem.getDM().getDistribution()
-                .getServices());
+        // We've created a peer location message handler - it needs to be 
connected to
+        // the membership service in order to get membership view notifications
+        netLocator
+            
.setMembership(internalDistributedSystem.getDM().getDistribution().getMembership());
       }
 
       internalDistributedSystem.addDisconnectListener(sys -> stop(false, 
false, false));
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetLocator.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetLocator.java
index f3f5fb4..449c689 100755
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetLocator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetLocator.java
@@ -15,7 +15,7 @@
 package org.apache.geode.distributed.internal.membership;
 
 import org.apache.geode.distributed.internal.RestartableTcpHandler;
-import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 
 public interface NetLocator extends RestartableTcpHandler {
 
@@ -25,6 +25,6 @@ public interface NetLocator extends RestartableTcpHandler {
    *
    * @return true if the membership manager was accepted
    */
-  boolean setServices(Services pservices);
+  boolean setMembership(Membership membership);
 
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSLocatorAdapter.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSLocatorAdapter.java
index 0c7c258..2af5569 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSLocatorAdapter.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSLocatorAdapter.java
@@ -22,12 +22,13 @@ import java.nio.file.Path;
 
 import org.apache.geode.cache.GemFireCache;
 import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.internal.Distribution;
 import 
org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.LocatorStats;
 import org.apache.geode.distributed.internal.RestartableTcpHandler;
 import org.apache.geode.distributed.internal.membership.NetLocator;
-import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.Locator;
 import org.apache.geode.distributed.internal.membership.gms.locator.GMSLocator;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
@@ -88,8 +89,9 @@ public class GMSLocatorAdapter implements 
RestartableTcpHandler, NetLocator {
   @Override
   public void restarting(DistributedSystem ds, GemFireCache cache,
       InternalConfigurationPersistenceService sharedConfig) {
-    gmsLocator.setServices(
-        ((InternalDistributedSystem) 
ds).getDM().getDistribution().getServices());
+    InternalDistributedSystem ids = (InternalDistributedSystem) ds;
+    Distribution distribution = ids.getDM().getDistribution();
+    gmsLocator.setMembership(distribution.getMembership());
   }
 
   @Override
@@ -98,8 +100,8 @@ public class GMSLocatorAdapter implements 
RestartableTcpHandler, NetLocator {
   }
 
   @Override
-  public boolean setServices(Services pservices) {
-    return gmsLocator.setServices(pservices);
+  public boolean setMembership(Membership membership) {
+    return gmsLocator.setMembership(membership);
   }
 
   public Locator getGMSLocator() {
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
index 3665af1..6526b74 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
@@ -1239,7 +1239,6 @@ public class GMSMembership implements Membership {
     return address;
   }
 
-  @Override
   public Services getServices() {
     return services;
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
index d22d2d6..0a20114 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
@@ -23,7 +23,6 @@ import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedMember;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
-import org.apache.geode.distributed.internal.membership.gms.Services;
 import 
org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave;
 
 public interface Membership {
@@ -300,8 +299,6 @@ public interface Membership {
    */
   Set<InternalDistributedMember> getMembersNotShuttingDown();
 
-  Services getServices();
-
   /**
    * Process a message and pass it on to the {@link MessageListener} that was 
configured
    * in {@link MembershipBuilder#setMessageListener(MessageListener)}. This 
method
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
index a8415dd..f554464 100755
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
@@ -52,11 +52,6 @@ public interface Messenger extends Service {
   MemberIdentifier getMemberID();
 
   /**
-   * check to see if a member ID has already been used
-   */
-  boolean isOldMembershipIdentifier(MemberIdentifier id);
-
-  /**
    * retrieves the quorum checker that is used during auto-reconnect attempts
    */
   GMSQuorumChecker getQuorumChecker();
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
index 50647e9..01ec943 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
@@ -40,10 +40,12 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.InternalGemFireException;
 import org.apache.geode.annotations.VisibleForTesting;
 import org.apache.geode.distributed.internal.LocatorStats;
+import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.GMSUtil;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import 
org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
+import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.Locator;
 import 
org.apache.geode.distributed.internal.membership.gms.membership.HostAddress;
 import 
org.apache.geode.distributed.internal.membership.gms.messenger.GMSMemberWrapper;
@@ -111,9 +113,9 @@ public class GMSLocator implements Locator {
     this.locatorClient = locatorClient;
   }
 
-  public synchronized boolean setServices(Services pservices) {
+  public synchronized boolean setMembership(Membership membership) {
     if (services == null || services.isStopped()) {
-      services = pservices;
+      services = ((GMSMembership) membership).getServices();
       localAddress = services.getMessenger().getMemberID();
       Objects.requireNonNull(localAddress, "member address should have been 
established");
       logger.info("Peer locator is connecting to local membership services 
with ID {}",
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
index c1a2aec..8901653 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSQuorumChecker.java
@@ -55,15 +55,12 @@ public class GMSQuorumChecker implements QuorumChecker {
   private final JChannel channel;
   private JGAddress myAddress;
   private final long partitionThreshold;
-  private Set<MemberIdentifier> oldMemberIdentifiers;
   private ConcurrentLinkedQueue<Message> messageQueue = new 
ConcurrentLinkedQueue<>();
 
-  public GMSQuorumChecker(GMSMembershipView jgView, int partitionThreshold, 
JChannel channel,
-      Set<MemberIdentifier> oldMemberIdentifiers) {
+  public GMSQuorumChecker(GMSMembershipView jgView, int partitionThreshold, 
JChannel channel) {
     this.lastView = jgView;
     this.partitionThreshold = partitionThreshold;
     this.channel = channel;
-    this.oldMemberIdentifiers = oldMemberIdentifiers;
   }
 
   public void initialize() {
@@ -115,7 +112,7 @@ public class GMSQuorumChecker implements QuorumChecker {
 
 
   public MembershipInformation getMembershipInfo() {
-    return new MembershipInformationImpl(channel, oldMemberIdentifiers, 
messageQueue);
+    return new MembershipInformationImpl(channel, messageQueue);
   }
 
   private boolean calculateQuorum() {
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 9a584af..108f5c4 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -165,12 +165,6 @@ public class JGroupsMessenger implements Messenger {
   private GMSEncrypt encrypt;
 
   /**
-   * Member identifiers already used, either in this JGroupsMessenger instance
-   * or in a past one & retained through an auto-reconnect.
-   */
-  private Set<MemberIdentifier> usedMemberIdentifiers = new HashSet<>();
-
-  /**
    * During reconnect a QuorumChecker holds the JGroups channel and responds 
to Ping
    * and Pong messages but also queues any messages it doesn't recognize. 
These need
    * to be delivered to handlers after membership services have been rebuilt.
@@ -331,7 +325,6 @@ public class JGroupsMessenger implements Messenger {
         logger.debug("Reusing JGroups channel from previous system", 
properties);
         MembershipInformationImpl oldInfo = (MembershipInformationImpl) 
oldDSMembershipInfo;
         myChannel = oldInfo.getChannel();
-        usedMemberIdentifiers = oldInfo.getMembershipIdentifiers();
         queuedMessagesFromReconnect = oldInfo.getQueuedMessages();
 
         // scrub the old channel
@@ -397,11 +390,6 @@ public class JGroupsMessenger implements Messenger {
 
   }
 
-  @Override
-  public boolean isOldMembershipIdentifier(MemberIdentifier id) {
-    return usedMemberIdentifiers.contains(id);
-  }
-
   /**
    * JGroups picks an IPv6 address if preferIPv4Stack is false or not set and 
preferIPv6Addresses is
    * not set or is true. We want it to use an IPv4 address for a dual-IP stack 
so that both IPv4 and
@@ -432,10 +420,6 @@ public class JGroupsMessenger implements Messenger {
 
   @Override
   public void stop() {
-    if (localAddress != null && localAddress.getVmViewId() >= 0) {
-      // keep track of old addresses that were used to successfully join the 
cluster
-      usedMemberIdentifiers.add(localAddress);
-    }
     if (this.myChannel != null) {
       if ((services.isShutdownDueToForcedDisconnect() && 
services.isAutoReconnectEnabled())
           || services.getManager().isReconnectingDS()) {
@@ -1225,10 +1209,6 @@ public class JGroupsMessenger implements Messenger {
   @Override
   public void emergencyClose() {
     this.view = null;
-    if (localAddress.getVmViewId() >= 0) {
-      // keep track of old addresses that were used to successfully join the 
cluster
-      usedMemberIdentifiers.add(localAddress);
-    }
     if (this.myChannel != null) {
       if ((services.isShutdownDueToForcedDisconnect() && 
services.isAutoReconnectEnabled())
           || services.getManager().isReconnectingDS()) {
@@ -1251,8 +1231,7 @@ public class JGroupsMessenger implements Messenger {
       }
     }
     GMSQuorumChecker qc =
-        new GMSQuorumChecker(view, services.getConfig().getLossThreshold(), 
this.myChannel,
-            usedMemberIdentifiers);
+        new GMSQuorumChecker(view, services.getConfig().getLossThreshold(), 
this.myChannel);
     qc.initialize();
     return qc;
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/MembershipInformationImpl.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/MembershipInformationImpl.java
index d8e7834..d37f5de 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/MembershipInformationImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/MembershipInformationImpl.java
@@ -15,12 +15,10 @@
 package org.apache.geode.distributed.internal.membership.gms.messenger;
 
 import java.util.Queue;
-import java.util.Set;
 
 import org.jgroups.JChannel;
 import org.jgroups.Message;
 
-import 
org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import 
org.apache.geode.distributed.internal.membership.gms.api.MembershipInformation;
 
 /**
@@ -29,15 +27,12 @@ import 
org.apache.geode.distributed.internal.membership.gms.api.MembershipInform
  */
 public class MembershipInformationImpl implements MembershipInformation {
   private final JChannel channel;
-  private final Set<MemberIdentifier> membershipIdentifiers;
   private final Queue<Message> queuedMessages;
 
   protected MembershipInformationImpl(JChannel channel,
-      Set<MemberIdentifier> oldMembershipIdentifiers,
       Queue<Message> queuedMessages) {
 
     this.channel = channel;
-    this.membershipIdentifiers = oldMembershipIdentifiers;
     this.queuedMessages = queuedMessages;
   }
 
@@ -45,11 +40,7 @@ public class MembershipInformationImpl implements 
MembershipInformation {
     return channel;
   }
 
-  public Set<MemberIdentifier> getMembershipIdentifiers() {
-    return membershipIdentifiers;
-  }
-
-  public Queue<Message> getQueuedMessages() {
+  Queue<Message> getQueuedMessages() {
     return this.queuedMessages;
   }
 }
diff --git 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
index be66073..0496f5b 100644
--- 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
@@ -32,7 +32,6 @@ import 
org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 import org.apache.geode.distributed.internal.membership.MembershipView;
 import 
org.apache.geode.distributed.internal.membership.gms.MemberDataBuilderImpl;
 import 
org.apache.geode.distributed.internal.membership.gms.MembershipBuilderImpl;
-import org.apache.geode.distributed.internal.membership.gms.Services;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
 
 @RunWith(ArchUnitRunner.class)
@@ -63,9 +62,5 @@ public class MembershipAPIArchUnitTest {
               .or(type(InternalDistributedMember.class))
               .or(type(MembershipView.class))
               .or(type(DistributedMember.class))
-              .or(type(InternalDistributedMember[].class))
-
-              // TODO: This is used by the GMSLocatorAdapter to reach into the 
locator
-              // part of the services
-              .or(type(Services.class)));
+              .or(type(InternalDistributedMember[].class)));
 }

Reply via email to