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