You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2019/02/05 22:34:27 UTC
[geode] branch develop updated: GEODE-4582 Remove singleton calls
from product code
This is an automated email from the ASF dual-hosted git repository.
bschuchardt pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 986ef9d GEODE-4582 Remove singleton calls from product code
986ef9d is described below
commit 986ef9dcad9f95e838a0423f01b183724b355bf6
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Tue Feb 5 14:32:50 2019 -0800
GEODE-4582 Remove singleton calls from product code
Removing calls to find an InternalDistributedSystem from membership
classes. This also addresses GEODE-1753 "Clean up initialization of GMS
Services log writer", GEODE-4581 and GEODE-4562.
---
.../apache/geode/cache30/ReconnectDUnitTest.java | 2 +
.../cache30/ReconnectWithCacheXMLDUnitTest.java | 2 +
.../apache/geode/distributed/LocatorDUnitTest.java | 18 +++----
.../distributed/LocatorUDPSecurityDUnitTest.java | 1 +
.../internal/membership/MembershipJUnitTest.java | 17 +++++--
.../gms/locator/GMSLocatorRecoveryJUnitTest.java | 9 ++--
.../internal/ClusterDistributionManager.java | 2 +-
.../internal/InternalDistributedSystem.java | 6 +--
.../internal/membership/MemberFactory.java | 9 ++--
.../internal/membership/MemberServices.java | 6 ++-
.../internal/membership/MembershipManager.java | 5 +-
.../internal/membership/gms/GMSMemberFactory.java | 7 +--
.../internal/membership/gms/Services.java | 57 ++++++++++------------
.../membership/gms/auth/GMSAuthenticator.java | 7 +--
.../membership/gms/locator/GMSLocator.java | 16 ------
.../membership/gms/messenger/GMSEncrypt.java | 10 +++-
.../membership/gms/mgr/GMSMembershipManager.java | 4 +-
.../org/apache/geode/internal/tcp/Connection.java | 6 ++-
.../org/apache/geode/test/dunit/Disconnect.java | 4 ++
19 files changed, 99 insertions(+), 89 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 b5fc42c..9a7d32f 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
@@ -140,6 +140,7 @@ public class ReconnectDUnitTest extends JUnit4CacheTestCase {
locatorPort = locPort;
Properties props = getDistributedSystemProperties();
locator = Locator.startLocatorAndDS(locatorPort, new File(""), props);
+ system = (InternalDistributedSystem) locator.getDistributedSystem();
cache = ((InternalLocator) locator).getCache();
ReconnectDUnitTest.savedSystem = locator.getDistributedSystem();
IgnoredException.addIgnoredException(
@@ -563,6 +564,7 @@ public class ReconnectDUnitTest extends JUnit4CacheTestCase {
try {
InternalLocator locator =
(InternalLocator) Locator.startLocatorAndDS(secondLocPort, null, props);
+ system = (InternalDistributedSystem) locator.getDistributedSystem();
cache = locator.getCache();
} catch (IOException e) {
Assert.fail("exception starting locator", e);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectWithCacheXMLDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectWithCacheXMLDUnitTest.java
index 34d80fa..db50b44 100755
--- a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectWithCacheXMLDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ReconnectWithCacheXMLDUnitTest.java
@@ -29,6 +29,7 @@ import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.distributed.ConfigurationProperties;
import org.apache.geode.distributed.ServerLauncherParameters;
import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.membership.MembershipTestHook;
import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
import org.apache.geode.internal.AvailablePortHelper;
@@ -100,6 +101,7 @@ public class ReconnectWithCacheXMLDUnitTest extends JUnit4CacheTestCase {
.until(() -> cache.getReconnectedCache() != null);
Cache newCache = cache.getReconnectedCache();
+ system = (InternalDistributedSystem) cache.getDistributedSystem();
CacheServer server = newCache.getCacheServers().iterator().next();
assertEquals(ServerLauncherParameters.INSTANCE.getPort().intValue(), server.getPort());
assertEquals(20, server.getMaxConnections()); // this setting is in the XML file
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
index 269d0ab..e5aaaa0 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
@@ -213,8 +213,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
properties.put(SECURITY_PEER_AUTH_INIT, "org.apache.geode.distributed.AuthInitializer.create");
properties.put(SECURITY_PEER_AUTHENTICATOR,
"org.apache.geode.distributed.MyAuthenticator.create");
- properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
- properties.put(USE_CLUSTER_CONFIGURATION, "false");
addDSProps(properties);
system = getConnectedDistributedSystem(properties);
assertThat(system.getDistributedMember().getVmKind())
@@ -391,6 +389,7 @@ public class LocatorDUnitTest implements java.io.Serializable {
properties.put(MEMBER_TIMEOUT, "2000");
properties.put(LOG_LEVEL, logger.getLevel().name());
properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
+ properties.put(USE_CLUSTER_CONFIGURATION, "false");
properties.put(SSL_CIPHERS, "any");
properties.put(SSL_PROTOCOLS, "any");
properties.put(SSL_KEYSTORE, getSingleKeyKeystore());
@@ -450,6 +449,8 @@ public class LocatorDUnitTest implements java.io.Serializable {
properties.put(SSL_TRUSTSTORE, getSingleKeyKeystore());
properties.put(SSL_TRUSTSTORE_PASSWORD, "password");
properties.put(SSL_REQUIRE_AUTHENTICATION, "true");
+ properties.put(USE_CLUSTER_CONFIGURATION, "false");
+ properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
properties.put(SSL_ENABLED_COMPONENTS, SecurableCommunicationChannel.LOCATOR.getConstant());
final String locators = hostname + "[" + port1 + "]";
@@ -846,7 +847,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
properties.put(DISABLE_AUTO_RECONNECT, "true");
properties.put(MEMBER_TIMEOUT, "2000");
properties.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
- properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(properties);
@@ -1212,7 +1212,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
final Properties props = new Properties();
props.setProperty(LOCATORS, locators);
props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
- props.put(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(props);
vm1.invoke(() -> {
@@ -1284,7 +1283,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
final String locators = host0 + "[" + port1 + "]," + host0 + "[" + port2 + "]";
final Properties dsProps = getBasicProperties(locators);
- dsProps.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(dsProps);
startLocator(vm0, dsProps, port1);
@@ -1369,7 +1367,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
final Properties dsProps = getBasicProperties(locators);
dsProps.setProperty(LOG_LEVEL, logger.getLevel().name());
dsProps.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
- dsProps.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(dsProps);
startLocator(vm0, dsProps, port1);
@@ -1674,7 +1671,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
VM vm = VM.getVM(0);
final Properties properties =
getBasicProperties(Host.getHost(0).getHostName() + "[" + port1 + "]");
- properties.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(properties);
if (stateFile.exists()) {
assertThat(stateFile.delete()).isTrue();
@@ -1742,7 +1738,10 @@ public class LocatorDUnitTest implements java.io.Serializable {
}
// for child classes
- protected void addDSProps(Properties p) {}
+ protected void addDSProps(Properties p) {
+ p.put(ENABLE_CLUSTER_CONFIGURATION, "false");
+ p.put(USE_CLUSTER_CONFIGURATION, "false");
+ }
protected static InternalDistributedSystem getConnectedDistributedSystem(Properties properties) {
if (system == null || !system.isConnected()) {
@@ -1841,7 +1840,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
Properties locProps = new Properties();
locProps.setProperty(MCAST_PORT, "0");
locProps.setProperty(MEMBER_TIMEOUT, "1000");
- locProps.put(ENABLE_CLUSTER_CONFIGURATION, "false");
addDSProps(locProps);
startLocator(vm, locProps, port);
@@ -1853,8 +1851,6 @@ public class LocatorDUnitTest implements java.io.Serializable {
Properties locProps1 = new Properties();
locProps1.put(MCAST_PORT, "0");
locProps1.put(LOG_LEVEL, logger.getLevel().name());
- locProps1.put(ENABLE_CLUSTER_CONFIGURATION, "false");
- locProps1.put(USE_CLUSTER_CONFIGURATION, "false");
addDSProps(locProps1);
startLocator(vm0, locProps1, port);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorUDPSecurityDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorUDPSecurityDUnitTest.java
index a7b7c11..33c9c74 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorUDPSecurityDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorUDPSecurityDUnitTest.java
@@ -35,6 +35,7 @@ import org.apache.geode.test.junit.categories.MembershipTest;
public class LocatorUDPSecurityDUnitTest extends LocatorDUnitTest {
@Override
protected void addDSProps(Properties p) {
+ super.addDSProps(p);
p.setProperty(SECURITY_UDP_DHALGO, "AES:128");
}
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 e6eb9ba..0c259f3 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
@@ -44,6 +44,7 @@ import org.apache.geode.distributed.internal.ClusterDistributionManager;
import org.apache.geode.distributed.internal.DMStats;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.DistributionConfigImpl;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.SerialAckedMessage;
import org.apache.geode.distributed.internal.membership.gms.GMSUtil;
@@ -146,8 +147,10 @@ public class MembershipJUnitTest {
System.setProperty(GMSJoinLeave.BYPASS_DISCOVERY_PROPERTY, "true");
DistributedMembershipListener listener1 = mock(DistributedMembershipListener.class);
DMStats stats1 = mock(DMStats.class);
+ InternalDistributedSystem mockSystem = mock(InternalDistributedSystem.class);
+ when(mockSystem.getConfig()).thenReturn(config);
System.out.println("creating 1st membership manager");
- m1 = MemberFactory.newMembershipManager(listener1, config, transport, stats1,
+ m1 = MemberFactory.newMembershipManager(listener1, mockSystem, transport, stats1,
SecurityServiceFactory.create());
m1.startEventProcessing();
} finally {
@@ -157,8 +160,10 @@ public class MembershipJUnitTest {
// start the second membership manager
DistributedMembershipListener listener2 = mock(DistributedMembershipListener.class);
DMStats stats2 = mock(DMStats.class);
+ InternalDistributedSystem mockSystem = mock(InternalDistributedSystem.class);
+ when(mockSystem.getConfig()).thenReturn(config);
System.out.println("creating 2nd membership manager");
- m2 = MemberFactory.newMembershipManager(listener2, config, transport, stats2,
+ m2 = MemberFactory.newMembershipManager(listener2, mockSystem, transport, stats2,
SecurityServiceFactory.create());
m2.startEventProcessing();
@@ -287,8 +292,10 @@ public class MembershipJUnitTest {
System.setProperty(GMSJoinLeave.BYPASS_DISCOVERY_PROPERTY, "true");
DistributedMembershipListener listener1 = mock(DistributedMembershipListener.class);
DMStats stats1 = mock(DMStats.class);
+ InternalDistributedSystem mockSystem = mock(InternalDistributedSystem.class);
+ when(mockSystem.getConfig()).thenReturn(config);
System.out.println("creating 1st membership manager");
- m1 = MemberFactory.newMembershipManager(listener1, config, transport, stats1,
+ m1 = MemberFactory.newMembershipManager(listener1, mockSystem, transport, stats1,
SecurityServiceFactory.create());
m1.startEventProcessing();
} finally {
@@ -298,8 +305,10 @@ public class MembershipJUnitTest {
// start the second membership manager
DistributedMembershipListener listener2 = mock(DistributedMembershipListener.class);
DMStats stats2 = mock(DMStats.class);
+ InternalDistributedSystem mockSystem = mock(InternalDistributedSystem.class);
+ when(mockSystem.getConfig()).thenReturn(config);
System.out.println("creating 2nd membership manager");
- m2 = MemberFactory.newMembershipManager(listener2, config, transport, stats2,
+ m2 = MemberFactory.newMembershipManager(listener2, mockSystem, transport, stats2,
SecurityServiceFactory.create());
m2.startEventProcessing();
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
index 26090e4..eb647cb 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.io.FileOutputStream;
@@ -43,6 +44,7 @@ import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.ClusterDistributionManager;
import org.apache.geode.distributed.internal.DMStats;
import org.apache.geode.distributed.internal.DistributionConfigImpl;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.LocatorStats;
import org.apache.geode.distributed.internal.membership.DistributedMembershipListener;
@@ -174,13 +176,12 @@ public class GMSLocatorRecoveryJUnitTest {
// start the first membership manager
DistributedMembershipListener listener1 = mock(DistributedMembershipListener.class);
+ InternalDistributedSystem mockSystem = mock(InternalDistributedSystem.class);
+ when(mockSystem.getConfig()).thenReturn(config);
DMStats stats1 = mock(DMStats.class);
- m1 = MemberFactory.newMembershipManager(listener1, config, transport, stats1,
+ m1 = MemberFactory.newMembershipManager(listener1, mockSystem, transport, stats1,
SecurityServiceFactory.create());
- // hook up the locator to the membership manager
- ((InternalLocator) l).getLocatorHandler().setMembershipManager(m1);
-
GMSLocator l2 = new GMSLocator(SocketCreator.getLocalHost(),
m1.getLocalMember().getHost() + "[" + port + "]", true, true, new LocatorStats(), "");
l2.setViewFile(new File("l2.dat"));
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 470b0d1..9491835 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -775,7 +775,7 @@ public class ClusterDistributionManager implements DistributionManager {
long start = System.currentTimeMillis();
DMListener l = new DMListener(this);
- membershipManager = MemberFactory.newMembershipManager(l, system.getConfig(), transport,
+ membershipManager = MemberFactory.newMembershipManager(l, system, transport,
stats, system.getSecurityService());
sb.append(System.currentTimeMillis() - start);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
index c253160..7ae729c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
@@ -68,7 +68,6 @@ import org.apache.geode.distributed.internal.locks.GrantorRequestProcessor;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.distributed.internal.membership.MembershipManager;
import org.apache.geode.distributed.internal.membership.QuorumChecker;
-import org.apache.geode.distributed.internal.membership.gms.Services;
import org.apache.geode.distributed.internal.membership.gms.messenger.MembershipInformation;
import org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager;
import org.apache.geode.internal.Assert;
@@ -751,9 +750,6 @@ public class InternalDistributedSystem extends DistributedSystem
this.securityLogWriter.fine("SecurityLogWriter is created.");
}
- Services.setLogWriter(this.logWriter);
- Services.setSecurityLogWriter(this.securityLogWriter);
-
loggingSession.startSession();
this.clock = new DSClock(this.isLoner);
@@ -2824,7 +2820,7 @@ public class InternalDistributedSystem extends DistributedSystem
System.setProperty(InternalLocator.INHIBIT_DM_BANNER, inhibitBanner);
}
if (quorumChecker != null) {
- mbrMgr.releaseQuorumChecker(quorumChecker);
+ mbrMgr.releaseQuorumChecker(quorumChecker, reconnectDS);
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberFactory.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberFactory.java
index 4579a9e..ffe0499 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberFactory.java
@@ -17,7 +17,7 @@ package org.apache.geode.distributed.internal.membership;
import java.net.InetAddress;
import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.LocatorStats;
import org.apache.geode.distributed.internal.membership.gms.GMSMemberFactory;
import org.apache.geode.distributed.internal.membership.gms.NetLocator;
@@ -78,16 +78,17 @@ public class MemberFactory {
* start using it.
*
* @param listener the listener to notify for callbacks
- * @param config the configuration of connection to distributed system
* @param transport holds configuration information that can be used by the manager to configure
* itself
* @param stats are used for recording statistical communications information
* @return a MembershipManager
*/
public static MembershipManager newMembershipManager(DistributedMembershipListener listener,
- DistributionConfig config, RemoteTransportConfig transport, DMStats stats,
+ InternalDistributedSystem system,
+ RemoteTransportConfig transport,
+ DMStats stats,
SecurityService securityService) {
- return services.newMembershipManager(listener, config, transport, stats, securityService);
+ return services.newMembershipManager(listener, system, transport, stats, securityService);
}
/**
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberServices.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberServices.java
index 42e423a..822dc0b 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberServices.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberServices.java
@@ -17,7 +17,7 @@ package org.apache.geode.distributed.internal.membership;
import java.net.InetAddress;
import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.LocatorStats;
import org.apache.geode.distributed.internal.membership.gms.NetLocator;
import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
@@ -75,7 +75,9 @@ public interface MemberServices {
* @return a MembershipManager
*/
MembershipManager newMembershipManager(DistributedMembershipListener listener,
- DistributionConfig config, RemoteTransportConfig transport, DMStats stats,
+ InternalDistributedSystem system,
+ RemoteTransportConfig transport,
+ DMStats stats,
SecurityService securityService);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MembershipManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MembershipManager.java
index a91f757..4ac997f 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MembershipManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MembershipManager.java
@@ -24,6 +24,7 @@ import org.apache.geode.SystemFailure;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.DMStats;
import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
/**
* A MembershipManager is responsible for reporting a MemberView, as well as having explicit
@@ -330,8 +331,10 @@ public interface MembershipManager {
* you're all done using the quorum checker.
*
* @param checker the QuorumChecker instance
+ * @param distributedSystem the current distributed system
*/
- void releaseQuorumChecker(QuorumChecker checker);
+ void releaseQuorumChecker(QuorumChecker checker,
+ InternalDistributedSystem distributedSystem);
/**
* return the coordinator for the view.
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberFactory.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberFactory.java
index 7a507fe..97ca01b 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberFactory.java
@@ -20,8 +20,8 @@ import java.net.UnknownHostException;
import org.apache.geode.GemFireConfigException;
import org.apache.geode.SystemConnectException;
import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.DistributionException;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.LocatorStats;
import org.apache.geode.distributed.internal.membership.DistributedMembershipListener;
import org.apache.geode.distributed.internal.membership.MemberAttributes;
@@ -97,9 +97,10 @@ public class GMSMemberFactory implements MemberServices {
@Override
public MembershipManager newMembershipManager(DistributedMembershipListener listener,
- DistributionConfig config, RemoteTransportConfig transport, DMStats stats,
+ InternalDistributedSystem system,
+ RemoteTransportConfig transport, DMStats stats,
SecurityService securityService) throws DistributionException {
- Services services = new Services(listener, config, transport, stats, securityService);
+ Services services = new Services(listener, system, transport, stats, securityService);
try {
services.init();
services.start();
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/Services.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/Services.java
index fa0b14a..051e4aa 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/Services.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/Services.java
@@ -20,9 +20,10 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.CancelCriterion;
import org.apache.geode.ForcedDisconnectException;
+import org.apache.geode.LogWriter;
import org.apache.geode.distributed.DistributedSystemDisconnectedException;
import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.distributed.internal.membership.DistributedMembershipListener;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -36,12 +37,10 @@ import org.apache.geode.distributed.internal.membership.gms.interfaces.JoinLeave
import org.apache.geode.distributed.internal.membership.gms.interfaces.Locator;
import org.apache.geode.distributed.internal.membership.gms.interfaces.Manager;
import org.apache.geode.distributed.internal.membership.gms.interfaces.Messenger;
-import org.apache.geode.distributed.internal.membership.gms.locator.GMSLocator;
import org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave;
import org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger;
import org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager;
import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
-import org.apache.geode.internal.logging.InternalLogWriter;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.security.SecurityService;
import org.apache.geode.internal.security.SecurityServiceFactory;
@@ -52,9 +51,6 @@ public class Services {
private static final Logger logger = LogService.getLogger();
- private static InternalLogWriter staticLogWriter;
- private static InternalLogWriter staticSecurityLogWriter;
-
private final Manager manager;
private final JoinLeave joinLeave;
private final HealthMonitor healthMon;
@@ -64,6 +60,7 @@ public class Services {
private final DMStats stats;
private final Stopper cancelCriterion;
private final SecurityService securityService;
+ private final InternalDistributedSystem distributedSystem;
private volatile boolean stopping;
private volatile boolean stopped;
@@ -71,8 +68,8 @@ public class Services {
private Locator locator;
- private InternalLogWriter logWriter;
- private InternalLogWriter securityLogWriter;
+ private LogWriter logWriter;
+ private LogWriter securityLogWriter;
private final Timer timer = new Timer("Geode Membership Timer", true);
@@ -107,28 +104,27 @@ public class Services {
this.messenger = null;
this.securityService = SecurityServiceFactory.create();
this.auth = null;
+ this.distributedSystem = null;
}
- public Services(DistributedMembershipListener listener, DistributionConfig config,
+ public Services(DistributedMembershipListener listener,
+ InternalDistributedSystem system,
RemoteTransportConfig transport, DMStats stats, SecurityService securityService) {
+ this.distributedSystem = system;
this.cancelCriterion = new Stopper();
this.stats = stats;
- this.config = new ServiceConfig(transport, config);
+ this.config = new ServiceConfig(transport, system.getConfig());
this.manager = new GMSMembershipManager(listener);
this.joinLeave = new GMSJoinLeave();
this.healthMon = new GMSHealthMonitor();
+ this.logWriter = distributedSystem.getLogWriter();
this.messenger = new JGroupsMessenger();
+ this.securityLogWriter = distributedSystem.getSecurityLogWriter();
this.securityService = securityService;
this.auth = new GMSAuthenticator();
}
protected void init() {
- // InternalDistributedSystem establishes this log writer at boot time
- // TODO fix this so that IDS doesn't know about Services
- this.securityLogWriter = staticSecurityLogWriter;
- staticSecurityLogWriter = null;
- this.logWriter = staticLogWriter;
- staticLogWriter = null;
this.auth.init(this);
this.messenger.init(this);
this.manager.init(this);
@@ -249,23 +245,29 @@ public class Services {
}
}
- public static void setLogWriter(InternalLogWriter writer) {
- staticLogWriter = writer;
- }
-
- public static void setSecurityLogWriter(InternalLogWriter securityWriter) {
- staticSecurityLogWriter = securityWriter;
+ public InternalDistributedSystem getDistributedSystem() {
+ return this.distributedSystem;
}
public SecurityService getSecurityService() {
return this.securityService;
}
- public InternalLogWriter getLogWriter() {
+ /**
+ * returns the DistributedSystem's log writer
+ *
+ * @deprecated use a log4j-based LogService
+ */
+ public LogWriter getLogWriter() {
return this.logWriter;
}
- public InternalLogWriter getSecurityLogWriter() {
+ /**
+ * returns the DistributedSystem's security log writer
+ *
+ * @deprecated use a log4j-based LogService
+ */
+ public LogWriter getSecurityLogWriter() {
return this.securityLogWriter;
}
@@ -360,13 +362,6 @@ public class Services {
return !getConfig().getDistributionConfig().getDisableAutoReconnect();
}
- public byte[] getPublicKey(InternalDistributedMember mbr) {
- if (this.locator != null) {
- return ((GMSLocator) this.locator).getPublicKey(mbr);
- }
- return null;
- }
-
public class Stopper extends CancelCriterion {
volatile String reasonForStopping = null;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/auth/GMSAuthenticator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/auth/GMSAuthenticator.java
index d4935eb..3f71813 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/auth/GMSAuthenticator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/auth/GMSAuthenticator.java
@@ -108,7 +108,7 @@ public class GMSAuthenticator implements Authenticator {
return null;
}
- InternalLogWriter securityLogWriter = this.services.getSecurityLogWriter();
+ InternalLogWriter securityLogWriter = (InternalLogWriter) this.services.getSecurityLogWriter();
if (credentials == null) {
securityLogWriter.warning(String.format("Failed to find credentials from [%s]", member));
@@ -190,8 +190,9 @@ public class GMSAuthenticator implements Authenticator {
*/
Properties getCredentials(DistributedMember member, Properties secProps) {
String authMethod = secProps.getProperty(SECURITY_PEER_AUTH_INIT);
- return Handshake.getCredentials(authMethod, secProps, member, true, services.getLogWriter(),
- services.getSecurityLogWriter());
+ return Handshake.getCredentials(authMethod, secProps, member, true,
+ (InternalLogWriter) services.getLogWriter(),
+ (InternalLogWriter) services.getSecurityLogWriter());
}
/**
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 a4afb92..659797a 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
@@ -165,20 +165,6 @@ public class GMSLocator implements Locator, NetLocator {
recover();
}
- private synchronized void findServices() {
- InternalDistributedSystem sys = InternalDistributedSystem.getAnyInstance();
- if (sys != null && services == null) {
- logger.info("Peer locator found distributed system " + sys);
- setMembershipManager(sys.getDM().getMembershipManager());
- }
- if (services == null) {
- try {
- wait(10000);
- } catch (InterruptedException ignored) {
- }
- }
- }
-
@Override
public void installView(NetView view) {
synchronized (this.registrants) {
@@ -222,7 +208,6 @@ public class GMSLocator implements Locator, NetLocator {
private FindCoordinatorResponse processFindCoordinatorRequest(
FindCoordinatorRequest findRequest) {
- findServices();
if (!findRequest.getDHAlgo().equals(securityUDPDHAlgo)) {
return new FindCoordinatorResponse(
"Rejecting findCoordinatorRequest, as member not configured same udp security("
@@ -251,7 +236,6 @@ public class GMSLocator implements Locator, NetLocator {
// at this level we want to return the coordinator known to membership services,
// which may be more up-to-date than the one known by the membership manager
if (view == null) {
- findServices();
if (services == null) {
// we must know this process's identity in order to respond
return null;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncrypt.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncrypt.java
index dabab16..82de1de 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncrypt.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncrypt.java
@@ -35,6 +35,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
import org.apache.geode.distributed.internal.membership.InternalDistributedMember.InternalDistributedMemberWrapper;
import org.apache.geode.distributed.internal.membership.NetView;
import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.locator.GMSLocator;
public final class GMSEncrypt {
// Parameters for the Diffie-Hellman key exchange
@@ -103,7 +104,11 @@ public final class GMSEncrypt {
}
private byte[] getPublicKeyIfIAmLocator(InternalDistributedMember mbr) {
- return services.getPublicKey(mbr);
+ GMSLocator locator = (GMSLocator) services.getLocator();
+ if (locator != null) {
+ return locator.getPublicKey(mbr);
+ }
+ return null;
}
GMSEncrypt(Services services, String dhSKAlgo) throws Exception {
@@ -163,6 +168,9 @@ public final class GMSEncrypt {
if (pk == null) {
pk = (byte[]) view.getPublicKey(member);
}
+ if (pk == null) {
+ throw new IllegalStateException("unable to find public key for " + member);
+ }
return pk;
}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index aca2c60..d8f3353 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -1803,9 +1803,9 @@ public class GMSMembershipManager implements MembershipManager, Manager {
}
@Override
- public void releaseQuorumChecker(QuorumChecker checker) {
+ public void releaseQuorumChecker(QuorumChecker checker,
+ InternalDistributedSystem system) {
checker.suspend();
- InternalDistributedSystem system = InternalDistributedSystem.getAnyInstance();
if (system == null || !system.isConnected()) {
checker.close();
}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
index 7f182d4..386a7a5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
@@ -1568,7 +1568,11 @@ public class Connection implements Runnable {
logger.debug("Stopping {} for {}", p2pReaderName(), remoteAddr);
}
if (this.isReceiver) {
- initiateSuspicionIfSharedUnordered();
+ try {
+ initiateSuspicionIfSharedUnordered();
+ } catch (CancelException e) {
+ // shutting down
+ }
if (!this.sharedResource) {
this.conduit.getStats().incThreadOwnedReceivers(-1L, dominoCount.get());
}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Disconnect.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Disconnect.java
index a0977f8..a6be437 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Disconnect.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Disconnect.java
@@ -18,6 +18,7 @@ import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.cache.GemFireCacheImpl;
@@ -49,5 +50,8 @@ public class Disconnect {
if (ads != null) {
ads.disconnect();
}
+ if (Locator.hasLocator()) {
+ Locator.getLocator().stop();
+ }
}
}