You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2016/09/13 19:12:18 UTC

[31/50] [abbrv] incubator-geode git commit: Merge branch 'develop' into feature/GEODE-420

Merge branch 'develop' into feature/GEODE-420

# Conflicts:
#	geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/AbstractDistributionConfig.java
#	geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java
#	geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
#	geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
#	geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a3a5a04c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a3a5a04c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a3a5a04c

Branch: refs/heads/develop
Commit: a3a5a04cdd3018150cc6b753654f5a47c8d08b06
Parents: 5d0cd43 5cb5009
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Tue Aug 30 12:56:17 2016 +1000
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Tue Aug 30 12:56:17 2016 +1000

----------------------------------------------------------------------
 .gitignore                                      |   2 +
 .../client/internal/ClientPartitionAdvisor.java |  23 +-
 .../distributed/ConfigurationProperties.java    |   9 +
 .../internal/AbstractDistributionConfig.java    |   8 +-
 .../gemfire/distributed/internal/DMStats.java   |   7 +
 .../internal/DistributionConfig.java            |  32 +-
 .../internal/DistributionConfigImpl.java        |  14 +-
 .../distributed/internal/DistributionStats.java |  43 +-
 .../distributed/internal/InternalLocator.java   |   4 +-
 .../internal/LonerDistributionManager.java      |  22 +
 .../membership/InternalDistributedMember.java   |  50 +-
 .../internal/membership/MemberFactory.java      |   4 +-
 .../internal/membership/MemberServices.java     |   2 +-
 .../internal/membership/NetView.java            |  33 +-
 .../internal/membership/gms/GMSMember.java      |  48 +-
 .../membership/gms/GMSMemberFactory.java        |   4 +-
 .../internal/membership/gms/Services.java       |   8 +
 .../membership/gms/interfaces/JoinLeave.java    |   6 +
 .../membership/gms/interfaces/Messenger.java    |  46 ++
 .../gms/locator/FindCoordinatorRequest.java     |  35 +-
 .../gms/locator/FindCoordinatorResponse.java    |  81 ++-
 .../membership/gms/locator/GMSLocator.java      |  55 +-
 .../membership/gms/membership/GMSJoinLeave.java | 183 ++++-
 .../gms/messages/InstallViewMessage.java        |  25 +
 .../gms/messages/JoinRequestMessage.java        |  42 +-
 .../gms/messages/JoinResponseMessage.java       |  63 +-
 .../membership/gms/messenger/GMSEncrypt.java    | 616 ++++++++++++++++
 .../gms/messenger/JGroupsMessenger.java         | 399 ++++++++--
 .../internal/InternalDataSerializer.java        |  18 +
 .../gemfire/internal/i18n/LocalizedStrings.java |   3 +-
 .../DistributedMulticastRegionDUnitTest.java    |  33 +-
 ...MulticastRegionWithUDPSecurityDUnitTest.java |  37 +
 .../gemfire/cache30/ReconnectDUnitTest.java     |   4 +
 .../ReconnectWithUDPSecurityDUnitTest.java      |  33 +
 .../gemfire/distributed/LocatorDUnitTest.java   |  78 +-
 .../LocatorUDPSecurityDUnitTest.java            | 105 +++
 .../internal/DistributionConfigJUnitTest.java   |   2 +-
 .../membership/MembershipJUnitTest.java         | 158 ++++
 .../membership/gms/GMSMemberJUnitTest.java      |  24 +
 .../locator/GMSLocatorRecoveryJUnitTest.java    |   4 +-
 .../gms/membership/GMSJoinLeaveJUnitTest.java   |  44 +-
 .../gms/messenger/GMSEncryptJUnitTest.java      | 725 +++++++++++++++++++
 .../messenger/JGroupsMessengerJUnitTest.java    | 243 ++++++-
 .../cache/OffHeapEvictionDUnitTest.java         |   7 +
 .../sanctionedDataSerializables.txt             |  46 +-
 gradle/rat.gradle                               |   2 +
 46 files changed, 3160 insertions(+), 270 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/AbstractDistributionConfig.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/AbstractDistributionConfig.java
index 9168503,d4c3b90..f92511e
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/AbstractDistributionConfig.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/AbstractDistributionConfig.java
@@@ -683,212 -686,371 +683,218 @@@ public abstract class AbstractDistribut
    }
  
    protected static final Map dcAttDescriptions;
 +
    static {
 -    Map<String, String> m =  new HashMap<String, String>();
 -
 -    m.put(ACK_WAIT_THRESHOLD,
 -      LocalizedStrings.AbstractDistributionConfig_DEFAULT_ACK_WAIT_THRESHOLD_0_1_2
 -      .toLocalizedString( new Object[] { 
 -          Integer.valueOf(DEFAULT_ACK_WAIT_THRESHOLD),
 -          Integer.valueOf(MIN_ACK_WAIT_THRESHOLD),
 -          Integer.valueOf(MIN_ACK_WAIT_THRESHOLD)}));
 -
 -    m.put(ARCHIVE_FILE_SIZE_LIMIT,
 -      LocalizedStrings.AbstractDistributionConfig_ARCHIVE_FILE_SIZE_LIMIT_NAME
 -        .toLocalizedString());
 -
 -    m.put(ACK_SEVERE_ALERT_THRESHOLD,
 -      LocalizedStrings.AbstractDistributionConfig_ACK_SEVERE_ALERT_THRESHOLD_NAME
 -        .toLocalizedString( 
 -           new Object[] { ACK_WAIT_THRESHOLD,
 -                          Integer.valueOf(DEFAULT_ACK_SEVERE_ALERT_THRESHOLD),
 -                          Integer.valueOf(MIN_ACK_SEVERE_ALERT_THRESHOLD),
 -                          Integer.valueOf(MAX_ACK_SEVERE_ALERT_THRESHOLD)}));
 -
 -    m.put(ARCHIVE_DISK_SPACE_LIMIT,
 -      LocalizedStrings.AbstractDistributionConfig_ARCHIVE_DISK_SPACE_LIMIT_NAME
 -        .toLocalizedString());
 -
 -    m.put(CACHE_XML_FILE,
 -      LocalizedStrings.AbstractDistributionConfig_CACHE_XML_FILE_NAME_0
 -        .toLocalizedString( DEFAULT_CACHE_XML_FILE ));
 -
 -    m.put(DISABLE_TCP,
 -      LocalizedStrings.AbstractDistributionConfig_DISABLE_TCP_NAME_0
 -        .toLocalizedString(Boolean.valueOf(DEFAULT_DISABLE_TCP)));
 -
 -    m.put(ENABLE_TIME_STATISTICS,
 -      LocalizedStrings.AbstractDistributionConfig_ENABLE_TIME_STATISTICS_NAME
 -        .toLocalizedString());
 -
 -    m.put(DEPLOY_WORKING_DIR,
 -        LocalizedStrings.AbstractDistributionConfig_DEPLOY_WORKING_DIR_0 
 -          .toLocalizedString(DEFAULT_DEPLOY_WORKING_DIR));
 -
 -    m.put(LOG_FILE,
 -      LocalizedStrings.AbstractDistributionConfig_LOG_FILE_NAME_0
 -        .toLocalizedString(DEFAULT_LOG_FILE));
 -
 -    m.put(LOG_LEVEL,
 -      LocalizedStrings.AbstractDistributionConfig_LOG_LEVEL_NAME_0_1 
 -        .toLocalizedString(new Object[] { LogWriterImpl.levelToString(DEFAULT_LOG_LEVEL), LogWriterImpl.allowedLogLevels()}));
 -
 -    m.put(LOG_FILE_SIZE_LIMIT,
 -      LocalizedStrings.AbstractDistributionConfig_LOG_FILE_SIZE_LIMIT_NAME
 -        .toLocalizedString());
 -
 -    m.put(LOG_DISK_SPACE_LIMIT,
 -      LocalizedStrings.AbstractDistributionConfig_LOG_DISK_SPACE_LIMIT_NAME
 -        .toLocalizedString());
 -
 -    m.put(LOCATORS,
 -      LocalizedStrings.AbstractDistributionConfig_LOCATORS_NAME_0
 -        .toLocalizedString(DEFAULT_LOCATORS));
 -
 -    m.put(LOCATOR_WAIT_TIME,
 -      LocalizedStrings.AbstractDistributionConfig_LOCATOR_WAIT_TIME_NAME_0
 -        .toLocalizedString(Integer.valueOf(DEFAULT_LOCATOR_WAIT_TIME)));
 -
 -    m.put(TCP_PORT,
 -      LocalizedStrings.AbstractDistributionConfig_TCP_PORT_NAME_0_1_2
 -        .toLocalizedString( new Object[] {
 -          Integer.valueOf(DEFAULT_TCP_PORT),
 -          Integer.valueOf(MIN_TCP_PORT),
 -          Integer.valueOf(MAX_TCP_PORT)}));
 -
 -    m.put(MCAST_PORT,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_PORT_NAME_0_1_2
 -       .toLocalizedString(new Object[] {
 -          Integer.valueOf(DEFAULT_MCAST_PORT),
 -          Integer.valueOf(MIN_MCAST_PORT), 
 -          Integer.valueOf(MAX_MCAST_PORT)}));
 -
 -    m.put(MCAST_ADDRESS,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_ADDRESS_NAME_0_1
 -       .toLocalizedString(new Object[] {
 -          Integer.valueOf(DEFAULT_MCAST_PORT),
 -          DEFAULT_MCAST_ADDRESS}));
 -
 -    m.put(MCAST_TTL,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_TTL_NAME_0_1_2
 -       .toLocalizedString(new Object[] {
 -          Integer.valueOf(DEFAULT_MCAST_TTL),
 -          Integer.valueOf(MIN_MCAST_TTL),
 -          Integer.valueOf(MAX_MCAST_TTL)}));
 -
 -    m.put(MCAST_SEND_BUFFER_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_SEND_BUFFER_SIZE_NAME_0
 -       .toLocalizedString(Integer.valueOf(DEFAULT_MCAST_SEND_BUFFER_SIZE)));
 -
 -    m.put(MCAST_RECV_BUFFER_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_RECV_BUFFER_SIZE_NAME_0
 -       .toLocalizedString(Integer.valueOf(DEFAULT_MCAST_RECV_BUFFER_SIZE)));
 -
 -    m.put(MCAST_FLOW_CONTROL,
 -      LocalizedStrings.AbstractDistributionConfig_MCAST_FLOW_CONTROL_NAME_0
 -       .toLocalizedString(DEFAULT_MCAST_FLOW_CONTROL));
 -
 -    m.put(MEMBER_TIMEOUT,
 -        LocalizedStrings.AbstractDistributionConfig_MEMBER_TIMEOUT_NAME_0
 -        .toLocalizedString(Integer.valueOf(DEFAULT_MEMBER_TIMEOUT)));
 -    
 +    Map<String, String> m = new HashMap<String, String>();
 +
 +    m.put(ACK_WAIT_THRESHOLD, LocalizedStrings.AbstractDistributionConfig_DEFAULT_ACK_WAIT_THRESHOLD_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_ACK_WAIT_THRESHOLD), Integer.valueOf(MIN_ACK_WAIT_THRESHOLD), Integer.valueOf(MIN_ACK_WAIT_THRESHOLD)
 +    }));
 +
 +    m.put(ARCHIVE_FILE_SIZE_LIMIT, LocalizedStrings.AbstractDistributionConfig_ARCHIVE_FILE_SIZE_LIMIT_NAME.toLocalizedString());
 +
 +    m.put(ACK_SEVERE_ALERT_THRESHOLD, LocalizedStrings.AbstractDistributionConfig_ACK_SEVERE_ALERT_THRESHOLD_NAME.toLocalizedString(new Object[] {
 +      ACK_WAIT_THRESHOLD,
 +      Integer.valueOf(DEFAULT_ACK_SEVERE_ALERT_THRESHOLD),
 +      Integer.valueOf(MIN_ACK_SEVERE_ALERT_THRESHOLD),
 +      Integer.valueOf(MAX_ACK_SEVERE_ALERT_THRESHOLD)
 +    }));
 +
 +    m.put(ARCHIVE_DISK_SPACE_LIMIT, LocalizedStrings.AbstractDistributionConfig_ARCHIVE_DISK_SPACE_LIMIT_NAME.toLocalizedString());
 +
 +    m.put(CACHE_XML_FILE, LocalizedStrings.AbstractDistributionConfig_CACHE_XML_FILE_NAME_0.toLocalizedString(DEFAULT_CACHE_XML_FILE));
 +
 +    m.put(DISABLE_TCP, LocalizedStrings.AbstractDistributionConfig_DISABLE_TCP_NAME_0.toLocalizedString(Boolean.valueOf(DEFAULT_DISABLE_TCP)));
 +
 +    m.put(ENABLE_TIME_STATISTICS, LocalizedStrings.AbstractDistributionConfig_ENABLE_TIME_STATISTICS_NAME.toLocalizedString());
 +
 +    m.put(DEPLOY_WORKING_DIR, LocalizedStrings.AbstractDistributionConfig_DEPLOY_WORKING_DIR_0.toLocalizedString(DEFAULT_DEPLOY_WORKING_DIR));
 +
 +    m.put(LOG_FILE, LocalizedStrings.AbstractDistributionConfig_LOG_FILE_NAME_0.toLocalizedString(DEFAULT_LOG_FILE));
 +
 +    m.put(LOG_LEVEL, LocalizedStrings.AbstractDistributionConfig_LOG_LEVEL_NAME_0_1.toLocalizedString(new Object[] {
 +      LogWriterImpl.levelToString(DEFAULT_LOG_LEVEL), LogWriterImpl.allowedLogLevels()
 +    }));
 +
 +    m.put(LOG_FILE_SIZE_LIMIT, LocalizedStrings.AbstractDistributionConfig_LOG_FILE_SIZE_LIMIT_NAME.toLocalizedString());
 +
 +    m.put(LOG_DISK_SPACE_LIMIT, LocalizedStrings.AbstractDistributionConfig_LOG_DISK_SPACE_LIMIT_NAME.toLocalizedString());
 +
 +    m.put(LOCATORS, LocalizedStrings.AbstractDistributionConfig_LOCATORS_NAME_0.toLocalizedString(DEFAULT_LOCATORS));
 +
 +    m.put(LOCATOR_WAIT_TIME, LocalizedStrings.AbstractDistributionConfig_LOCATOR_WAIT_TIME_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_LOCATOR_WAIT_TIME)));
 +
 +    m.put(TCP_PORT, LocalizedStrings.AbstractDistributionConfig_TCP_PORT_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_TCP_PORT), Integer.valueOf(MIN_TCP_PORT), Integer.valueOf(MAX_TCP_PORT)
 +    }));
 +
 +    m.put(MCAST_PORT, LocalizedStrings.AbstractDistributionConfig_MCAST_PORT_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_MCAST_PORT), Integer.valueOf(MIN_MCAST_PORT), Integer.valueOf(MAX_MCAST_PORT)
 +    }));
 +
 +    m.put(MCAST_ADDRESS, LocalizedStrings.AbstractDistributionConfig_MCAST_ADDRESS_NAME_0_1.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_MCAST_PORT), DEFAULT_MCAST_ADDRESS
 +    }));
 +
 +    m.put(MCAST_TTL, LocalizedStrings.AbstractDistributionConfig_MCAST_TTL_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_MCAST_TTL), Integer.valueOf(MIN_MCAST_TTL), Integer.valueOf(MAX_MCAST_TTL)
 +    }));
 +
 +    m.put(MCAST_SEND_BUFFER_SIZE, LocalizedStrings.AbstractDistributionConfig_MCAST_SEND_BUFFER_SIZE_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_MCAST_SEND_BUFFER_SIZE)));
 +
 +    m.put(MCAST_RECV_BUFFER_SIZE, LocalizedStrings.AbstractDistributionConfig_MCAST_RECV_BUFFER_SIZE_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_MCAST_RECV_BUFFER_SIZE)));
 +
 +    m.put(MCAST_FLOW_CONTROL, LocalizedStrings.AbstractDistributionConfig_MCAST_FLOW_CONTROL_NAME_0.toLocalizedString(DEFAULT_MCAST_FLOW_CONTROL));
 +
 +    m.put(MEMBER_TIMEOUT, LocalizedStrings.AbstractDistributionConfig_MEMBER_TIMEOUT_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_MEMBER_TIMEOUT)));
 +
      // for some reason the default port range is null under some circumstances
      int[] range = DEFAULT_MEMBERSHIP_PORT_RANGE;
 -    String srange = range==null? "not available" : "" + range[0] + "-" + range[1];
 -    String msg = LocalizedStrings.AbstractDistributionConfig_MEMBERSHIP_PORT_RANGE_NAME_0
 -                          .toLocalizedString(srange); 
 -    m.put(MEMBERSHIP_PORT_RANGE,
 -        msg);
 -
 -    m.put(UDP_SEND_BUFFER_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_UDP_SEND_BUFFER_SIZE_NAME_0
 -       .toLocalizedString(Integer.valueOf(DEFAULT_UDP_SEND_BUFFER_SIZE)));
 -
 -    m.put(UDP_RECV_BUFFER_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_UDP_RECV_BUFFER_SIZE_NAME_0
 -       .toLocalizedString(Integer.valueOf(DEFAULT_UDP_RECV_BUFFER_SIZE)));
 -
 -    m.put(UDP_FRAGMENT_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_UDP_FRAGMENT_SIZE_NAME_0
 -       .toLocalizedString(Integer.valueOf(DEFAULT_UDP_FRAGMENT_SIZE)));
 -
 -    m.put(SOCKET_LEASE_TIME,
 -      LocalizedStrings.AbstractDistributionConfig_SOCKET_LEASE_TIME_NAME_0_1_2
 -       .toLocalizedString(new Object[] { 
 -           Integer.valueOf(DEFAULT_SOCKET_LEASE_TIME),
 -           Integer.valueOf(MIN_SOCKET_LEASE_TIME), 
 -           Integer.valueOf(MAX_SOCKET_LEASE_TIME)}));
 - 
 -    m.put(SOCKET_BUFFER_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_SOCKET_BUFFER_SIZE_NAME_0_1_2
 -        .toLocalizedString(new Object[] {
 -           Integer.valueOf(DEFAULT_SOCKET_BUFFER_SIZE),
 -           Integer.valueOf(MIN_SOCKET_BUFFER_SIZE),
 -           Integer.valueOf(MAX_SOCKET_BUFFER_SIZE)}));
 -
 -    m.put(CONSERVE_SOCKETS,
 -      LocalizedStrings.AbstractDistributionConfig_CONSERVE_SOCKETS_NAME_0
 -        .toLocalizedString(Boolean.valueOf(DEFAULT_CONSERVE_SOCKETS)));
 -
 -    m.put(ROLES,
 -      LocalizedStrings.AbstractDistributionConfig_ROLES_NAME_0
 -        .toLocalizedString(DEFAULT_ROLES));
 -
 -    m.put(BIND_ADDRESS,
 -      LocalizedStrings.AbstractDistributionConfig_BIND_ADDRESS_NAME_0
 -        .toLocalizedString(DEFAULT_BIND_ADDRESS));
 -
 -    m.put(SERVER_BIND_ADDRESS,
 -      LocalizedStrings.AbstractDistributionConfig_SERVER_BIND_ADDRESS_NAME_0
 -        .toLocalizedString(DEFAULT_BIND_ADDRESS));
 -
 -    m.put(NAME, "A name that uniquely identifies a member in its distributed system." +
 -        " Multiple members in the same distributed system can not have the same name." +
 -        " Defaults to \"\".");
 -
 -    m.put(STATISTIC_ARCHIVE_FILE,
 -      LocalizedStrings.AbstractDistributionConfig_STATISTIC_ARCHIVE_FILE_NAME_0
 -        .toLocalizedString(DEFAULT_STATISTIC_ARCHIVE_FILE));
 -   
 -    m.put(STATISTIC_SAMPLE_RATE,
 -      LocalizedStrings.AbstractDistributionConfig_STATISTIC_SAMPLE_RATE_NAME_0_1_2
 -        .toLocalizedString(new Object[] {
 -           Integer.valueOf(DEFAULT_STATISTIC_SAMPLE_RATE),
 -           Integer.valueOf(MIN_STATISTIC_SAMPLE_RATE),
 -           Integer.valueOf(MAX_STATISTIC_SAMPLE_RATE)}));
 - 
 -    m.put(STATISTIC_SAMPLING_ENABLED,
 -      LocalizedStrings.AbstractDistributionConfig_STATISTIC_SAMPLING_ENABLED_NAME_0
 -        .toLocalizedString(
 -           Boolean.valueOf(DEFAULT_STATISTIC_SAMPLING_ENABLED)));
 -
 -    m.put(SSL_ENABLED,
 -      LocalizedStrings.AbstractDistributionConfig_SSL_ENABLED_NAME_0
 -        .toLocalizedString(
 -           Boolean.valueOf(DEFAULT_SSL_ENABLED)));
 -
 -    m.put(SSL_PROTOCOLS,
 -      LocalizedStrings.AbstractDistributionConfig_SSL_PROTOCOLS_NAME_0
 -        .toLocalizedString(DEFAULT_SSL_PROTOCOLS));
 -
 -    m.put(SSL_CIPHERS,
 -      LocalizedStrings.AbstractDistributionConfig_SSL_CIPHERS_NAME_0
 -        .toLocalizedString(DEFAULT_SSL_CIPHERS));
 -
 -    m.put(SSL_REQUIRE_AUTHENTICATION,
 -      LocalizedStrings.AbstractDistributionConfig_SSL_REQUIRE_AUTHENTICATION_NAME
 -        .toLocalizedString(Boolean.valueOf(DEFAULT_SSL_REQUIRE_AUTHENTICATION)));
 -    
 -    m.put(CLUSTER_SSL_ENABLED,
 -        LocalizedStrings.AbstractDistributionConfig_SSL_ENABLED_NAME_0
 -          .toLocalizedString(
 -             Boolean.valueOf(DEFAULT_CLUSTER_SSL_ENABLED)));
 -
 -    m.put(CLUSTER_SSL_PROTOCOLS,
 -        LocalizedStrings.AbstractDistributionConfig_SSL_PROTOCOLS_NAME_0
 -          .toLocalizedString(DEFAULT_CLUSTER_SSL_PROTOCOLS));
 -
 -    m.put(CLUSTER_SSL_CIPHERS,
 -        LocalizedStrings.AbstractDistributionConfig_SSL_CIPHERS_NAME_0
 -          .toLocalizedString(DEFAULT_CLUSTER_SSL_CIPHERS));
 -
 -    m.put(CLUSTER_SSL_REQUIRE_AUTHENTICATION,
 -        LocalizedStrings.AbstractDistributionConfig_SSL_REQUIRE_AUTHENTICATION_NAME
 -          .toLocalizedString(Boolean.valueOf(DEFAULT_CLUSTER_SSL_REQUIRE_AUTHENTICATION)));
 -    
 -    m.put(CLUSTER_SSL_KEYSTORE,"Location of the Java keystore file containing an distributed member's own certificate and private key.");
 -
 -    m.put(CLUSTER_SSL_KEYSTORE_TYPE,
 -        "For Java keystore file format, this property has the value jks (or JKS).");
 -
 -    m.put(CLUSTER_SSL_KEYSTORE_PASSWORD,"Password to access the private key from the keystore file specified by javax.net.ssl.keyStore.");
 -
 -    m.put(CLUSTER_SSL_TRUSTSTORE,"Location of the Java keystore file containing the collection of CA certificates trusted by distributed member (trust store).");
 -    
 -    m.put(CLUSTER_SSL_TRUSTSTORE_PASSWORD,"Password to unlock the keystore file (store password) specified by  javax.net.ssl.trustStore.");
 -    
 -    m.put(MAX_WAIT_TIME_RECONNECT,
 -      LocalizedStrings.AbstractDistributionConfig_MAX_WAIT_TIME_FOR_RECONNECT
 -        .toLocalizedString());
 -
 -    m.put(MAX_NUM_RECONNECT_TRIES,
 -      LocalizedStrings.AbstractDistributionConfig_MAX_NUM_RECONNECT_TRIES
 -        .toLocalizedString());
 -
 -    m.put(ASYNC_DISTRIBUTION_TIMEOUT,
 -      LocalizedStrings.AbstractDistributionConfig_ASYNC_DISTRIBUTION_TIMEOUT_NAME_0_1_2
 -        .toLocalizedString( new Object[] {
 -            Integer.valueOf(DEFAULT_ASYNC_DISTRIBUTION_TIMEOUT),
 -            Integer.valueOf(MIN_ASYNC_DISTRIBUTION_TIMEOUT),
 -            Integer.valueOf(MAX_ASYNC_DISTRIBUTION_TIMEOUT)}));
 -        
 -
 -    m.put(ASYNC_QUEUE_TIMEOUT,
 -      LocalizedStrings.AbstractDistributionConfig_ASYNC_QUEUE_TIMEOUT_NAME_0_1_2   
 -        .toLocalizedString( new Object[] {
 -          Integer.valueOf(DEFAULT_ASYNC_QUEUE_TIMEOUT),
 -          Integer.valueOf(MIN_ASYNC_QUEUE_TIMEOUT),
 -          Integer.valueOf(MAX_ASYNC_QUEUE_TIMEOUT)}));
 -    
 -    m.put(ASYNC_MAX_QUEUE_SIZE,
 -      LocalizedStrings.AbstractDistributionConfig_ASYNC_MAX_QUEUE_SIZE_NAME_0_1_2   
 -        .toLocalizedString( new Object[] {
 -          Integer.valueOf(DEFAULT_ASYNC_MAX_QUEUE_SIZE),
 -          Integer.valueOf(MIN_ASYNC_MAX_QUEUE_SIZE),
 -            Integer.valueOf(MAX_ASYNC_MAX_QUEUE_SIZE) }));
 -
 -    m.put(START_LOCATOR,
 -      LocalizedStrings.AbstractDistributionConfig_START_LOCATOR_NAME
 -        .toLocalizedString());
 -
 -    m.put(DURABLE_CLIENT_ID,
 -      LocalizedStrings.AbstractDistributionConfig_DURABLE_CLIENT_ID_NAME_0
 -        .toLocalizedString(DEFAULT_DURABLE_CLIENT_ID));
 -
 -    m.put(CONFLATE_EVENTS,
 -      LocalizedStrings.AbstractDistributionConfig_CLIENT_CONFLATION_PROP_NAME
 -        .toLocalizedString());
 -    
 -    m.put(DURABLE_CLIENT_TIMEOUT,
 -      LocalizedStrings.AbstractDistributionConfig_DURABLE_CLIENT_TIMEOUT_NAME_0
 -        .toLocalizedString(Integer.valueOf(DEFAULT_DURABLE_CLIENT_TIMEOUT)));
 -
 -    m.put(SECURITY_CLIENT_AUTH_INIT,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_AUTH_INIT_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_CLIENT_AUTH_INIT));
 -    
 +    String srange = range == null ? "not available" : "" + range[0] + "-" + range[1];
 +    String msg = LocalizedStrings.AbstractDistributionConfig_MEMBERSHIP_PORT_RANGE_NAME_0.toLocalizedString(srange);
 +    m.put(MEMBERSHIP_PORT_RANGE, msg);
 +
 +    m.put(UDP_SEND_BUFFER_SIZE, LocalizedStrings.AbstractDistributionConfig_UDP_SEND_BUFFER_SIZE_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_UDP_SEND_BUFFER_SIZE)));
 +
 +    m.put(UDP_RECV_BUFFER_SIZE, LocalizedStrings.AbstractDistributionConfig_UDP_RECV_BUFFER_SIZE_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_UDP_RECV_BUFFER_SIZE)));
 +
 +    m.put(UDP_FRAGMENT_SIZE, LocalizedStrings.AbstractDistributionConfig_UDP_FRAGMENT_SIZE_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_UDP_FRAGMENT_SIZE)));
 +
 +    m.put(SOCKET_LEASE_TIME, LocalizedStrings.AbstractDistributionConfig_SOCKET_LEASE_TIME_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_SOCKET_LEASE_TIME), Integer.valueOf(MIN_SOCKET_LEASE_TIME), Integer.valueOf(MAX_SOCKET_LEASE_TIME)
 +    }));
 +
 +    m.put(SOCKET_BUFFER_SIZE, LocalizedStrings.AbstractDistributionConfig_SOCKET_BUFFER_SIZE_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_SOCKET_BUFFER_SIZE), Integer.valueOf(MIN_SOCKET_BUFFER_SIZE), Integer.valueOf(MAX_SOCKET_BUFFER_SIZE)
 +    }));
 +
 +    m.put(CONSERVE_SOCKETS, LocalizedStrings.AbstractDistributionConfig_CONSERVE_SOCKETS_NAME_0.toLocalizedString(Boolean.valueOf(DEFAULT_CONSERVE_SOCKETS)));
 +
 +    m.put(ROLES, LocalizedStrings.AbstractDistributionConfig_ROLES_NAME_0.toLocalizedString(DEFAULT_ROLES));
 +
 +    m.put(BIND_ADDRESS, LocalizedStrings.AbstractDistributionConfig_BIND_ADDRESS_NAME_0.toLocalizedString(DEFAULT_BIND_ADDRESS));
 +
 +    m.put(SERVER_BIND_ADDRESS, LocalizedStrings.AbstractDistributionConfig_SERVER_BIND_ADDRESS_NAME_0.toLocalizedString(DEFAULT_BIND_ADDRESS));
 +
 +    m.put(NAME, "A name that uniquely identifies a member in its distributed system." + " Multiple members in the same distributed system can not have the same name." + " Defaults to \"\".");
 +
 +    m.put(STATISTIC_ARCHIVE_FILE, LocalizedStrings.AbstractDistributionConfig_STATISTIC_ARCHIVE_FILE_NAME_0.toLocalizedString(DEFAULT_STATISTIC_ARCHIVE_FILE));
 +
 +    m.put(STATISTIC_SAMPLE_RATE, LocalizedStrings.AbstractDistributionConfig_STATISTIC_SAMPLE_RATE_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_STATISTIC_SAMPLE_RATE), Integer.valueOf(MIN_STATISTIC_SAMPLE_RATE), Integer.valueOf(MAX_STATISTIC_SAMPLE_RATE)
 +    }));
 +
 +    m.put(STATISTIC_SAMPLING_ENABLED, LocalizedStrings.AbstractDistributionConfig_STATISTIC_SAMPLING_ENABLED_NAME_0.toLocalizedString(Boolean.valueOf(DEFAULT_STATISTIC_SAMPLING_ENABLED)));
 +
 +    m.put(SSL_CLUSTER_ALIAS, LocalizedStrings.AbstractDistributionConfig_CLUSTER_SSL_ALIAS_0.toLocalizedString(Boolean.valueOf(DEFAULT_SSL_ALIAS)));
 +
 +    m.put(CLUSTER_SSL_ENABLED, LocalizedStrings.AbstractDistributionConfig_SSL_ENABLED_NAME_0.toLocalizedString(Boolean.valueOf(DEFAULT_SSL_ENABLED)));
 +
 +    m.put(CLUSTER_SSL_PROTOCOLS, LocalizedStrings.AbstractDistributionConfig_SSL_PROTOCOLS_NAME_0.toLocalizedString(DEFAULT_SSL_PROTOCOLS));
 +
 +    m.put(CLUSTER_SSL_CIPHERS, LocalizedStrings.AbstractDistributionConfig_SSL_CIPHERS_NAME_0.toLocalizedString(DEFAULT_SSL_CIPHERS));
 +
 +    m.put(CLUSTER_SSL_REQUIRE_AUTHENTICATION, LocalizedStrings.AbstractDistributionConfig_SSL_REQUIRE_AUTHENTICATION_NAME.toLocalizedString(Boolean.valueOf(DEFAULT_SSL_REQUIRE_AUTHENTICATION)));
 +
 +    m.put(CLUSTER_SSL_KEYSTORE, "Location of the Java keystore file containing an distributed member's own certificate and private key.");
 +
 +    m.put(CLUSTER_SSL_KEYSTORE_TYPE, "For Java keystore file format, this property has the value jks (or JKS).");
 +
 +    m.put(CLUSTER_SSL_KEYSTORE_PASSWORD, "Password to access the private key from the keystore file specified by javax.net.ssl.keyStore.");
 +
 +    m.put(CLUSTER_SSL_TRUSTSTORE, "Location of the Java keystore file containing the collection of CA certificates trusted by distributed member (trust store).");
 +
 +    m.put(CLUSTER_SSL_TRUSTSTORE_PASSWORD, "Password to unlock the keystore file (store password) specified by  javax.net.ssl.trustStore.");
 +
 +    m.put(MAX_WAIT_TIME_RECONNECT, LocalizedStrings.AbstractDistributionConfig_MAX_WAIT_TIME_FOR_RECONNECT.toLocalizedString());
 +
 +    m.put(MAX_NUM_RECONNECT_TRIES, LocalizedStrings.AbstractDistributionConfig_MAX_NUM_RECONNECT_TRIES.toLocalizedString());
 +
 +    m.put(ASYNC_DISTRIBUTION_TIMEOUT, LocalizedStrings.AbstractDistributionConfig_ASYNC_DISTRIBUTION_TIMEOUT_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_ASYNC_DISTRIBUTION_TIMEOUT), Integer.valueOf(MIN_ASYNC_DISTRIBUTION_TIMEOUT), Integer.valueOf(MAX_ASYNC_DISTRIBUTION_TIMEOUT)
 +    }));
 +
 +
 +    m.put(ASYNC_QUEUE_TIMEOUT, LocalizedStrings.AbstractDistributionConfig_ASYNC_QUEUE_TIMEOUT_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_ASYNC_QUEUE_TIMEOUT), Integer.valueOf(MIN_ASYNC_QUEUE_TIMEOUT), Integer.valueOf(MAX_ASYNC_QUEUE_TIMEOUT)
 +    }));
 +
 +    m.put(ASYNC_MAX_QUEUE_SIZE, LocalizedStrings.AbstractDistributionConfig_ASYNC_MAX_QUEUE_SIZE_NAME_0_1_2.toLocalizedString(new Object[] {
 +      Integer.valueOf(DEFAULT_ASYNC_MAX_QUEUE_SIZE), Integer.valueOf(MIN_ASYNC_MAX_QUEUE_SIZE), Integer.valueOf(MAX_ASYNC_MAX_QUEUE_SIZE)
 +    }));
 +
 +    m.put(START_LOCATOR, LocalizedStrings.AbstractDistributionConfig_START_LOCATOR_NAME.toLocalizedString());
 +
 +    m.put(DURABLE_CLIENT_ID, LocalizedStrings.AbstractDistributionConfig_DURABLE_CLIENT_ID_NAME_0.toLocalizedString(DEFAULT_DURABLE_CLIENT_ID));
 +
 +    m.put(CONFLATE_EVENTS, LocalizedStrings.AbstractDistributionConfig_CLIENT_CONFLATION_PROP_NAME.toLocalizedString());
 +
 +    m.put(DURABLE_CLIENT_TIMEOUT, LocalizedStrings.AbstractDistributionConfig_DURABLE_CLIENT_TIMEOUT_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_DURABLE_CLIENT_TIMEOUT)));
 +
 +    m.put(SECURITY_CLIENT_AUTH_INIT, LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_AUTH_INIT_NAME_0.toLocalizedString(DEFAULT_SECURITY_CLIENT_AUTH_INIT));
 +
      m.put(ENABLE_NETWORK_PARTITION_DETECTION, "Whether network partitioning detection is enabled");
 -    
 +
      m.put(DISABLE_AUTO_RECONNECT, "Whether auto reconnect is attempted after a network partition");
  
 -    m.put(SECURITY_CLIENT_AUTHENTICATOR,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_AUTHENTICATOR_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_CLIENT_AUTHENTICATOR));
 +    m.put(SECURITY_CLIENT_AUTHENTICATOR, LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_AUTHENTICATOR_NAME_0.toLocalizedString(DEFAULT_SECURITY_CLIENT_AUTHENTICATOR));
  
-     m.put(SECURITY_CLIENT_DHALGO, LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_DHALGO_NAME_0.toLocalizedString(DEFAULT_SECURITY_CLIENT_DHALGO));
+     m.put(SECURITY_CLIENT_DHALGO,
+       LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_DHALGO_NAME_0
+         .toLocalizedString(DEFAULT_SECURITY_CLIENT_DHALGO));
 -    
++
+     m.put(SECURITY_UDP_DHALGO,
+         LocalizedStrings.AbstractDistributionConfig_SECURITY_UDP_DHALGO_NAME_0
+           .toLocalizedString(DEFAULT_SECURITY_UDP_DHALGO));
  
 -    m.put(SECURITY_PEER_AUTH_INIT,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_AUTH_INIT_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_PEER_AUTH_INIT));
 +    m.put(SECURITY_PEER_AUTH_INIT, LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_AUTH_INIT_NAME_0.toLocalizedString(DEFAULT_SECURITY_PEER_AUTH_INIT));
  
 -    m.put(SECURITY_PEER_AUTHENTICATOR,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_AUTHENTICATOR_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_PEER_AUTHENTICATOR));
 +    m.put(SECURITY_PEER_AUTHENTICATOR, LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_AUTHENTICATOR_NAME_0.toLocalizedString(DEFAULT_SECURITY_PEER_AUTHENTICATOR));
  
 -    m.put(SECURITY_CLIENT_ACCESSOR,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_ACCESSOR_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_CLIENT_ACCESSOR));
 +    m.put(SECURITY_CLIENT_ACCESSOR, LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_ACCESSOR_NAME_0.toLocalizedString(DEFAULT_SECURITY_CLIENT_ACCESSOR));
  
 -    m.put(SECURITY_CLIENT_ACCESSOR_PP,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_ACCESSOR_PP_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_CLIENT_ACCESSOR_PP));
 +    m.put(SECURITY_CLIENT_ACCESSOR_PP, LocalizedStrings.AbstractDistributionConfig_SECURITY_CLIENT_ACCESSOR_PP_NAME_0.toLocalizedString(DEFAULT_SECURITY_CLIENT_ACCESSOR_PP));
  
 -    m.put(SECURITY_LOG_LEVEL,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_LOG_LEVEL_NAME_0_1
 -        .toLocalizedString( new Object[] {
 -           LogWriterImpl.levelToString(DEFAULT_LOG_LEVEL), 
 -           LogWriterImpl.allowedLogLevels()}));
 +    m.put(SECURITY_LOG_LEVEL, LocalizedStrings.AbstractDistributionConfig_SECURITY_LOG_LEVEL_NAME_0_1.toLocalizedString(new Object[] {
 +      LogWriterImpl.levelToString(DEFAULT_LOG_LEVEL), LogWriterImpl.allowedLogLevels()
 +    }));
  
 -    m.put(SECURITY_LOG_FILE,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_LOG_FILE_NAME_0
 -        .toLocalizedString(DEFAULT_SECURITY_LOG_FILE));
 +    m.put(SECURITY_LOG_FILE, LocalizedStrings.AbstractDistributionConfig_SECURITY_LOG_FILE_NAME_0.toLocalizedString(DEFAULT_SECURITY_LOG_FILE));
  
 -    m.put(SECURITY_PEER_VERIFY_MEMBER_TIMEOUT,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME_0
 -	.toLocalizedString(Integer.valueOf(DEFAULT_SECURITY_PEER_VERIFYMEMBER_TIMEOUT)));
 +    m.put(SECURITY_PEER_VERIFY_MEMBER_TIMEOUT, LocalizedStrings.AbstractDistributionConfig_SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME_0.toLocalizedString(Integer.valueOf(DEFAULT_SECURITY_PEER_VERIFYMEMBER_TIMEOUT)));
  
 -    m.put(SECURITY_PREFIX,
 -      LocalizedStrings.AbstractDistributionConfig_SECURITY_PREFIX_NAME
 -        .toLocalizedString());
 +    m.put(SECURITY_PREFIX, LocalizedStrings.AbstractDistributionConfig_SECURITY_PREFIX_NAME.toLocalizedString());
  
 -    m.put(USERDEFINED_PREFIX_NAME,
 -        LocalizedStrings.AbstractDistributionConfig_USERDEFINED_PREFIX_NAME
 -          .toLocalizedString());
 +    m.put(USERDEFINED_PREFIX_NAME, LocalizedStrings.AbstractDistributionConfig_USERDEFINED_PREFIX_NAME.toLocalizedString());
  
 -    m.put(REMOVE_UNRESPONSIVE_CLIENT,
 -        LocalizedStrings.AbstractDistributionConfig_REMOVE_UNRESPONSIVE_CLIENT_PROP_NAME_0
 -          .toLocalizedString(DEFAULT_REMOVE_UNRESPONSIVE_CLIENT));
 +    m.put(REMOVE_UNRESPONSIVE_CLIENT, LocalizedStrings.AbstractDistributionConfig_REMOVE_UNRESPONSIVE_CLIENT_PROP_NAME_0.toLocalizedString(DEFAULT_REMOVE_UNRESPONSIVE_CLIENT));
  
      m.put(DELTA_PROPAGATION, "Whether delta propagation is enabled");
 -    
 -    m.put(REMOTE_LOCATORS,
 -        LocalizedStrings.AbstractDistributionConfig_REMOTE_DISTRIBUTED_SYSTEMS_NAME_0
 -          .toLocalizedString(DEFAULT_REMOTE_LOCATORS));
 -
 -    m.put(DISTRIBUTED_SYSTEM_ID, "An id that uniquely idenitifies this distributed system. " +
 -        "Required when using portable data exchange objects and the WAN." +
 -    		"Must be the same on each member in this distributed system if set.");
 -    m.put(ENFORCE_UNIQUE_HOST, "Whether to require partitioned regions to put " +
 -    		"redundant copies of data on different physical machines");
 -    
 -    m.put(REDUNDANCY_ZONE, "The zone that this member is in. When this is set, " +
 -    		"partitioned regions will not put two copies of the same data in the same zone.");
 -
 -    m.put(GROUPS, "A comma separated list of all the groups this member belongs to." +
 -        " Defaults to \"\".");
 -    
 +
 +    m.put(REMOTE_LOCATORS, LocalizedStrings.AbstractDistributionConfig_REMOTE_DISTRIBUTED_SYSTEMS_NAME_0.toLocalizedString(DEFAULT_REMOTE_LOCATORS));
 +
 +    m.put(DISTRIBUTED_SYSTEM_ID, "An id that uniquely idenitifies this distributed system. " + "Required when using portable data exchange objects and the WAN." + "Must be the same on each member in this distributed system if set.");
 +    m.put(ENFORCE_UNIQUE_HOST, "Whether to require partitioned regions to put " + "redundant copies of data on different physical machines");
 +
 +    m.put(REDUNDANCY_ZONE, "The zone that this member is in. When this is set, " + "partitioned regions will not put two copies of the same data in the same zone.");
 +
 +    m.put(GROUPS, "A comma separated list of all the groups this member belongs to." + " Defaults to \"\".");
 +
      m.put(USER_COMMAND_PACKAGES, "A comma separated list of the names of the packages containing classes that implement user commands.");
 -    
 +
      m.put(JMX_MANAGER, "If true then this member is willing to be a jmx manager. Defaults to false except on a locator.");
      m.put(JMX_MANAGER_START, "If true then the jmx manager will be started when the cache is created. Defaults to false.");
 -    m.put(JMX_MANAGER_SSL, "If true then the jmx manager will only allow SSL clients to connect. Defaults to false. This property is ignored if jmx-manager-port is \"0\".");
      m.put(JMX_MANAGER_SSL_ENABLED, "If true then the jmx manager will only allow SSL clients to connect. Defaults to false. This property is ignored if jmx-manager-port is \"0\".");
 -    m.put(JMX_MANAGER_SSL_CIPHERS, "List of available SSL cipher suites that are to be enabled for JMX Manager. Defaults to \""+DEFAULT_JMX_MANAGER_SSL_CIPHERS+"\" meaning your provider''s defaults.");
 -    m.put(JMX_MANAGER_SSL_PROTOCOLS, "List of available SSL protocols that are to be enabled for JMX Manager. Defaults to \""+DEFAULT_JMX_MANAGER_SSL_PROTOCOLS+"\" meaning defaults of your provider.");
 -    m.put(JMX_MANAGER_SSL_REQUIRE_AUTHENTICATION, "If set to false, ciphers and protocols that permit anonymous JMX Clients are allowed. Defaults to \""+DEFAULT_JMX_MANAGER_SSL_REQUIRE_AUTHENTICATION+"\".");
 -    m.put(JMX_MANAGER_SSL_KEYSTORE,"Location of the Java keystore file containing jmx manager's own certificate and private key.");
 +    m.put(SSL_JMX_MANAGER_ALIAS, LocalizedStrings.AbstractDistributionConfig_JMX_MANAGER_SSL_ALIAS_0.toLocalizedString(Boolean.valueOf(DEFAULT_SSL_ALIAS)));
 +    m.put(JMX_MANAGER_SSL_CIPHERS, "List of available SSL cipher suites that are to be enabled for JMX Manager. Defaults to \"" + DEFAULT_JMX_MANAGER_SSL_CIPHERS + "\" meaning your provider''s defaults.");
 +    m.put(JMX_MANAGER_SSL_PROTOCOLS, "List of available SSL protocols that are to be enabled for JMX Manager. Defaults to \"" + DEFAULT_JMX_MANAGER_SSL_PROTOCOLS + "\" meaning defaults of your provider.");
 +    m.put(JMX_MANAGER_SSL_REQUIRE_AUTHENTICATION, "If set to false, ciphers and protocols that permit anonymous JMX Clients are allowed. Defaults to \"" + DEFAULT_JMX_MANAGER_SSL_REQUIRE_AUTHENTICATION + "\".");
 +    m.put(JMX_MANAGER_SSL_KEYSTORE, "Location of the Java keystore file containing jmx manager's own certificate and private key.");
      m.put(JMX_MANAGER_SSL_KEYSTORE_TYPE, "For Java keystore file format, this property has the value jks (or JKS).");
 -    m.put(JMX_MANAGER_SSL_KEYSTORE_PASSWORD,"Password to access the private key from the keystore file specified by javax.net.ssl.keyStore. ");
 -    m.put(JMX_MANAGER_SSL_TRUSTSTORE,"Location of the Java keystore file containing the collection of CA certificates trusted by jmx manager.");
 -    m.put(JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD,"Password to unlock the keystore file (store password) specified by  javax.net.ssl.trustStore.");
 -    
 +    m.put(JMX_MANAGER_SSL_KEYSTORE_PASSWORD, "Password to access the private key from the keystore file specified by javax.net.ssl.keyStore. ");
 +    m.put(JMX_MANAGER_SSL_TRUSTSTORE, "Location of the Java keystore file containing the collection of CA certificates trusted by jmx manager.");
 +    m.put(JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD, "Password to unlock the keystore file (store password) specified by  javax.net.ssl.trustStore.");
 +
      m.put(JMX_MANAGER_PORT, "The port the jmx manager will listen on. Default is \"" + DEFAULT_JMX_MANAGER_PORT + "\". Set to zero to disable GemFire's creation of a jmx listening port.");
      m.put(JMX_MANAGER_BIND_ADDRESS, "The address the jmx manager will listen on for remote connections. Default is \"\" which causes the jmx manager to listen on the host's default address. This property is ignored if jmx-manager-port is \"0\".");
      m.put(JMX_MANAGER_HOSTNAME_FOR_CLIENTS, "The hostname that will be given to clients when they ask a locator for the location of this jmx manager. Default is \"\" which causes the locator to report the jmx manager's actual ip address as its location. This property is ignored if jmx-manager-port is \"0\".");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
index 23569a2,2ebb7d0..1ac92d0
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
@@@ -262,68 -198,47 +262,71 @@@ public class DistributionConfigImpl ext
    private int maxNumReconnectTries = DEFAULT_MAX_NUM_RECONNECT_TRIES;
  
  
 -  protected int asyncDistributionTimeout = DEFAULT_ASYNC_DISTRIBUTION_TIMEOUT;
 -  protected int asyncQueueTimeout = DEFAULT_ASYNC_QUEUE_TIMEOUT;
 -  protected int asyncMaxQueueSize = DEFAULT_ASYNC_MAX_QUEUE_SIZE;
 +  private int asyncDistributionTimeout = DEFAULT_ASYNC_DISTRIBUTION_TIMEOUT;
 +  private int asyncQueueTimeout = DEFAULT_ASYNC_QUEUE_TIMEOUT;
 +  private int asyncMaxQueueSize = DEFAULT_ASYNC_MAX_QUEUE_SIZE;
  
 -  /** @since GemFire 5.7 */
 +  /**
 +   * @since GemFire 5.7
 +   */
    private String clientConflation = CLIENT_CONFLATION_PROP_VALUE_DEFAULT;
  
 -  /** The id of the durable client */
 +  /**
 +   * The id of the durable client
 +   */
    private String durableClientId = DEFAULT_DURABLE_CLIENT_ID;
  
 -  /** The timeout of the durable client */
 +  /**
 +   * The timeout of the durable client
 +   */
    private int durableClientTimeout = DEFAULT_DURABLE_CLIENT_TIMEOUT;
  
 -  /** The client authentication initialization method name*/
 +  /**
 +   * The client authentication initialization method name
 +   */
    private String securityClientAuthInit = DEFAULT_SECURITY_CLIENT_AUTH_INIT;
  
 -  /** The client authenticating method name*/
 +  /**
 +   * The client authenticating method name
 +   */
    private String securityClientAuthenticator = DEFAULT_SECURITY_CLIENT_AUTHENTICATOR;
  
 -  /** The security manager class name*/
 +  /**
 +   * The security manager class name
 +   */
    private String securityManager = DEFAULT_SECURITY_MANAGER;
  
 -  /** The post processor class name*/
 +  /**
 +   * The post processor class name
 +   */
    private String postProcessor = DEFAULT_SECURITY_POST_PROCESSOR;
  
 -  /** The client Diffie-Hellman method name*/
 +  /**
 +   * The client Diffie-Hellman method name
 +   */
    private String securityClientDHAlgo = DEFAULT_SECURITY_CLIENT_DHALGO;
+   
+   /** The udp Diffie-Hellman method name*/
+   private String securityUDPDHAlgo = DEFAULT_SECURITY_UDP_DHALGO;
  
 -  /** The peer authentication initialization method name*/
 +  /**
 +   * The peer authentication initialization method name
 +   */
    private String securityPeerAuthInit = DEFAULT_SECURITY_PEER_AUTH_INIT;
  
 -  /** The peer authenticating method name*/
 +  /**
 +   * The peer authenticating method name
 +   */
    private String securityPeerAuthenticator = DEFAULT_SECURITY_PEER_AUTHENTICATOR;
  
 -  /** The client authorization method name*/
 +  /**
 +   * The client authorization method name
 +   */
    private String securityClientAccessor = DEFAULT_SECURITY_CLIENT_ACCESSOR;
  
 -  /** The post-processing client authorization method name*/
 +  /**
 +   * The post-processing client authorization method name
 +   */
    private String securityClientAccessorPP = DEFAULT_SECURITY_CLIENT_ACCESSOR_PP;
  
    /**
@@@ -2114,10 -1971,18 +2118,18 @@@
    public String getSecurityClientDHAlgo() {
      return securityClientDHAlgo;
    }
- 
+   
    public void setSecurityClientDHAlgo(String value) {
 -    securityClientDHAlgo = (String)checkAttribute(SECURITY_CLIENT_DHALGO, value);
 +    securityClientDHAlgo = (String) value;
    }
+   
+   public String getSecurityUDPDHAlgo() {
+     return securityUDPDHAlgo;
+   }
+ 
+   public void setSecurityUDPDHAlgo(String value) {
+     securityUDPDHAlgo = (String)checkAttribute(SECURITY_UDP_DHALGO, value);
+   }
  
    public String getSecurityPeerAuthInit() {
      return securityPeerAuthInit;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java
index 8511d8b,026efb9..0125ef2
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java
@@@ -621,21 -643,24 +621,23 @@@ public class InternalLocator extends Lo
      // coordinator - e.g., security and network-partition detection
      boolean locatorsAreCoordinators = false;
      boolean networkPartitionDetectionEnabled = this.config.getEnableNetworkPartitionDetection();
+     String securityUDPDHAlgo = this.config.getSecurityUDPDHAlgo();
      if (networkPartitionDetectionEnabled) {
        locatorsAreCoordinators = true;
 -    }
 -    else {
 +    } else {
        // check if security is enabled
        String prop = this.config.getSecurityPeerAuthInit();
 -      locatorsAreCoordinators =  (prop != null && prop.length() > 0);
 +      locatorsAreCoordinators = (prop != null && prop.length() > 0);
        if (!locatorsAreCoordinators) {
          locatorsAreCoordinators = Boolean.getBoolean(LOCATORS_PREFERRED_AS_COORDINATORS);
        }
      }
  
-     this.locatorImpl = MemberFactory.newLocatorHandler(this.bindAddress, this.stateFile, locatorsProp, locatorsAreCoordinators, networkPartitionDetectionEnabled, stats);
+     this.locatorImpl = MemberFactory.newLocatorHandler(this.bindAddress, this.stateFile,
+         locatorsProp, locatorsAreCoordinators, networkPartitionDetectionEnabled, stats, securityUDPDHAlgo);
      this.handler.addHandler(PeerLocatorRequest.class, this.locatorImpl);
      peerLocator = true;
 -    if(!server.isAlive()) {
 +    if (!server.isAlive()) {
        startTcpServer();
      }
    }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 3800b1d,1c6cf16..118c62c
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@@ -37,8 -38,8 +38,9 @@@ import com.gemstone.gemfire.distributed
  import com.gemstone.gemfire.distributed.internal.tcpserver.TcpClient;
  import com.gemstone.gemfire.internal.Version;
  import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 +import com.gemstone.gemfire.internal.net.*;
  import com.gemstone.gemfire.security.AuthenticationFailedException;
+ 
  import org.apache.logging.log4j.Logger;
  
  import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index d229f9d,ca23639..310c1ad
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@@ -38,33 -97,10 +97,11 @@@ import com.gemstone.gemfire.internal.ca
  import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
  import com.gemstone.gemfire.internal.logging.log4j.AlertAppender;
  import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 +import com.gemstone.gemfire.internal.net.SocketCreator;
  import com.gemstone.gemfire.internal.tcp.MemberShunnedException;
- import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
- import org.apache.logging.log4j.Logger;
- import org.jgroups.*;
- import org.jgroups.Message.Flag;
- import org.jgroups.Message.TransientFlag;
- import org.jgroups.conf.ClassConfigurator;
- import org.jgroups.protocols.UDP;
- import org.jgroups.protocols.pbcast.NAKACK2;
- import org.jgroups.stack.IpAddress;
- import org.jgroups.util.Digest;
- import org.jgroups.util.UUID;
  
- import java.io.*;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.net.UnknownHostException;
- import java.util.*;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.concurrent.atomic.AtomicLong;
- import java.util.stream.*;
+ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
  
- import static com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil.replaceStrings;
- import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_REQUEST;
- import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_RESPONSE;
  
  @SuppressWarnings("StatementWithEmptyBody")
  public class JGroupsMessenger implements Messenger {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
index 5efd5ce,6132276..1dac980
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
@@@ -219,27 -255,42 +221,41 @@@ public class DistributedMulticastRegion
      p.put(MCAST_TTL, mcastttl);
      p.put(LOCATORS, "localhost[" + locatorPort + "]");
      p.put(LOG_LEVEL, "info");
+     addDSProps(p);
      return p;
+   } 
+   
+   protected void addDSProps(Properties p) {
    }
 -  
 +
-   private void validateMulticastOpsAfterRegionOps() {
+   protected void validateMulticastOpsAfterRegionOps() {
      int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
      int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
-     assertTrue("Should have multicast writes or reads. Writes=  " + writes + " ,read= " + reads, writes > 0 || reads > 0);
+     assertTrue("Should have multicast writes or reads. Writes=  " + writes +  " ,read= " + reads, 
+         writes > 0 || reads > 0);
 -    
++
+     validateUDPEncryptionStats();
+   }
 -  
++
+   protected void validateUDPEncryptionStats() {
+     long encrptTime = getGemfireCache().getDistributionManager().getStats().getUDPMsgEncryptionTiime();
+     long decryptTime = getGemfireCache().getDistributionManager().getStats().getUDPMsgDecryptionTime();
 -    assertTrue("Should have multicast writes or reads. encrptTime=  " + encrptTime +  " ,decryptTime= " + decryptTime, 
++    assertTrue("Should have multicast writes or reads. encrptTime=  " + encrptTime +  " ,decryptTime= " + decryptTime,
+         encrptTime == 0 && decryptTime == 0);
    }
 -  
 +
    private void validateMulticastOpsBeforeRegionOps() {
      int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
      int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
      int total = writes + reads;
 -    assertTrue("Should not have any multicast writes or reads before region ops. Writes=  " + writes +  " ,read= " + reads, 
 -        total == 0);
 +    assertTrue("Should not have any multicast writes or reads before region ops. Writes=  " + writes + " ,read= " + reads, total == 0);
    }
 -  
 +
    private int startLocator() {
-     final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
-     final int locatorPort = ports[0];
+   final int [] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+   final int locatorPort = ports[0];
 -  
 +
-     VM locator1Vm = Host.getHost(0).getVM(locatorVM);
+   VM locator1Vm = Host.getHost(0).getVM(locatorVM);;
      locator1Vm.invoke(new SerializableCallable() {
        @Override
        public Object call() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
index 4a82789,81473da..61d2e91
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
@@@ -92,9 -93,10 +92,9 @@@ public class LocatorDUnitTest extends J
  
    private static final String WAIT2_MS_NAME = "LocatorDUnitTest.WAIT2_MS";
    private static final int WAIT2_MS_DEFAULT = 5000; // 2000 -- see bug 36470
 -  private static final int WAIT2_MS
 -      = Integer.getInteger(WAIT2_MS_NAME, WAIT2_MS_DEFAULT).intValue();
 +  private static final int WAIT2_MS = Integer.getInteger(WAIT2_MS_NAME, WAIT2_MS_DEFAULT).intValue();
  
-   private int port1;
+   protected int port1;
    private int port2;
  
    @Override
@@@ -130,7 -132,12 +130,12 @@@
        system = null;
      }
    }
 -  
 -  //for child classes 
 +
++  //for child classes
+   protected void addDSProps(Properties p) {
 -    
++
+   }
+ 
    ////////  Test Methods
  
    /**
@@@ -161,9 -168,11 +166,10 @@@
      properties.put(SECURITY_PEER_AUTHENTICATOR, "com.gemstone.gemfire.distributed.MyAuthenticator.create");
      properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
      properties.put(USE_CLUSTER_CONFIGURATION, "false");
+     addDSProps(properties);
      system = (InternalDistributedSystem) DistributedSystem.connect(properties);
      InternalDistributedMember mbr = system.getDistributedMember();
 -    assertEquals("expected the VM to have NORMAL vmKind",
 -        DistributionManager.NORMAL_DM_TYPE, system.getDistributedMember().getVmKind());
 +    assertEquals("expected the VM to have NORMAL vmKind", DistributionManager.NORMAL_DM_TYPE, system.getDistributedMember().getVmKind());
  
      properties.remove(START_LOCATOR);
      properties.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
@@@ -292,143 -304,89 +298,143 @@@
      properties.put(MEMBER_TIMEOUT, "2000");
      properties.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
      properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
--
+     addDSProps(properties);
 -    SerializableCallable startLocator1 = new SerializableCallable("start locator1") {
 -      @Override
 -      public Object call() throws Exception {
 -        try {
 -          System.setProperty("p2p.joinTimeout", "5000"); // set a short join timeout.  default is 17000ms
 -          Locator myLocator = Locator.startLocatorAndDS(port1, new File(""), properties);
 -        } catch (SystemConnectException e) {
 -          return Boolean.FALSE;
 -        } catch (GemFireConfigException e) {
 -          return Boolean.FALSE;
 -        } finally {
 -          System.getProperties().remove("p2p.joinTimeout");
 -        }
 -        return Boolean.TRUE;
 +    try {
 +      loc2.invoke("startLocator2", () -> startLocatorWithPortAndProperties(port2, properties));
 +      loc1.invoke("startLocator1", () -> startLocatorWithPortAndProperties(port1, properties));
 +    } finally {
 +      try {
 +        // verify that they found each other
 +        loc2.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
 +        loc1.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
 +      } finally {
 +        loc2.invoke("stop locator", () -> stopLocator());
 +        loc1.invoke("stop locator", () -> stopLocator());
        }
 -    };
 -    SerializableCallable startLocator2 = new SerializableCallable("start locator2") {
 -      @Override
 -      public Object call() throws Exception {
 -        try {
 -          System.setProperty("p2p.joinTimeout", "5000"); // set a short join timeout.  default is 17000ms
 -          Locator myLocator = Locator.startLocatorAndDS(port2, new File(""), properties);
 -        } catch (SystemConnectException e) {
 -          return Boolean.FALSE;
 -        } finally {
 -          System.getProperties().remove("p2p.joinTimeout");
 -        }
 -        return Boolean.TRUE;
 +    }
 +  }
 +
 +  private Boolean startLocatorWithPortAndProperties(final int port, final Properties properties) throws IOException {
 +    try {
 +      System.setProperty("p2p.joinTimeout", "5000"); // set a short join timeout.  default is 17000ms
 +      Locator.startLocatorAndDS(port, new File(""), properties);
 +    } catch (SystemConnectException e) {
 +      return Boolean.FALSE;
 +    } catch (GemFireConfigException e) {
 +      return Boolean.FALSE;
 +    } finally {
 +      System.getProperties().remove("p2p.joinTimeout");
 +    }
 +    return Boolean.TRUE;
 +  }
 +
 +  private String getSingleKeyKeystore() {
 +    return TestUtil.getResourcePath(getClass(), "/ssl/trusted.keystore");
 +  }
 +
 +
 +  private String getMultiKeyKeystore() {
 +    return TestUtil.getResourcePath(getClass(), "/com/gemstone/gemfire/internal/net/multiKey.jks");
 +  }
 +
 +  private String getMultiKeyTruststore() {
 +    return TestUtil.getResourcePath(getClass(), "/com/gemstone/gemfire/internal/net/multiKeyTrust.jks");
 +  }
 +
 +  @Test
 +  public void testStartTwoLocatorsWithSingleKeystoreSSL() throws Exception {
 +    disconnectAllFromDS();
 +    Host host = Host.getHost(0);
 +    VM loc1 = host.getVM(1);
 +    VM loc2 = host.getVM(2);
 +
 +    int ports[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
 +    final int port1 = ports[0];
 +    this.port1 = port1;
 +    final int port2 = ports[1];
 +    this.port2 = port2; // for cleanup in tearDown2
 +    DistributedTestUtils.deleteLocatorStateFile(port1);
 +    DistributedTestUtils.deleteLocatorStateFile(port2);
 +    final String host0 = NetworkUtils.getServerHostName(host);
 +    final String locators = host0 + "[" + port1 + "]," + host0 + "[" + port2 + "]";
 +    final Properties properties = new Properties();
 +    properties.put(MCAST_PORT, "0");
 +    properties.put(LOCATORS, locators);
 +    properties.put(ENABLE_NETWORK_PARTITION_DETECTION, "false");
 +    properties.put(DISABLE_AUTO_RECONNECT, "true");
 +    properties.put(MEMBER_TIMEOUT, "2000");
 +    properties.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
 +    properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
 +    properties.put(SSL_CIPHERS, "any");
 +    properties.put(SSL_PROTOCOLS, "any");
 +    properties.put(SSL_KEYSTORE, getSingleKeyKeystore());
 +    properties.put(SSL_KEYSTORE_PASSWORD, "password");
 +    properties.put(SSL_KEYSTORE_TYPE, "JKS");
 +    properties.put(SSL_TRUSTSTORE, getSingleKeyKeystore());
 +    properties.put(SSL_TRUSTSTORE_PASSWORD, "password");
 +    properties.put(SSL_ENABLED_COMPONENTS, SecurableComponent.LOCATOR.getConstant());
 +
 +    try {
 +      loc2.invoke("startLocator2", () -> startLocatorWithPortAndProperties(port2, properties));
 +      loc1.invoke("startLocator1", () -> startLocatorWithPortAndProperties(port1, properties));
 +    } finally {
 +      try {
 +        // verify that they found each other
 +        loc2.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
 +        loc1.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
 +      } finally {
 +        loc2.invoke("stop locator", () -> stopLocator());
 +        loc1.invoke("stop locator", () -> stopLocator());
        }
 -    };
 -    AsyncInvocation async1 = null;
 -    AsyncInvocation async2 = null;
 +    }
 +  }
 +
 +  @Test
 +  public void testStartTwoLocatorsWithMultiKeystoreSSL() throws Exception {
 +    disconnectAllFromDS();
 +    Host host = Host.getHost(0);
 +    VM loc1 = host.getVM(1);
 +    VM loc2 = host.getVM(2);
 +
 +    int ports[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
 +    final int port1 = ports[0];
 +    this.port1 = port1;
 +    final int port2 = ports[1];
 +    this.port2 = port2; // for cleanup in tearDown2
 +    DistributedTestUtils.deleteLocatorStateFile(port1);
 +    DistributedTestUtils.deleteLocatorStateFile(port2);
 +    final String host0 = NetworkUtils.getServerHostName(host);
 +    final String locators = host0 + "[" + port1 + "]," + host0 + "[" + port2 + "]";
 +    final Properties properties = new Properties();
 +    properties.put(MCAST_PORT, "0");
 +    properties.put(LOCATORS, locators);
 +    properties.put(ENABLE_NETWORK_PARTITION_DETECTION, "false");
 +    properties.put(DISABLE_AUTO_RECONNECT, "true");
 +    properties.put(MEMBER_TIMEOUT, "2000");
 +    properties.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
 +    properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
 +    properties.put(SSL_CIPHERS, "any");
 +    properties.put(SSL_PROTOCOLS, "any");
 +    properties.put(SSL_KEYSTORE, getMultiKeyKeystore());
 +    properties.put(SSL_KEYSTORE_PASSWORD, "password");
 +    properties.put(SSL_KEYSTORE_TYPE, "JKS");
 +    properties.put(SSL_TRUSTSTORE, getMultiKeyTruststore());
 +    properties.put(SSL_TRUSTSTORE_PASSWORD, "password");
 +    properties.put(SSL_LOCATOR_ALIAS, "locatorkey");
 +    properties.put(SSL_ENABLED_COMPONENTS, SecurableComponent.LOCATOR.getConstant());
 +
 +
      try {
 -      async2 = loc2.invokeAsync(startLocator2);
 -      Wait.pause(2000);
 -      async1 = loc1.invokeAsync(startLocator1);
 +      loc2.invoke("startLocator2", () -> startLocatorWithPortAndProperties(port2, properties));
 +      loc1.invoke("startLocator1", () -> startLocatorWithPortAndProperties(port1, properties));
      } finally {
        try {
 -        if (async1 != null) {
 -          async1.join(45000);
 -          if (async1.isAlive()) {
 -            ThreadUtils.dumpAllStacks();
 -          }
 -          if (async2 != null) {
 -            async2.join();
 -            Object result1 = async1.getReturnValue();
 -            if (result1 instanceof Exception) {
 -              throw (Exception) result1;
 -            }
 -            Object result2 = async2.getReturnValue();
 -            if (result2 instanceof Exception) {
 -              throw (Exception) result2;
 -            }
 -            // verify that they found each other
 -            SerializableCallable verify = new SerializableCallable("verify no split-brain") {
 -              public Object call() {
 -                InternalDistributedSystem sys = InternalDistributedSystem.getAnyInstance();
 -                if (sys == null) {
 -                  fail("no distributed system found");
 -                }
 -                Assert.assertTrue(sys.getDM().getViewMembers().size() == 2,
 -                    "expected 2 members but found " + sys.getDM().getViewMembers().size()
 -                );
 -                return true;
 -              }
 -            };
 -            loc2.invoke(verify);
 -            loc1.invoke(verify);
 -          }
 -        }
 +        // verify that they found each other
 +        loc2.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
 +        loc1.invoke("verifyLocatorNotInSplitBrain", () -> verifyLocatorNotInSplitBrain(2));
        } finally {
 -        SerializableRunnable r = new SerializableRunnable("stop locator") {
 -          public void run() {
 -            Locator loc = Locator.getLocator();
 -            if (loc != null) {
 -              loc.stop();
 -            }
 -          }
 -        };
 -        loc2.invoke(r);
 -        loc1.invoke(r);
 +        loc2.invoke("stop locator", () -> stopLocator());
 +        loc1.invoke("stop locator", () -> stopLocator());
        }
      }
    }
@@@ -1151,20 -952,23 +1161,21 @@@
      properties.put(MEMBER_TIMEOUT, "2000");
      properties.put(ENABLE_CLUSTER_CONFIGURATION, "false");
  
+     addDSProps(properties);
 -    SerializableRunnable disconnect =
 -        new SerializableRunnable("Disconnect from " + locators) {
 -          public void run() {
 -            DistributedSystem sys = InternalDistributedSystem.getAnyInstance();
 -            if (sys != null && sys.isConnected()) {
 -              sys.disconnect();
 -            }
 -            MembershipManagerHelper.inhibitForcedDisconnectLogging(false);
 -          }
 -        };
 -    SerializableRunnable expectedException =
 -        new SerializableRunnable("Add expected exceptions") {
 -          public void run() {
 -            MembershipManagerHelper.inhibitForcedDisconnectLogging(true);
 -          }
 -        };
 +    SerializableRunnable disconnect = new SerializableRunnable("Disconnect from " + locators) {
 +      public void run() {
 +        DistributedSystem sys = InternalDistributedSystem.getAnyInstance();
 +        if (sys != null && sys.isConnected()) {
 +          sys.disconnect();
 +        }
 +        MembershipManagerHelper.inhibitForcedDisconnectLogging(false);
 +      }
 +    };
 +    SerializableRunnable expectedException = new SerializableRunnable("Add expected exceptions") {
 +      public void run() {
 +        MembershipManagerHelper.inhibitForcedDisconnectLogging(true);
 +      }
 +    };
      try {
        final String uname = getUniqueName();
        locvm.invoke(new SerializableRunnable() {
@@@ -1253,11 -1066,15 +1264,12 @@@
      props.setProperty(MCAST_PORT, "0");
      props.setProperty(LOCATORS, locators);
  
+     addDSProps(props);
      final String expected = "java.net.ConnectException";
 -    final String addExpected =
 -        "<ExpectedException action=add>" + expected + "</ExpectedException>";
 -    final String removeExpected =
 -        "<ExpectedException action=remove>" + expected + "</ExpectedException>";
 +    final String addExpected = "<ExpectedException action=add>" + expected + "</ExpectedException>";
 +    final String removeExpected = "<ExpectedException action=remove>" + expected + "</ExpectedException>";
  
 -    LogWriter bgexecLogger =
 -        new LocalLogWriter(InternalLogWriter.ALL_LEVEL, System.out);
 +    LogWriter bgexecLogger = new LocalLogWriter(InternalLogWriter.ALL_LEVEL, System.out);
      bgexecLogger.info(addExpected);
  
      boolean exceptionOccurred = true;
@@@ -1321,6 -1139,7 +1333,7 @@@
            locProps.setProperty(MEMBER_TIMEOUT, "1000");
            locProps.put(ENABLE_CLUSTER_CONFIGURATION, "false");
  
 -          addDSProps(locProps);  
++          addDSProps(locProps);
            Locator.startLocatorAndDS(port, logFile, locProps);
          } catch (IOException ex) {
            com.gemstone.gemfire.test.dunit.Assert.fail("While starting locator on port " + port, ex);
@@@ -1538,21 -1374,44 +1556,22 @@@
      dsProps.setProperty(LOCATORS, locators);
      dsProps.setProperty(MCAST_PORT, "0");
      dsProps.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
 -    addDSProps(dsProps);
 -    vm0.invoke(new SerializableRunnable("Start locator on " + port1) {
 -      public void run() {
 -        File logFile = new File("");
 -        try {
 -          Locator.startLocatorAndDS(port1, logFile, dsProps);
 -        } catch (IOException ex) {
 -          com.gemstone.gemfire.test.dunit.Assert.fail("While starting locator on port " + port1, ex);
 -        }
 -      }
 -    });
 -    try {
  
 -      //try { Thread.currentThread().sleep(4000); } catch (InterruptedException ie) { }
 -
 -      vm3.invoke(new SerializableRunnable("Start locator on " + port2) {
 -        public void run() {
 -          File logFile = new File("");
 -          try {
 -            Locator.startLocatorAndDS(port2, logFile, dsProps);
 +    vm0.invoke("start Locator1", () -> startLocator(port1, dsProps));
 +    try {
  
 -          } catch (IOException ex) {
 -            com.gemstone.gemfire.test.dunit.Assert.fail("While starting locator on port " + port2, ex);
 -          }
 -        }
 -      });
 +      vm3.invoke("Start locator on " + port2, () -> startLocator(port2, dsProps));
        try {
  
 -        SerializableRunnable connect =
 -            new SerializableRunnable("Connect to " + locators) {
 -              public void run() {
 -                Properties props = new Properties();
 -                props.setProperty(MCAST_PORT, "0");
 -                props.setProperty(LOCATORS, locators);
 -                addDSProps(props);
 -                DistributedSystem.connect(props);
 -              }
 -            };
 +        SerializableRunnable connect = new SerializableRunnable("Connect to " + locators) {
 +          public void run() {
 +            Properties props = new Properties();
 +            props.setProperty(MCAST_PORT, "0");
 +            props.setProperty(LOCATORS, locators);
++            addDSProps(properties);
 +            DistributedSystem.connect(props);
 +          }
 +        };
          vm1.invoke(connect);
          vm2.invoke(connect);
  
@@@ -1605,7 -1465,14 +1625,14 @@@
        }
      };
    }
 -  
 +
+   public void testLoop() throws Exception {
+     for(int i=0; i < 200; i++) {
+       testMultipleLocatorsRestartingAtSameTime();
+       tearDown();
+       setUp();
+     }
+   }
    /**
     * Tests starting multiple locators at the same time and ensuring that the locators
     * end up only have 1 master.
@@@ -1869,17 -1744,19 +1899,18 @@@
        }
      });
  
 -    SerializableRunnable connect =
 -        new SerializableRunnable("Connect to " + locators) {
 -          public void run() {
 -            Properties props = new Properties();
 -            props.setProperty(MCAST_PORT, String.valueOf(mcastport));
 -            props.setProperty(LOCATORS, locators);
 -            props.setProperty(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
 -            props.setProperty(MCAST_TTL, "0");
 -            props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
 -            addDSProps(props);
 -            DistributedSystem.connect(props);
 -          }
 -        };
 +    SerializableRunnable connect = new SerializableRunnable("Connect to " + locators) {
 +      public void run() {
 +        Properties props = new Properties();
 +        props.setProperty(MCAST_PORT, String.valueOf(mcastport));
 +        props.setProperty(LOCATORS, locators);
 +        props.setProperty(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
 +        props.setProperty(MCAST_TTL, "0");
 +        props.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "true");
++        addDSProps(properties);
 +        DistributedSystem.connect(props);
 +      }
 +    };
      try {
        vm1.invoke(connect);
        vm2.invoke(connect);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
index 3680a39,2b8bd14..f262e98
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
@@@ -81,7 -81,7 +81,7 @@@ public class DistributionConfigJUnitTes
    @Test
    public void testGetAttributeNames() {
      String[] attNames = AbstractDistributionConfig._getAttNames();
-     assertEquals(attNames.length, 156);
 -    assertEquals(attNames.length, 145);
++    assertEquals(attNames.length, 157);
  
      List boolList = new ArrayList();
      List intList = new ArrayList();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
index 996fbf6,c30a441..26c4965
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
@@@ -27,9 -47,10 +47,10 @@@ import com.gemstone.gemfire.distributed
  import com.gemstone.gemfire.distributed.internal.membership.gms.messages.*;
  import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
  import com.gemstone.gemfire.internal.AvailablePortHelper;
 -import com.gemstone.gemfire.internal.SocketCreator;
 +import com.gemstone.gemfire.internal.net.SocketCreator;
  import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
  import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+ 
  import org.apache.logging.log4j.Level;
  import org.junit.AfterClass;
  import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a3a5a04c/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
----------------------------------------------------------------------