You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2018/01/05 21:02:55 UTC

[geode] 01/03: GEODE-3965: rename DistributionManager classes

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

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 75c04138a42bed3edda1f6391b71c45280fe3ef7
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Thu Jan 4 11:58:16 2018 -0800

    GEODE-3965: rename DistributionManager classes
    
    * DistributionManager -> ClusterDistributionManager
    * DM -> DistributionManager
    * LonerDistributionManager remains LonerDistributionManager
---
 .../geode/modules/util/BootstrappingFunction.java  |    5 +-
 .../apache/geode/admin/GemFireMemberStatus.java    |    4 +-
 .../admin/internal/AbstractHealthEvaluator.java    |    4 +-
 .../admin/internal/AdminDistributedSystemImpl.java |   35 +-
 .../geode/admin/internal/CacheHealthEvaluator.java |    8 +-
 .../geode/admin/internal/CacheServerImpl.java      |    7 +-
 .../internal/DistributedSystemHealthEvaluator.java |   14 +-
 .../admin/internal/DistributionLocatorImpl.java    |    5 +-
 .../admin/internal/GemFireHealthEvaluator.java     |    4 +-
 .../admin/internal/MemberHealthEvaluator.java      |    4 +-
 .../internal/SystemMemberCacheEventProcessor.java  |    4 +-
 .../apache/geode/admin/jmx/internal/AgentImpl.java |    6 +-
 .../geode/admin/jmx/internal/AgentLauncher.java    |    4 +-
 .../client/internal/CacheServerLoadMessage.java    |    4 +-
 .../geode/distributed/DistributedSystem.java       |    6 +-
 .../internal/ClusterConfigurationService.java      |    2 +-
 ...anager.java => ClusterDistributionManager.java} |  114 +-
 .../internal/CollectingReplyProcessor.java         |    2 +-
 .../org/apache/geode/distributed/internal/DM.java  |  489 ---
 .../distributed/internal/DirectReplyProcessor.java |   23 +-
 .../distributed/internal/DistributionAdvisee.java  |    4 +-
 .../distributed/internal/DistributionAdvisor.java  |    6 +-
 .../distributed/internal/DistributionManager.java  | 4539 ++------------------
 .../distributed/internal/DistributionMessage.java  |   18 +-
 .../internal/DistributionMessageObserver.java      |    6 +-
 .../distributed/internal/HealthMonitorImpl.java    |    4 +-
 .../internal/HighPriorityAckedMessage.java         |    6 +-
 .../internal/HighPriorityDistributionMessage.java  |    2 +-
 .../internal/InternalDistributedSystem.java        |   19 +-
 .../distributed/internal/InternalLocator.java      |    6 +-
 .../internal/LonerDistributionManager.java         |    4 +-
 .../distributed/internal/MembershipListener.java   |    2 +-
 .../internal/PooledDistributionMessage.java        |    2 +-
 .../geode/distributed/internal/ProductUseLog.java  |    2 +-
 .../internal/ReliableReplyProcessor21.java         |    4 +-
 .../geode/distributed/internal/ReplyMessage.java   |    6 +-
 .../distributed/internal/ReplyProcessor21.java     |   39 +-
 .../geode/distributed/internal/ReplySender.java    |    4 +-
 .../distributed/internal/SerialAckedMessage.java   |    6 +-
 .../internal/SerialDistributionMessage.java        |    2 +-
 .../geode/distributed/internal/ServerLocator.java  |    2 +-
 .../distributed/internal/ShutdownMessage.java      |    2 +-
 .../geode/distributed/internal/StartupMessage.java |    9 +-
 .../internal/StartupMessageReplyProcessor.java     |    6 +-
 .../distributed/internal/StartupOperation.java     |    4 +-
 .../internal/StartupResponseMessage.java           |    4 +-
 .../StartupResponseWithVersionMessage.java         |    5 +-
 .../internal/WaitForViewInstallation.java          |    6 +-
 .../distributed/internal/direct/DirectChannel.java |   10 +-
 .../internal/direct/DirectChannelListener.java     |    4 +-
 .../distributed/internal/locks/DLockGrantor.java   |    8 +-
 .../internal/locks/DLockQueryProcessor.java        |   16 +-
 .../locks/DLockRecoverGrantorProcessor.java        |   23 +-
 .../internal/locks/DLockReleaseProcessor.java      |   16 +-
 .../internal/locks/DLockRequestProcessor.java      |   33 +-
 .../distributed/internal/locks/DLockService.java   |   14 +-
 .../distributed/internal/locks/DLockToken.java     |    8 +-
 .../internal/locks/DeposeGrantorProcessor.java     |   14 +-
 .../internal/locks/DistributedMemberLock.java      |    4 +-
 .../internal/locks/ElderInitProcessor.java         |   15 +-
 .../distributed/internal/locks/ElderState.java     |    8 +-
 .../internal/locks/GrantorRequestProcessor.java    |   20 +-
 .../distributed/internal/locks/LockGrantorId.java  |    8 +-
 .../locks/NonGrantorDestroyedProcessor.java        |   20 +-
 .../membership/DistributedMembershipListener.java  |    1 -
 .../membership/InternalDistributedMember.java      |   39 +-
 .../internal/membership/InternalRole.java          |    6 +-
 .../internal/membership/MemberAttributes.java      |    4 +-
 .../distributed/internal/membership/NetView.java   |   24 +-
 .../gms/locator/FindCoordinatorRequest.java        |    5 +-
 .../gms/locator/FindCoordinatorResponse.java       |    4 +-
 .../membership/gms/locator/GMSLocator.java         |    4 +-
 .../membership/gms/membership/GMSJoinLeave.java    |    9 +-
 .../gms/messages/FinalCheckPassedMessage.java      |    4 +-
 .../membership/gms/messages/HeartbeatMessage.java  |    4 +-
 .../gms/messages/HeartbeatRequestMessage.java      |    4 +-
 .../gms/messages/InstallViewMessage.java           |    8 +-
 .../gms/messages/JoinRequestMessage.java           |    4 +-
 .../gms/messages/JoinResponseMessage.java          |    8 +-
 .../gms/messages/LeaveRequestMessage.java          |    4 +-
 .../gms/messages/NetworkPartitionMessage.java      |    4 +-
 .../gms/messages/RemoveMemberMessage.java          |    5 +-
 .../gms/messages/SuspectMembersMessage.java        |    4 +-
 .../membership/gms/messages/ViewAckMessage.java    |    4 +-
 .../membership/gms/messenger/JGroupsMessenger.java |   12 +-
 .../membership/gms/mgr/GMSMembershipManager.java   |   12 +-
 .../membership/gms/mgr/LocalViewMessage.java       |    6 +-
 .../internal/streaming/StreamingOperation.java     |   17 +-
 .../geode/internal/InternalDataSerializer.java     |    4 +-
 .../geode/internal/InternalInstantiator.java       |    6 +-
 .../internal/admin/ClientMembershipMessage.java    |    6 +-
 .../geode/internal/admin/GfManagerAgent.java       |    4 +-
 .../geode/internal/admin/StatAlertsManager.java    |   10 +-
 .../admin/remote/AddHealthListenerRequest.java     |    2 +-
 .../admin/remote/AddHealthListenerResponse.java    |    4 +-
 .../admin/remote/AddStatListenerRequest.java       |    2 +-
 .../admin/remote/AddStatListenerResponse.java      |    4 +-
 .../remote/AdminConsoleDisconnectMessage.java      |    4 +-
 .../internal/admin/remote/AdminConsoleMessage.java |    9 +-
 .../admin/remote/AdminMultipleReplyProcessor.java  |    4 +-
 .../geode/internal/admin/remote/AdminRequest.java  |    8 +-
 .../geode/internal/admin/remote/AdminResponse.java |    2 +-
 .../geode/internal/admin/remote/AdminWaiters.java  |    6 +-
 .../admin/remote/AlertLevelChangeMessage.java      |    4 +-
 .../admin/remote/AlertListenerMessage.java         |    2 +-
 .../admin/remote/AlertsNotificationMessage.java    |    4 +-
 .../admin/remote/AppCacheSnapshotMessage.java      |    2 +-
 .../internal/admin/remote/BridgeServerRequest.java |    4 +-
 .../admin/remote/BridgeServerResponse.java         |    4 +-
 .../internal/admin/remote/CacheConfigRequest.java  |    2 +-
 .../internal/admin/remote/CacheConfigResponse.java |    6 +-
 .../internal/admin/remote/CacheInfoRequest.java    |    2 +-
 .../internal/admin/remote/CacheInfoResponse.java   |    5 +-
 .../admin/remote/CancelStatListenerRequest.java    |    2 +-
 .../admin/remote/CancelStatListenerResponse.java   |    4 +-
 .../internal/admin/remote/CancellationMessage.java |    2 +-
 .../admin/remote/ChangeRefreshIntervalMessage.java |    4 +-
 .../internal/admin/remote/CliLegacyMessage.java    |    4 +-
 .../internal/admin/remote/CompactRequest.java      |   12 +-
 .../internal/admin/remote/DestroyEntryMessage.java |    4 +-
 .../admin/remote/DestroyRegionMessage.java         |    4 +-
 .../admin/remote/DurableClientInfoRequest.java     |    2 +-
 .../admin/remote/DurableClientInfoResponse.java    |    6 +-
 .../admin/remote/FetchDistLockInfoRequest.java     |    2 +-
 .../admin/remote/FetchDistLockInfoResponse.java    |    3 +-
 .../admin/remote/FetchHealthDiagnosisRequest.java  |    2 +-
 .../admin/remote/FetchHealthDiagnosisResponse.java |    4 +-
 .../internal/admin/remote/FetchHostRequest.java    |    2 +-
 .../internal/admin/remote/FetchHostResponse.java   |    5 +-
 .../remote/FetchResourceAttributesRequest.java     |    2 +-
 .../remote/FetchResourceAttributesResponse.java    |    6 +-
 .../internal/admin/remote/FetchStatsRequest.java   |    2 +-
 .../internal/admin/remote/FetchStatsResponse.java  |    6 +-
 .../internal/admin/remote/FetchSysCfgRequest.java  |    2 +-
 .../internal/admin/remote/FetchSysCfgResponse.java |    3 +-
 .../admin/remote/FlushAppCacheSnapshotMessage.java |    2 +-
 .../admin/remote/HealthListenerMessage.java        |    2 +-
 .../internal/admin/remote/LicenseInfoRequest.java  |    2 +-
 .../internal/admin/remote/LicenseInfoResponse.java |    4 +-
 .../admin/remote/MissingPersistentIDsRequest.java  |   10 +-
 .../admin/remote/MissingPersistentIDsResponse.java |    5 +-
 .../admin/remote/ObjectDetailsRequest.java         |    2 +-
 .../admin/remote/ObjectDetailsResponse.java        |    3 +-
 .../internal/admin/remote/ObjectNamesRequest.java  |    2 +-
 .../internal/admin/remote/ObjectNamesResponse.java |    3 +-
 .../remote/PrepareRevokePersistentIDRequest.java   |   13 +-
 .../admin/remote/RefreshMemberSnapshotRequest.java |    2 +-
 .../remote/RefreshMemberSnapshotResponse.java      |    5 +-
 .../admin/remote/RegionAttributesRequest.java      |    2 +-
 .../admin/remote/RegionAttributesResponse.java     |    4 +-
 .../geode/internal/admin/remote/RegionRequest.java |    2 +-
 .../internal/admin/remote/RegionResponse.java      |    2 +-
 .../internal/admin/remote/RegionSizeRequest.java   |    2 +-
 .../internal/admin/remote/RegionSizeResponse.java  |    3 +-
 .../admin/remote/RegionStatisticsRequest.java      |    2 +-
 .../admin/remote/RegionStatisticsResponse.java     |    4 +-
 .../admin/remote/RegionSubRegionSizeRequest.java   |    4 +-
 .../admin/remote/RegionSubRegionsSizeResponse.java |    7 +-
 .../admin/remote/RemoteGfManagerAgent.java         |   40 +-
 .../admin/remote/RemoveHealthListenerRequest.java  |    2 +-
 .../admin/remote/RemoveHealthListenerResponse.java |    4 +-
 .../admin/remote/ResetHealthStatusRequest.java     |    2 +-
 .../admin/remote/ResetHealthStatusResponse.java    |    4 +-
 .../admin/remote/RevokePersistentIDRequest.java    |    8 +-
 .../internal/admin/remote/RootRegionRequest.java   |    2 +-
 .../internal/admin/remote/RootRegionResponse.java  |    5 +-
 .../remote/ShutdownAllGatewayHubsRequest.java      |    6 +-
 .../internal/admin/remote/ShutdownAllRequest.java  |   13 +-
 .../admin/remote/SnapshotResultMessage.java        |    2 +-
 .../remote/StatAlertsManagerAssignMessage.java     |    6 +-
 .../internal/admin/remote/StatListenerMessage.java |    2 +-
 .../internal/admin/remote/StoreSysCfgRequest.java  |    2 +-
 .../internal/admin/remote/StoreSysCfgResponse.java |    3 +-
 .../internal/admin/remote/SubRegionRequest.java    |    2 +-
 .../internal/admin/remote/SubRegionResponse.java   |    3 +-
 .../internal/admin/remote/TailLogRequest.java      |    2 +-
 .../internal/admin/remote/TailLogResponse.java     |    5 +-
 .../admin/remote/UpdateAlertDefinitionMessage.java |    4 +-
 .../internal/admin/remote/VersionInfoRequest.java  |    2 +-
 .../internal/admin/remote/VersionInfoResponse.java |    3 +-
 .../geode/internal/cache/AbstractCacheServer.java  |    4 +-
 .../geode/internal/cache/AbstractRegion.java       |    4 +-
 .../internal/cache/AbstractUpdateOperation.java    |   10 +-
 .../cache/AddCacheServerProfileMessage.java        |    4 +-
 .../apache/geode/internal/cache/BucketAdvisor.java |    4 +-
 .../internal/cache/CacheDistributionAdvisor.java   |    6 +-
 .../geode/internal/cache/CacheServerAdvisor.java   |    6 +-
 .../geode/internal/cache/CacheServerImpl.java      |    5 +-
 .../geode/internal/cache/CloseCacheMessage.java    |    4 +-
 .../geode/internal/cache/ControllerAdvisor.java    |    7 +-
 .../internal/cache/CreateRegionProcessor.java      |    5 +-
 .../geode/internal/cache/DestroyOperation.java     |    6 +-
 .../cache/DestroyPartitionedRegionMessage.java     |    4 +-
 .../internal/cache/DestroyRegionOperation.java     |   12 +-
 .../geode/internal/cache/DirectReplyMessage.java   |    7 +-
 .../geode/internal/cache/DistPeerTXStateStub.java  |   10 +-
 .../internal/cache/DistTXAdjunctCommitMessage.java |    4 +-
 .../geode/internal/cache/DistTXCommitMessage.java  |    9 +-
 .../internal/cache/DistTXCoordinatorInterface.java |    9 +-
 .../internal/cache/DistTXPrecommitMessage.java     |    9 +-
 .../internal/cache/DistTXRollbackMessage.java      |   10 +-
 .../internal/cache/DistTXStateOnCoordinator.java   |    8 +-
 .../cache/DistTXStateProxyImplOnCoordinator.java   |   14 +-
 .../internal/cache/DistributedCacheOperation.java  |   21 +-
 .../internal/cache/DistributedClearOperation.java  |    8 +-
 .../geode/internal/cache/DistributedRegion.java    |   11 +-
 .../DistributedRegionFunctionStreamingMessage.java |   26 +-
 .../cache/DistributedTombstoneOperation.java       |    8 +-
 .../apache/geode/internal/cache/EntriesMap.java    |    5 +-
 .../apache/geode/internal/cache/FilterProfile.java |    6 +-
 .../internal/cache/FindDurableQueueProcessor.java  |   10 +-
 .../geode/internal/cache/FindRemoteTXMessage.java  |    9 +-
 .../internal/cache/FindVersionTagOperation.java    |   10 +-
 .../FunctionStreamingOrderedReplyMessage.java      |    7 +-
 .../cache/FunctionStreamingReplyMessage.java       |    5 +-
 .../geode/internal/cache/GemFireCacheImpl.java     |   26 +-
 .../internal/cache/InitialImageFlowControl.java    |   16 +-
 .../internal/cache/InitialImageOperation.java      |   71 +-
 .../apache/geode/internal/cache/InternalCache.java |    4 +-
 .../geode/internal/cache/InternalRegion.java       |    4 +-
 .../geode/internal/cache/InvalidateOperation.java  |    6 +-
 .../cache/InvalidatePartitionedRegionMessage.java  |    4 +-
 .../internal/cache/InvalidateRegionOperation.java  |    4 +-
 .../internal/cache/JtaAfterCompletionMessage.java  |    9 +-
 .../internal/cache/JtaBeforeCompletionMessage.java |    4 +-
 .../cache/LatestLastAccessTimeMessage.java         |    4 +-
 .../cache/LatestLastAccessTimeOperation.java       |    4 +-
 .../cache/LatestLastAccessTimeReplyProcessor.java  |    5 +-
 .../apache/geode/internal/cache/LocalRegion.java   |    4 +-
 .../cache/MemberFunctionStreamingMessage.java      |   23 +-
 .../geode/internal/cache/NonLocalRegionEntry.java  |    4 +-
 .../org/apache/geode/internal/cache/Oplog.java     |    4 +-
 .../internal/cache/PRHARedundancyProvider.java     |    6 +-
 .../geode/internal/cache/PartitionedRegion.java    |   20 +-
 .../internal/cache/PartitionedRegionDataStore.java |    6 +-
 .../internal/cache/PartitionedRegionHelper.java    |    4 +-
 .../geode/internal/cache/ProxyBucketRegion.java    |    4 +-
 .../geode/internal/cache/ProxyRegionMap.java       |    4 +-
 .../apache/geode/internal/cache/RegionEntry.java   |    4 +-
 .../internal/cache/ReleaseClearLockMessage.java    |    8 +-
 .../cache/RemoteContainsKeyValueMessage.java       |    6 +-
 .../geode/internal/cache/RemoteDestroyMessage.java |   15 +-
 .../internal/cache/RemoteFetchEntryMessage.java    |    8 +-
 .../internal/cache/RemoteFetchVersionMessage.java  |   10 +-
 .../geode/internal/cache/RemoteGetMessage.java     |   10 +-
 .../internal/cache/RemoteInvalidateMessage.java    |   22 +-
 .../internal/cache/RemoteOperationMessage.java     |   21 +-
 .../RemoteOperationMessageWithDirectReply.java     |    6 +-
 .../geode/internal/cache/RemotePutAllMessage.java  |   12 +-
 .../geode/internal/cache/RemotePutMessage.java     |   18 +-
 .../internal/cache/RemoteRegionOperation.java      |    6 +-
 .../internal/cache/RemoteRemoveAllMessage.java     |   12 +-
 .../cache/SearchLoadAndWriteProcessor.java         |   53 +-
 .../geode/internal/cache/ServerPingMessage.java    |    6 +-
 .../geode/internal/cache/StateFlushOperation.java  |   24 +-
 .../geode/internal/cache/TXCommitMessage.java      |   37 +-
 .../geode/internal/cache/TXFarSideCMTracker.java   |   11 +-
 .../apache/geode/internal/cache/TXManagerImpl.java |   10 +-
 .../org/apache/geode/internal/cache/TXMessage.java |    8 +-
 .../internal/cache/TXRemoteCommitMessage.java      |    9 +-
 .../internal/cache/TXRemoteRollbackMessage.java    |    4 +-
 .../internal/cache/UpdateAttributesProcessor.java  |   13 +-
 .../cache/UpdateEntryVersionOperation.java         |    6 +-
 .../geode/internal/cache/UpdateOperation.java      |   12 +-
 .../geode/internal/cache/ValidatingDiskRegion.java |    4 +-
 .../cache/backup/BackupDataStoreHelper.java        |   12 +-
 .../geode/internal/cache/backup/BackupManager.java |    4 +-
 .../internal/cache/backup/BackupOperation.java     |    8 +-
 .../cache/backup/BackupReplyProcessor.java         |    4 +-
 .../geode/internal/cache/backup/BackupUtil.java    |    6 +-
 .../internal/cache/backup/FinishBackupFactory.java |    6 +-
 .../cache/backup/FinishBackupOperation.java        |    8 +-
 .../internal/cache/backup/FinishBackupRequest.java |    4 +-
 .../internal/cache/backup/FlushToDiskFactory.java  |    5 +-
 .../cache/backup/FlushToDiskOperation.java         |    9 +-
 .../cache/backup/FlushToDiskProcessor.java         |    4 +-
 .../internal/cache/backup/FlushToDiskRequest.java  |    4 +-
 .../cache/backup/PrepareBackupFactory.java         |    6 +-
 .../cache/backup/PrepareBackupOperation.java       |    7 +-
 .../cache/backup/PrepareBackupRequest.java         |    4 +-
 .../internal/cache/control/ResourceAdvisor.java    |   12 +-
 .../entries/AbstractOplogDiskRegionEntry.java      |    6 +-
 .../cache/entries/AbstractRegionEntry.java         |    6 +-
 .../geode/internal/cache/entries/DiskEntry.java    |    5 +-
 .../internal/cache/execute/AbstractExecution.java  |   18 +-
 .../DistributedRegionFunctionResultSender.java     |   12 +-
 .../cache/execute/MemberFunctionExecutor.java      |    4 +-
 .../cache/execute/MemberFunctionResultSender.java  |   11 +-
 .../cache/execute/MultiRegionFunctionExecutor.java |    4 +-
 .../PartitionedRegionFunctionResultSender.java     |   16 +-
 .../geode/internal/cache/ha/HARegionQueue.java     |    4 +-
 .../internal/cache/ha/QueueRemovalMessage.java     |    5 +-
 .../cache/locks/TXLessorDepartureHandler.java      |    4 +-
 .../locks/TXLockUpdateParticipantsMessage.java     |    4 +-
 .../cache/locks/TXOriginatorRecoveryProcessor.java |   12 +-
 .../locks/TXRecoverGrantorMessageProcessor.java    |    8 +-
 .../AllBucketProfilesUpdateMessage.java            |    8 +-
 .../partitioned/BecomePrimaryBucketMessage.java    |   14 +-
 .../cache/partitioned/BucketBackupMessage.java     |    6 +-
 .../partitioned/BucketProfileUpdateMessage.java    |   10 +-
 .../cache/partitioned/BucketSizeMessage.java       |   12 +-
 .../cache/partitioned/ContainsKeyValueMessage.java |    6 +-
 .../cache/partitioned/CreateBucketMessage.java     |   12 +-
 .../partitioned/DeposePrimaryBucketMessage.java    |   12 +-
 .../internal/cache/partitioned/DestroyMessage.java |   12 +-
 .../DestroyRegionOnDataStoreMessage.java           |   14 +-
 .../cache/partitioned/DumpAllPRConfigMessage.java  |    4 +-
 .../internal/cache/partitioned/DumpB2NRegion.java  |   12 +-
 .../cache/partitioned/DumpBucketsMessage.java      |    4 +-
 .../partitioned/EndBucketCreationMessage.java      |    8 +-
 .../cache/partitioned/FetchBulkEntriesMessage.java |   12 +-
 .../cache/partitioned/FetchEntriesMessage.java     |   13 +-
 .../cache/partitioned/FetchEntryMessage.java       |    8 +-
 .../cache/partitioned/FetchKeysMessage.java        |   14 +-
 .../partitioned/FetchPartitionDetailsMessage.java  |   12 +-
 .../internal/cache/partitioned/FlushMessage.java   |    4 +-
 .../internal/cache/partitioned/GetMessage.java     |   14 +-
 .../cache/partitioned/IdentityRequestMessage.java  |   11 +-
 .../cache/partitioned/IdentityUpdateMessage.java   |    6 +-
 .../cache/partitioned/IndexCreationMsg.java        |   20 +-
 .../cache/partitioned/InterestEventMessage.java    |   14 +-
 .../cache/partitioned/InvalidateMessage.java       |   10 +-
 .../partitioned/ManageBackupBucketMessage.java     |   16 +-
 .../cache/partitioned/ManageBucketMessage.java     |   16 +-
 .../cache/partitioned/MoveBucketMessage.java       |   12 +-
 .../cache/partitioned/PRSanityCheckMessage.java    |   10 +-
 .../cache/partitioned/PRTombstoneMessage.java      |    6 +-
 .../partitioned/PRUpdateEntryVersionMessage.java   |    4 +-
 .../cache/partitioned/PartitionMessage.java        |   22 +-
 .../PartitionMessageWithDirectReply.java           |    3 +-
 .../PartitionedRegionFunctionStreamingMessage.java |   16 +-
 .../partitioned/PartitionedRegionRebalanceOp.java  |    4 +-
 .../cache/partitioned/PrimaryRequestMessage.java   |    8 +-
 .../cache/partitioned/PutAllPRMessage.java         |   12 +-
 .../internal/cache/partitioned/PutMessage.java     |   14 +-
 .../internal/cache/partitioned/QueryMessage.java   |    8 +-
 .../cache/partitioned/RemoteFetchKeysMessage.java  |   14 +-
 .../cache/partitioned/RemoteSizeMessage.java       |    9 +-
 .../cache/partitioned/RemoveAllPRMessage.java      |   12 +-
 .../cache/partitioned/RemoveBucketMessage.java     |   12 +-
 .../cache/partitioned/RemoveIndexesMessage.java    |   17 +-
 .../internal/cache/partitioned/SizeMessage.java    |   10 +-
 .../partitioned/StreamingPartitionOperation.java   |   10 +-
 .../cache/persistence/MembershipFlushRequest.java  |    9 +-
 .../cache/persistence/MembershipViewRequest.java   |   27 +-
 .../cache/persistence/PersistenceAdvisorImpl.java  |    4 +-
 .../cache/persistence/PersistentMemberManager.java |    8 +-
 .../persistence/PersistentStateQueryMessage.java   |   14 +-
 .../PrepareNewPersistentMemberMessage.java         |   10 +-
 .../persistence/RemovePersistentMemberMessage.java |   11 +-
 .../internal/cache/snapshot/FlowController.java    |   27 +-
 .../internal/cache/tier/sockets/AcceptorImpl.java  |    4 +-
 .../cache/tier/sockets/CacheClientNotifier.java    |    7 +-
 .../cache/tier/sockets/CacheClientProxy.java       |    4 +-
 .../cache/tier/sockets/CacheClientUpdater.java     |    7 +-
 .../tier/sockets/ClientBlacklistProcessor.java     |   12 +-
 .../internal/cache/tier/sockets/HandShake.java     |    5 +-
 .../sockets/RemoveClientFromBlacklistMessage.java  |    5 +-
 .../sockets/ServerInterestRegistrationMessage.java |    6 +-
 .../cache/tier/sockets/VersionedObjectList.java    |    5 +-
 .../tier/sockets/command/ExecuteFunction66.java    |   11 +-
 .../tier/sockets/command/TXFailoverCommand.java    |    4 +-
 .../geode/internal/cache/tx/ClientTXStateStub.java |    4 +-
 .../internal/cache/tx/DistClientTXStateStub.java   |    9 +-
 .../internal/cache/tx/DistributedTXRegionStub.java |   19 +-
 .../cache/versions/RegionVersionVector.java        |    7 +-
 .../internal/cache/versions/VMVersionTag.java      |    4 +-
 .../geode/internal/cache/versions/VersionTag.java  |    4 +-
 .../internal/cache/wan/AbstractGatewaySender.java  |    4 +-
 .../internal/cache/wan/GatewaySenderAdvisor.java   |    7 +-
 ...aySenderQueueEntrySynchronizationOperation.java |    8 +-
 .../wan/parallel/ParallelGatewaySenderQueue.java   |    5 +-
 .../parallel/ParallelQueueBatchRemovalMessage.java |    8 +-
 .../wan/parallel/ParallelQueueRemovalMessage.java  |    5 +-
 ...tilParallelGatewaySenderFlushedCoordinator.java |    3 +-
 .../cache/wan/serial/BatchDestroyOperation.java    |    6 +-
 .../internal/cache/xmlcache/CacheCreation.java     |    4 +-
 .../xmlcache/ParallelAsyncEventQueueCreation.java  |    4 +-
 .../xmlcache/ParallelGatewaySenderCreation.java    |    4 +-
 .../xmlcache/SerialAsyncEventQueueCreation.java    |    4 +-
 .../xmlcache/SerialGatewaySenderCreation.java      |    4 +-
 .../geode/internal/jta/GlobalTransaction.java      |    4 +-
 .../internal/logging/log4j/AlertAppender.java      |    4 +-
 .../org/apache/geode/internal/tcp/Connection.java  |   12 +-
 .../apache/geode/internal/tcp/ConnectionTable.java |    6 +-
 .../org/apache/geode/internal/tcp/TCPConduit.java  |   10 +-
 .../management/internal/JmxManagerAdvisee.java     |    4 +-
 .../management/internal/JmxManagerAdvisor.java     |   11 +-
 .../geode/management/internal/ManagementAgent.java |    6 +-
 .../management/internal/ManagerStartupMessage.java |    7 +-
 .../geode/management/internal/MemberMessenger.java |    8 +-
 .../internal/beans/DistributedSystemBridge.java    |   10 +-
 .../internal/beans/ManagementAdapter.java          |    4 +-
 .../internal/beans/MemberMBeanBridge.java          |    9 +-
 .../cli/commands/BackupDiskStoreCommand.java       |    4 +-
 .../callbacks/ConfigurationChangeListener.java     |    4 -
 .../internal/messages/CompactRequest.java          |   12 +-
 .../geode/pdx/internal/CheckTypeRegistryState.java |    7 +-
 .../org/apache/geode/admin/AdminTestHelper.java    |   12 +-
 .../geode/cache/ConnectionPoolDUnitTest.java       |    6 +-
 .../geode/cache30/ClientServerCCEDUnitTest.java    |    4 +-
 .../cache30/DistributedAckRegionCCEDUnitTest.java  |    7 +-
 .../geode/cache30/RegionReliabilityTestCase.java   |    4 +-
 .../org/apache/geode/cache30/SlowRecDUnitTest.java |   14 +-
 .../DistributedLockServiceDUnitTest.java           |    7 +-
 .../distributed/DistributedMemberDUnitTest.java    |   15 +-
 .../distributed/DistributedSystemDUnitTest.java    |   17 +-
 .../geode/distributed/HostedLocatorsDUnitTest.java |   28 +-
 .../apache/geode/distributed/LocatorDUnitTest.java |   10 +-
 .../apache/geode/distributed/RoleDUnitTest.java    |    8 +-
 .../geode/distributed/SystemAdminDUnitTest.java    |    4 +-
 .../ConsoleDistributionManagerDUnitTest.java       |   14 +-
 .../geode/distributed/internal/DateMessage.java    |    2 +-
 .../internal/DistributionAdvisorDUnitTest.java     |    2 +-
 .../internal/DistributionManagerDUnitTest.java     |   16 +-
 .../internal/DistributionManagerTest.java          |    2 +-
 .../InternalDistributedSystemJUnitTest.java        |    2 +-
 .../org/apache/geode/distributed/internal/LDM.java |    4 +-
 .../distributed/internal/ProduceDateMessages.java  |    2 +-
 .../internal/membership/MembershipJUnitTest.java   |   18 +-
 .../internal/membership/NetViewJUnitTest.java      |   24 +-
 .../membership/gms/MembershipManagerHelper.java    |    5 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java          |    5 +-
 .../gms/locator/GMSLocatorRecoveryJUnitTest.java   |    4 +-
 .../gms/membership/GMSJoinLeaveJUnitTest.java      |    7 +-
 .../gms/membership/GMSJoinLeaveTestHelper.java     |    4 +-
 .../gms/membership/StatRecorderJUnitTest.java      |    6 +-
 .../gms/messenger/GMSEncryptJUnitTest.java         |    4 +-
 .../gms/messenger/GMSQuorumCheckerJUnitTest.java   |   27 +-
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |   12 +-
 .../gms/mgr/GMSMembershipManagerJUnitTest.java     |    6 +-
 .../geode/internal/cache/Bug41091DUnitTest.java    |    5 +-
 .../geode/internal/cache/Bug41733DUnitTest.java    |    8 +-
 .../internal/cache/CacheOperationMessageTest.java  |    4 +-
 .../internal/cache/DistributedCacheTestCase.java   |   10 +-
 ...tributedRegionFunctionStreamingMessageTest.java |    4 +-
 .../geode/internal/cache/GIIDeltaDUnitTest.java    |   10 +-
 .../internal/cache/GIIFlowControlDUnitTest.java    |    6 +-
 .../cache/InterruptClientServerDUnitTest.java      |    8 +-
 .../geode/internal/cache/InterruptsDUnitTest.java  |    8 +-
 ...FOEvictionAlgoMemoryEnabledRegionJUnitTest.java |    5 +-
 .../cache/NetSearchMessagingDUnitTest.java         |    8 +-
 .../cache/PartitionedRegionQueryDUnitTest.java     |    5 +-
 .../cache/RemoteFetchEntryMessageTest.java         |    4 +-
 .../internal/cache/RemoteOperationMessageTest.java |    6 +-
 .../cache/SearchLoadAndWriteProcessorTest.java     |    4 +-
 .../internal/cache/SystemFailureDUnitTest.java     |    4 +-
 .../geode/internal/cache/TXManagerImplTest.java    |    7 +-
 .../cache/backup/BackupDistributedTest.java        |   10 +-
 .../backup/BackupPrepareAndFinishMsgDUnitTest.java |    6 +-
 .../cache/backup/BackupReplyProcessorTest.java     |    6 +-
 .../cache/backup/FinishBackupFactoryTest.java      |    6 +-
 .../cache/backup/FinishBackupOperationTest.java    |    6 +-
 .../cache/backup/FinishBackupRequestTest.java      |    6 +-
 .../cache/backup/FlushToDiskFactoryTest.java       |    6 +-
 .../cache/backup/FlushToDiskOperationTest.java     |    6 +-
 .../cache/backup/FlushToDiskRequestTest.java       |    6 +-
 .../backup/IncrementalBackupDistributedTest.java   |    8 +-
 .../cache/backup/PrepareBackupFactoryTest.java     |    6 +-
 .../cache/backup/PrepareBackupOperationTest.java   |    6 +-
 .../cache/backup/PrepareBackupRequestTest.java     |    6 +-
 .../internal/cache/eviction/LRUTestEntry.java      |    5 +-
 ...istributedRegionFunctionExecutionDUnitTest.java |    4 +-
 .../execute/MemberFunctionExecutionDUnitTest.java  |    4 +-
 .../execute/PRFunctionExecutionDUnitTest.java      |    4 +-
 .../cache/locks/TXLockServiceDUnitTest.java        |    6 +-
 .../cache/partitioned/Bug39356DUnitTest.java       |    6 +-
 .../DeposePrimaryBucketMessageTest.java            |    4 +-
 .../cache/partitioned/FetchEntryMessageTest.java   |    4 +-
 .../FetchPartitionDetailsMessageTest.java          |    4 +-
 .../cache/partitioned/MoveBucketMessageTest.java   |    4 +-
 .../cache/partitioned/PartitionMessageTest.java    |    6 +-
 ...sistentColocatedPartitionedRegionDUnitTest.java |    8 +-
 .../PersistentPartitionedRegionDUnitTest.java      |   19 +-
 .../cache/partitioned/RemoveBucketMessageTest.java |    4 +-
 .../PersistentRVVRecoveryDUnitTest.java            |    6 +-
 .../PersistentRecoveryOrderDUnitTest.java          |   41 +-
 .../ParallelQueueRemovalMessageJUnitTest.java      |    4 +-
 ...nectingOutOfOffHeapMemoryListenerJUnitTest.java |    4 +-
 .../offheap/OutOfOffHeapMemoryDUnitTest.java       |    6 +-
 .../geode/internal/tcp/ConnectionJUnitTest.java    |    4 +-
 .../geode/internal/tcp/ConnectionTableTest.java    |    4 +-
 .../geode/management/ManagementTestRule.java       |    4 +-
 .../management/RegionManagementDUnitTest.java      |    4 +-
 .../beans/DistributedSystemBridgeJUnitTest.java    |    6 +-
 .../pdx/ClientsWithVersioningRetryDUnitTest.java   |    7 +-
 .../geode/pdx/DistributedSystemIdDUnitTest.java    |    6 +-
 .../apache/geode/pdx/PdxSerializableDUnitTest.java |    4 +-
 .../security/ClusterConfigNotEnabledDUnitTest.java |    4 +-
 .../java/org/apache/geode/test/fake/Fakes.java     |    4 +-
 .../lucene/internal/DestroyLuceneIndexMessage.java |    5 +-
 .../lucene/internal/LuceneBucketListener.java      |    6 +-
 .../internal/LuceneIndexForPartitionedRegion.java  |    6 +-
 .../web/controllers/AbstractBaseController.java    |    4 +-
 494 files changed, 2230 insertions(+), 6781 deletions(-)

diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
index 88a5a7b..82ca3e3 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
@@ -28,7 +28,7 @@ import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MembershipListener;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -88,7 +88,8 @@ public class BootstrappingFunction implements Function, MembershipListener, Data
   }
 
   private void registerAsMembershipListener(Cache cache) {
-    DM dm = ((InternalDistributedSystem) cache.getDistributedSystem()).getDistributionManager();
+    DistributionManager dm =
+        ((InternalDistributedSystem) cache.getDistributedSystem()).getDistributionManager();
     dm.addMembershipListener(this);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/GemFireMemberStatus.java b/geode-core/src/main/java/org/apache/geode/admin/GemFireMemberStatus.java
index 1e01b40..8d0c6a5 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/GemFireMemberStatus.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/GemFireMemberStatus.java
@@ -30,8 +30,8 @@ import org.apache.geode.cache.client.PoolManager;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.admin.ClientHealthMonitoringRegion;
@@ -635,7 +635,7 @@ public class GemFireMemberStatus implements Serializable {
 
   protected void initializePeers(DistributedSystem distributedSystem) {
     InternalDistributedSystem ids = (InternalDistributedSystem) distributedSystem;
-    DM dm = ids.getDistributionManager();
+    DistributionManager dm = ids.getDistributionManager();
     Set connections = dm.getOtherNormalDistributionManagerIds();
     Set connectionsIDs = new HashSet(connections.size());
     for (Iterator iter = connections.iterator(); iter.hasNext();) {
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/AbstractHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/AbstractHealthEvaluator.java
index 14235b9..ef5b1b1 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/AbstractHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/AbstractHealthEvaluator.java
@@ -20,7 +20,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.admin.GemFireHealth;
 import org.apache.geode.admin.GemFireHealthConfig;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
@@ -58,7 +58,7 @@ public abstract class AbstractHealthEvaluator {
    * processed before the <code>InternalDistributedSystem</code>'s <code>DistributionManager</code>
    * is set.
    */
-  protected AbstractHealthEvaluator(GemFireHealthConfig config, DM dm) {
+  protected AbstractHealthEvaluator(GemFireHealthConfig config, DistributionManager dm) {
     this.numEvaluations = 0;
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/AdminDistributedSystemImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/AdminDistributedSystemImpl.java
index 8e23a31..82bcc97 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/AdminDistributedSystemImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/AdminDistributedSystemImpl.java
@@ -615,7 +615,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
   }
 
   protected void checkCancellation() {
-    DM dm = this.getDistributionManager();
+    DistributionManager dm = this.getDistributionManager();
     // TODO does dm == null mean we're dead?
     if (dm != null) {
       dm.getCancelCriterion().checkCancelInProgress(null);
@@ -901,7 +901,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
    * Returns the DistributionManager this implementation is using to connect to the distributed
    * system.
    */
-  public DM getDistributionManager() {
+  public DistributionManager getDistributionManager() {
     if (this.gfManagerAgent == null) {
       return null;
     }
@@ -1647,7 +1647,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
   private GfManagerAgentConfig buildAgentConfig(InternalLogWriter logWriter) {
     RemoteTransportConfig conf = new RemoteTransportConfig(isMcastEnabled(), getDisableTcp(),
         getDisableAutoReconnect(), getBindAddress(), buildSSLConfig(), parseLocators(),
-        getMembershipPortRange(), getTcpPort(), DistributionManager.ADMIN_ONLY_DM_TYPE);
+        getMembershipPortRange(), getTcpPort(), ClusterDistributionManager.ADMIN_ONLY_DM_TYPE);
     return new GfManagerAgentConfig(getSystemName(), conf, logWriter, this.alertLevel.getSeverity(),
         this, this);
   }
@@ -2171,7 +2171,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
 
   public Set<PersistentID> getMissingPersistentMembers() throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2180,13 +2180,13 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
     return getMissingPersistentMembers(dm);
   }
 
-  public static Set<PersistentID> getMissingPersistentMembers(DM dm) {
+  public static Set<PersistentID> getMissingPersistentMembers(DistributionManager dm) {
     return MissingPersistentIDsRequest.send(dm);
   }
 
   public void revokePersistentMember(InetAddress host, String directory) throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2198,7 +2198,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
 
   public void revokePersistentMember(UUID diskStoreID) throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2208,7 +2208,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
 
   }
 
-  public static void revokePersistentMember(DM dm, UUID diskStoreID) {
+  public static void revokePersistentMember(DistributionManager dm, UUID diskStoreID) {
     PersistentMemberPattern pattern = new PersistentMemberPattern(diskStoreID);
     boolean success = false;
     try {
@@ -2246,7 +2246,8 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
    *
    * @deprecated use {@link #revokePersistentMember(UUID)} instead
    */
-  public static void revokePersistentMember(DM dm, InetAddress host, String directory) {
+  public static void revokePersistentMember(DistributionManager dm, InetAddress host,
+      String directory) {
 
     PersistentMemberPattern pattern =
         new PersistentMemberPattern(host, directory, System.currentTimeMillis());
@@ -2273,7 +2274,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
 
   public Set shutDownAllMembers(long timeout) throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2291,7 +2292,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
    *        timeout is exceeded, persistent recovery after the shutdown may need to do a GII. -1
    *        indicates that the shutdown should wait forever.
    */
-  public static Set shutDownAllMembers(DM dm, long timeout) {
+  public static Set shutDownAllMembers(DistributionManager dm, long timeout) {
     return ShutdownAllRequest.send(dm, timeout);
   }
 
@@ -2301,7 +2302,7 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
 
   public BackupStatus backupAllMembers(File targetDir, File baselineDir) throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2310,14 +2311,14 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
     return backupAllMembers(dm, targetDir, baselineDir);
   }
 
-  public static BackupStatus backupAllMembers(DM dm, File targetDir, File baselineDir)
-      throws AdminException {
+  public static BackupStatus backupAllMembers(DistributionManager dm, File targetDir,
+      File baselineDir) throws AdminException {
     return new BackupStatusImpl(BackupUtil.backupAllMembers(dm, targetDir, baselineDir));
   }
 
   public Map<DistributedMember, Set<PersistentID>> compactAllDiskStores() throws AdminException {
     connectAdminDS();
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     if (dm == null) {
       throw new IllegalStateException(
           LocalizedStrings.AdminDistributedSystemImpl_CONNECT_HAS_NOT_BEEN_INVOKED_ON_THIS_ADMINDISTRIBUTEDSYSTEM
@@ -2326,8 +2327,8 @@ public class AdminDistributedSystemImpl implements org.apache.geode.admin.AdminD
     return compactAllDiskStores(dm);
   }
 
-  public static Map<DistributedMember, Set<PersistentID>> compactAllDiskStores(DM dm)
-      throws AdminException {
+  public static Map<DistributedMember, Set<PersistentID>> compactAllDiskStores(
+      DistributionManager dm) throws AdminException {
     return CompactRequest.send(dm);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
index c93d0f4..adf03ca 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
@@ -22,7 +22,7 @@ import org.apache.geode.CancelException;
 import org.apache.geode.admin.CacheHealthConfig;
 import org.apache.geode.admin.GemFireHealthConfig;
 import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.OSProcess;
 import org.apache.geode.internal.cache.CacheLifecycleListener;
@@ -72,7 +72,7 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
   /**
    * Creates a new {@code CacheHealthEvaluator}
    */
-  CacheHealthEvaluator(GemFireHealthConfig config, DM dm) {
+  CacheHealthEvaluator(GemFireHealthConfig config, DistributionManager dm) {
     super(config, dm);
 
     this.config = config;
@@ -97,7 +97,7 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
   /**
    * Initializes the state of this evaluator based on the given cache instance.
    */
-  private void initialize(InternalCache cache, DM dm) {
+  private void initialize(InternalCache cache, DistributionManager dm) {
     StringBuilder sb = new StringBuilder();
     if (cache != null) {
       this.cacheStats = cache.getCachePerfStats();
@@ -123,7 +123,7 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
   @Override
   public void cacheCreated(InternalCache cache) {
     InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
-    DM dm = system.getDistributionManager();
+    DistributionManager dm = system.getDistributionManager();
     initialize(cache, dm);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheServerImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheServerImpl.java
index 4bfa80b..76a4c44 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheServerImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheServerImpl.java
@@ -17,7 +17,7 @@ package org.apache.geode.admin.internal;
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 
 import org.apache.geode.admin.*;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.internal.admin.GemFireVM;
 import org.apache.geode.internal.admin.remote.RemoteApplicationVM;
@@ -96,7 +96,8 @@ public class CacheServerImpl extends ManagedSystemMemberImpl implements CacheVm,
   }
 
   public boolean isRunning() {
-    DM dm = ((AdminDistributedSystemImpl) getDistributedSystem()).getDistributionManager();
+    DistributionManager dm =
+        ((AdminDistributedSystemImpl) getDistributedSystem()).getDistributionManager();
     if (dm == null) {
       try {
         return this.controller.isRunning(this);
@@ -104,7 +105,7 @@ public class CacheServerImpl extends ManagedSystemMemberImpl implements CacheVm,
         return false;
       }
     }
-    return ((DistributionManager) dm).getDistributionManagerIdsIncludingAdmin()
+    return ((ClusterDistributionManager) dm).getDistributionManagerIdsIncludingAdmin()
         .contains(getDistributedMember());
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthEvaluator.java
index 596805c..55cde04 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthEvaluator.java
@@ -18,7 +18,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.geode.admin.DistributedSystemHealthConfig;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.MembershipListener;
@@ -47,7 +47,7 @@ class DistributedSystemHealthEvaluator extends AbstractHealthEvaluator
   /**
    * The distribution manager with which this MembershipListener is registered
    */
-  private DM dm;
+  private DistributionManager dm;
 
   /** The description of the distributed system being evaluated */
   private String description;
@@ -62,7 +62,7 @@ class DistributedSystemHealthEvaluator extends AbstractHealthEvaluator
   /**
    * Creates a new <code>DistributedSystemHealthEvaluator</code>
    */
-  DistributedSystemHealthEvaluator(DistributedSystemHealthConfig config, DM dm) {
+  DistributedSystemHealthEvaluator(DistributedSystemHealthConfig config, DistributionManager dm) {
     super(null, dm);
 
     this.config = config;
@@ -73,8 +73,8 @@ class DistributedSystemHealthEvaluator extends AbstractHealthEvaluator
     sb.append("Distributed System ");
 
     String desc = null;
-    if (dm instanceof DistributionManager) {
-      desc = ((DistributionManager) dm).getDistributionConfigDescription();
+    if (dm instanceof ClusterDistributionManager) {
+      desc = ((ClusterDistributionManager) dm).getDistributionConfigDescription();
     }
 
     if (desc != null) {
@@ -148,8 +148,8 @@ class DistributedSystemHealthEvaluator extends AbstractHealthEvaluator
     synchronized (this) {
       int kind = id.getVmKind();
       switch (kind) {
-        case DistributionManager.LOCATOR_DM_TYPE:
-        case DistributionManager.NORMAL_DM_TYPE:
+        case ClusterDistributionManager.LOCATOR_DM_TYPE:
+        case ClusterDistributionManager.NORMAL_DM_TYPE:
           this.crashedApplications++;
           break;
         default:
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java
index 722bf9f..8b03ef3 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java
@@ -25,8 +25,8 @@ import org.apache.geode.admin.AdminDistributedSystem;
 import org.apache.geode.admin.DistributionLocator;
 import org.apache.geode.admin.DistributionLocatorConfig;
 import org.apache.geode.admin.ManagedEntityConfig;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.admin.remote.DistributionLocatorId;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -174,7 +174,8 @@ public class DistributionLocatorImpl implements DistributionLocator, InternalMan
   }
 
   public boolean isRunning() {
-    DM dm = ((AdminDistributedSystemImpl) getDistributedSystem()).getDistributionManager();
+    DistributionManager dm =
+        ((AdminDistributedSystemImpl) getDistributedSystem()).getDistributionManager();
     if (dm == null) {
       try {
         return this.controller.isRunning(this);
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/GemFireHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/GemFireHealthEvaluator.java
index 1573ca7..f3cdc56 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/GemFireHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/GemFireHealthEvaluator.java
@@ -22,7 +22,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.admin.GemFireHealth;
 import org.apache.geode.admin.GemFireHealthConfig;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
@@ -73,7 +73,7 @@ public class GemFireHealthEvaluator {
    * @param config The configuration that determines whether or GemFire is healthy
    * @param dm The distribution manager
    */
-  public GemFireHealthEvaluator(GemFireHealthConfig config, DistributionManager dm) {
+  public GemFireHealthEvaluator(GemFireHealthConfig config, ClusterDistributionManager dm) {
     if (config == null) {
       throw new NullPointerException(
           LocalizedStrings.GemFireHealthEvaluator_NULL_GEMFIREHEALTHCONFIG.toLocalizedString());
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/MemberHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/MemberHealthEvaluator.java
index b257a17..f420f61 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/MemberHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/MemberHealthEvaluator.java
@@ -20,8 +20,8 @@ import org.apache.geode.CancelException;
 import org.apache.geode.admin.GemFireHealthConfig;
 import org.apache.geode.admin.MemberHealthConfig;
 import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DMStats;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.OSProcess;
 import org.apache.geode.internal.cache.CachePerfStats;
@@ -56,7 +56,7 @@ class MemberHealthEvaluator extends AbstractHealthEvaluator {
   /**
    * Creates a new <code>MemberHealthEvaluator</code>
    */
-  MemberHealthEvaluator(GemFireHealthConfig config, DM dm) {
+  MemberHealthEvaluator(GemFireHealthConfig config, DistributionManager dm) {
     super(config, dm);
 
     this.config = config;
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheEventProcessor.java b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheEventProcessor.java
index f17ef14..d356a68 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheEventProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheEventProcessor.java
@@ -30,7 +30,7 @@ import org.apache.geode.admin.SystemMemberRegionEvent;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Operation;
 import org.apache.geode.cache.Region;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.logging.LogService;
@@ -79,7 +79,7 @@ public class SystemMemberCacheEventProcessor {
     protected Operation op;
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       AdminDistributedSystemImpl admin = AdminDistributedSystemImpl.getConnectedInstance();
       if (admin == null) {
         if (logger.isDebugEnabled()) {
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
index c635f03..855d522 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
@@ -54,7 +54,7 @@ import org.apache.geode.admin.AdminException;
 import org.apache.geode.admin.jmx.Agent;
 import org.apache.geode.admin.jmx.AgentConfig;
 import org.apache.geode.admin.jmx.AgentFactory;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.i18n.StringId;
 import org.apache.geode.internal.Banner;
 import org.apache.geode.internal.ExitCode;
@@ -411,7 +411,7 @@ public class AgentImpl implements org.apache.geode.admin.jmx.Agent,
           return ((AdminDistributedSystemJmxImpl) this.system).getObjectName();
         }
 
-        DistributionManager.setIsDedicatedAdminVM(true);
+        ClusterDistributionManager.setIsDedicatedAdminVM(true);
 
         AdminDistributedSystemJmxImpl systemJmx = (AdminDistributedSystemJmxImpl) this.system;
         if (systemJmx == null) {
@@ -477,7 +477,7 @@ public class AgentImpl implements org.apache.geode.admin.jmx.Agent,
         logger.warn(e.getMessage(), e);
         throw e;
       } finally {
-        DistributionManager.setIsDedicatedAdminVM(false);
+        ClusterDistributionManager.setIsDedicatedAdminVM(false);
       }
     }
   }
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
index 1819655..922dc85 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
@@ -43,7 +43,7 @@ import org.apache.geode.admin.AdminException;
 import org.apache.geode.admin.jmx.Agent;
 import org.apache.geode.admin.jmx.AgentConfig;
 import org.apache.geode.admin.jmx.AgentFactory;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.internal.ExitCode;
 import org.apache.geode.internal.OSProcess;
 import org.apache.geode.internal.PureJavaMode;
@@ -376,7 +376,7 @@ public class AgentLauncher {
   }
 
   private Agent createAgent(final Properties props) throws IOException, AdminException {
-    DistributionManager.setIsDedicatedAdminVM(true);
+    ClusterDistributionManager.setIsDedicatedAdminVM(true);
     SystemFailure.setExitOK(true);
 
     final AgentConfigImpl config = new AgentConfigImpl(props);
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/CacheServerLoadMessage.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/CacheServerLoadMessage.java
index da7b236..5bd4f9b 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/CacheServerLoadMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/CacheServerLoadMessage.java
@@ -23,7 +23,7 @@ import java.util.List;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.server.ServerLoad;
 import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.InternalLocator;
 import org.apache.geode.distributed.internal.SerialDistributionMessage;
 import org.apache.geode.distributed.internal.ServerLocation;
@@ -55,7 +55,7 @@ public class CacheServerLoadMessage extends SerialDistributionMessage {
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     updateLocalLocators();
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
index 8c24214..ccb6ab6 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/DistributedSystem.java
@@ -35,8 +35,8 @@ import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.client.ClientCache;
 import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.ClassPathLoader;
@@ -156,7 +156,7 @@ public abstract class DistributedSystem implements StatisticsFactory {
       config = new Properties();
     }
     synchronized (existingSystemsLock) {
-      if (DistributionManager.isDedicatedAdminVM()) {
+      if (ClusterDistributionManager.isDedicatedAdminVM()) {
         // For a dedicated admin VM, check to see if there is already
         // a connect that will suit our purposes.
         DistributedSystem existingSystem = getConnection(config);
@@ -323,7 +323,7 @@ public abstract class DistributedSystem implements StatisticsFactory {
             LocalizedStrings.DistributedSystem_THIS_VM_ALREADY_HAS_ONE_OR_MORE_DISTRIBUTED_SYSTEM_CONNECTIONS_0
                 .toLocalizedString(existingSystems));
       }
-      DistributionManager.setIsDedicatedAdminVM(adminOnly);
+      ClusterDistributionManager.setIsDedicatedAdminVM(adminOnly);
     }
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
index 726cde2..37a76a9 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
@@ -387,7 +387,7 @@ public class ClusterConfigurationService {
   public void downloadJarFromOtherLocators(String groupName, String jarName)
       throws IllegalStateException, IOException {
     logger.info("Getting Jar files from other locators");
-    DM dm = this.cache.getDistributionManager();
+    DistributionManager dm = this.cache.getDistributionManager();
     DistributedMember me = this.cache.getMyId();
     List<DistributedMember> locators =
         new ArrayList<>(dm.getAllHostedLocatorsWithSharedConfiguration().keySet());
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
similarity index 97%
copy from geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
copy to geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 5a4de3d..7f96a7b 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -105,7 +105,7 @@ import org.apache.geode.internal.util.concurrent.StoppableReentrantLock;
  * @see DistributionMessage#process
  * @see IgnoredByManager
  */
-public class DistributionManager implements DM {
+public class ClusterDistributionManager implements DistributionManager {
 
   private static final Logger logger = LogService.getLogger();
 
@@ -281,7 +281,7 @@ public class DistributionManager implements DM {
   private boolean waitingForElderChange = false;
 
   /**
-   * @see DM#isAdam()
+   * @see DistributionManager#isAdam()
    */
   private boolean adam = false;
 
@@ -524,9 +524,9 @@ public class DistributionManager implements DM {
    *
    * @param system The distributed system to which this distribution manager will send messages.
    */
-  static DistributionManager create(InternalDistributedSystem system) {
+  static ClusterDistributionManager create(InternalDistributedSystem system) {
 
-    DistributionManager distributionManager = null;
+    ClusterDistributionManager distributionManager = null;
     boolean beforeJoined = true;
 
     try {
@@ -550,7 +550,7 @@ public class DistributionManager implements DM {
 
       long start = System.currentTimeMillis();
 
-      distributionManager = new DistributionManager(system, transport);
+      distributionManager = new ClusterDistributionManager(system, transport);
       distributionManager.assertDistributionManagerType();
 
       beforeJoined = false; // we have now joined the system
@@ -649,7 +649,8 @@ public class DistributionManager implements DM {
    * @param transport The configuration for the communications transport
    *
    */
-  private DistributionManager(RemoteTransportConfig transport, InternalDistributedSystem system) {
+  private ClusterDistributionManager(RemoteTransportConfig transport,
+      InternalDistributedSystem system) {
 
     this.dmType = transport.getVmKind();
     this.system = system;
@@ -706,10 +707,10 @@ public class DistributionManager implements DM {
         }
         ThreadFactory tf = new ThreadFactory() {
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incSerialThreadStarts();
+            ClusterDistributionManager.this.stats.incSerialThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incNumSerialThreads(1);
+                ClusterDistributionManager.this.stats.incNumSerialThreads(1);
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
@@ -717,7 +718,7 @@ public class DistributionManager implements DM {
                   // command.run();
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumSerialThreads(-1);
+                  ClusterDistributionManager.this.stats.incNumSerialThreads(-1);
                 }
               }
             };
@@ -735,17 +736,17 @@ public class DistributionManager implements DM {
         BlockingQueue q = new LinkedBlockingQueue();
         ThreadFactory tf = new ThreadFactory() {
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incViewThreadStarts();
+            ClusterDistributionManager.this.stats.incViewThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incNumViewThreads(1);
+                ClusterDistributionManager.this.stats.incNumViewThreads(1);
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
                   runUntilShutdown(command);
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumViewThreads(-1);
+                  ClusterDistributionManager.this.stats.incNumViewThreads(-1);
                 }
               }
             };
@@ -771,17 +772,17 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incProcessingThreadStarts();
+            ClusterDistributionManager.this.stats.incProcessingThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incNumProcessingThreads(1);
+                ClusterDistributionManager.this.stats.incNumProcessingThreads(1);
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
                   runUntilShutdown(command);
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumProcessingThreads(-1);
+                  ClusterDistributionManager.this.stats.incNumProcessingThreads(-1);
                 }
               }
             };
@@ -810,17 +811,17 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incHighPriorityThreadStarts();
+            ClusterDistributionManager.this.stats.incHighPriorityThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incHighPriorityThreads(1);
+                ClusterDistributionManager.this.stats.incHighPriorityThreads(1);
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
                   runUntilShutdown(command);
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incHighPriorityThreads(-1);
+                  ClusterDistributionManager.this.stats.incHighPriorityThreads(-1);
                 }
               }
             };
@@ -841,17 +842,17 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incWaitingThreadStarts();
+            ClusterDistributionManager.this.stats.incWaitingThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incWaitingThreads(1);
+                ClusterDistributionManager.this.stats.incWaitingThreads(1);
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
                   runUntilShutdown(command);
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incWaitingThreads(-1);
+                  ClusterDistributionManager.this.stats.incWaitingThreads(-1);
                 }
               }
             };
@@ -878,17 +879,17 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incWaitingThreadStarts();// will it be ok?
+            ClusterDistributionManager.this.stats.incWaitingThreadStarts();// will it be ok?
             final Runnable r = new Runnable() {
               public void run() {
-                DistributionManager.this.stats.incWaitingThreads(1);// will it be ok
+                ClusterDistributionManager.this.stats.incWaitingThreads(1);// will it be ok
                 try {
                   ConnectionTable.threadWantsSharedResources();
                   Connection.makeReaderThread();
                   runUntilShutdown(command);
                 } finally {
                   ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incWaitingThreads(-1);
+                  ClusterDistributionManager.this.stats.incWaitingThreads(-1);
                 }
               }
             };
@@ -917,7 +918,7 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incPartitionedRegionThreadStarts();
+            ClusterDistributionManager.this.stats.incPartitionedRegionThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
                 stats.incPartitionedRegionThreads(1);
@@ -959,7 +960,7 @@ public class DistributionManager implements DM {
           private int next = 0;
 
           public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incFunctionExecutionThreadStarts();
+            ClusterDistributionManager.this.stats.incFunctionExecutionThreadStarts();
             final Runnable r = new Runnable() {
               public void run() {
                 stats.incFunctionExecutionThreads(1);
@@ -1035,7 +1036,8 @@ public class DistributionManager implements DM {
    *
    * @param system The distributed system to which this distribution manager will send messages.
    */
-  private DistributionManager(InternalDistributedSystem system, RemoteTransportConfig transport) {
+  private ClusterDistributionManager(InternalDistributedSystem system,
+      RemoteTransportConfig transport) {
     this(transport, system);
 
     boolean finishedConstructor = false;
@@ -1081,7 +1083,7 @@ public class DistributionManager implements DM {
   }
 
   public static void setIsDedicatedAdminVM(boolean isDedicatedAdminVM) {
-    DistributionManager.isDedicatedAdminVM = isDedicatedAdminVM;
+    ClusterDistributionManager.isDedicatedAdminVM = isDedicatedAdminVM;
   }
 
   public static Boolean getIsStartupThread() {
@@ -1089,7 +1091,7 @@ public class DistributionManager implements DM {
   }
 
   public static void setIsStartupThread(Boolean isStartup) {
-    DistributionManager.isStartupThread.set(isStartup);
+    ClusterDistributionManager.isStartupThread.set(isStartup);
   }
 
   //////////////////// Instance Methods /////////////////////
@@ -2186,9 +2188,9 @@ public class DistributionManager implements DM {
   /**
    * This thread processes member events as they occur.
    *
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberCrashedEvent
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberJoinedEvent
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberDepartedEvent
+   * @see ClusterDistributionManager.MemberCrashedEvent
+   * @see ClusterDistributionManager.MemberJoinedEvent
+   * @see ClusterDistributionManager.MemberDepartedEvent
    *
    */
   protected class MemberEventInvoker implements Runnable {
@@ -2204,11 +2206,13 @@ public class DistributionManager implements DM {
         // if (getCancelCriterion().isCancelInProgress()) {
         // break; // no message, just quit
         // }
-        if (!DistributionManager.this.system.isConnected && DistributionManager.this.isClosed()) {
+        if (!ClusterDistributionManager.this.system.isConnected
+            && ClusterDistributionManager.this.isClosed()) {
           break;
         }
         try {
-          MemberEvent ev = (MemberEvent) DistributionManager.this.membershipEventQueue.take();
+          MemberEvent ev =
+              (MemberEvent) ClusterDistributionManager.this.membershipEventQueue.take();
           handleMemberEvent(ev);
         } catch (InterruptedException e) {
           if (isCloseInProgress()) {
@@ -2240,7 +2244,7 @@ public class DistributionManager implements DM {
         }
       } // for
       if (logger.isTraceEnabled()) {
-        logger.trace("MemberEventInvoker on {} stopped", DistributionManager.this);
+        logger.trace("MemberEventInvoker on {} stopped", ClusterDistributionManager.this);
       }
     }
   }
@@ -2436,9 +2440,9 @@ public class DistributionManager implements DM {
       throw new IncompatibleSystemException(rejectionMessage);
     }
 
-    boolean isAdminDM = getId().getVmKind() == DistributionManager.ADMIN_ONLY_DM_TYPE
-        || getId().getVmKind() == DistributionManager.LOCATOR_DM_TYPE
-        || DistributionManager.isDedicatedAdminVM()
+    boolean isAdminDM = getId().getVmKind() == ClusterDistributionManager.ADMIN_ONLY_DM_TYPE
+        || getId().getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE
+        || ClusterDistributionManager.isDedicatedAdminVM()
         || Boolean.getBoolean(InternalLocator.FORCE_LOCATOR_DM_TYPE);
 
     boolean receivedAny = this.receivedStartupResponse;
@@ -2806,7 +2810,7 @@ public class DistributionManager implements DM {
       this.membersAndAdmin = Collections.unmodifiableSet(stmp);
     } // synchronized
 
-    if (theId.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
+    if (theId.getVmKind() != ClusterDistributionManager.LOCATOR_DM_TYPE) {
       this.stats.incNodes(1);
     }
     logger.info(LocalizedMessage.create(
@@ -2982,7 +2986,7 @@ public class DistributionManager implements DM {
     removeUnfinishedStartup(theId, true);
 
     if (removeManager(theId, crashed, reason)) {
-      if (theId.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
+      if (theId.getVmKind() != ClusterDistributionManager.LOCATOR_DM_TYPE) {
         this.stats.incNodes(-1);
       }
       StringId msg;
@@ -3109,7 +3113,7 @@ public class DistributionManager implements DM {
     long startTime = DistributionStats.getStatTime();
 
     Set result = sendViaMembershipManager(message.getRecipients(), message,
-        DistributionManager.this, this.stats);
+        ClusterDistributionManager.this, this.stats);
     long endTime = 0L;
     if (DistributionStats.enableClockStats) {
       endTime = NanoTimer.getTime();
@@ -3151,7 +3155,7 @@ public class DistributionManager implements DM {
         | InvalidDeltaException | CancelException ex) {
       throw ex;
     } catch (Exception ex) {
-      DistributionManager.this.exceptionInThreads = true;
+      ClusterDistributionManager.this.exceptionInThreads = true;
       String receiver = "NULL";
       if (message != null) {
         receiver = message.getRecipientsDescription();
@@ -3180,7 +3184,7 @@ public class DistributionManager implements DM {
    * @throws NotSerializableException If content cannot be serialized
    */
   private Set sendViaMembershipManager(InternalDistributedMember[] destinations,
-      DistributionMessage content, DistributionManager dm, DistributionStats stats)
+      DistributionMessage content, ClusterDistributionManager dm, DistributionStats stats)
       throws NotSerializableException {
     if (membershipManager == null) {
       logger.warn(LocalizedMessage.create(
@@ -3206,7 +3210,7 @@ public class DistributionManager implements DM {
      * will only be initialized upto the point at which it called startThreads
      */
     waitUntilReadyForMessages();
-    message.schedule(DistributionManager.this);
+    message.schedule(ClusterDistributionManager.this);
   }
 
   @Override
@@ -3964,9 +3968,9 @@ public class DistributionManager implements DM {
    *
    */
   private class DMListener implements DistributedMembershipListener {
-    DistributionManager dm;
+    ClusterDistributionManager dm;
 
-    public DMListener(DistributionManager dm) {
+    public DMListener(ClusterDistributionManager dm) {
       this.dm = dm;
     }
 
@@ -3978,7 +3982,7 @@ public class DistributionManager implements DM {
     @Override
     public void membershipFailure(String reason, Throwable t) {
       exceptionInThreads = true;
-      DistributionManager.this.rootCause = t;
+      ClusterDistributionManager.this.rootCause = t;
       getSystem().disconnect(reason, t, true);
     }
 
@@ -4036,7 +4040,7 @@ public class DistributionManager implements DM {
     }
 
     @Override
-    public DistributionManager getDM() {
+    public ClusterDistributionManager getDM() {
       return dm;
     }
 
@@ -4064,14 +4068,14 @@ public class DistributionManager implements DM {
       return this.id;
     }
 
-    void handleEvent(DistributionManager manager) {
+    void handleEvent(ClusterDistributionManager manager) {
       handleEvent(manager, manager.membershipListeners.keySet());
       handleEvent(manager, manager.allMembershipListeners);
     }
 
     protected abstract void handleEvent(MembershipListener listener);
 
-    private void handleEvent(DistributionManager manager,
+    private void handleEvent(ClusterDistributionManager manager,
         Set<MembershipListener> membershipListeners) {
       for (MembershipListener listener : membershipListeners) {
         try {
@@ -4227,7 +4231,7 @@ public class DistributionManager implements DM {
     }
 
     @Override
-    public void handleEvent(DistributionManager manager) {
+    public void handleEvent(ClusterDistributionManager manager) {
       manager.handleViewInstalledEvent(this);
     }
 
@@ -4421,7 +4425,7 @@ public class DistributionManager implements DM {
     synchronized (this.membersLock) {
       HashSet<InternalDistributedMember> result = new HashSet<InternalDistributedMember>();
       for (InternalDistributedMember m : this.members.keySet()) {
-        if (m.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
+        if (m.getVmKind() != ClusterDistributionManager.LOCATOR_DM_TYPE) {
           result.add(m);
         }
       }
@@ -4436,7 +4440,7 @@ public class DistributionManager implements DM {
     synchronized (this.membersLock) {
       HashSet<InternalDistributedMember> result = new HashSet<InternalDistributedMember>();
       for (InternalDistributedMember m : this.members.keySet()) {
-        if (m.getVmKind() == DistributionManager.LOCATOR_DM_TYPE) {
+        if (m.getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE) {
           result.add(m);
         }
       }
@@ -4471,9 +4475,9 @@ public class DistributionManager implements DM {
 
 
   private static class Stopper extends CancelCriterion {
-    private DistributionManager dm;
+    private ClusterDistributionManager dm;
 
-    Stopper(DistributionManager dm) {
+    Stopper(ClusterDistributionManager dm) {
       this.dm = dm;
     }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/CollectingReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/CollectingReplyProcessor.java
index f724ada..7580f4c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/CollectingReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/CollectingReplyProcessor.java
@@ -30,7 +30,7 @@ public class CollectingReplyProcessor<T> extends ReplyProcessor21 {
 
   private Map<InternalDistributedMember, T> results = new HashMap<InternalDistributedMember, T>();
 
-  public CollectingReplyProcessor(DM dm, Collection initMembers) {
+  public CollectingReplyProcessor(DistributionManager dm, Collection initMembers) {
     super(dm, initMembers);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DM.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DM.java
deleted file mode 100644
index 44ac87d..0000000
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DM.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.distributed.internal;
-
-import java.io.NotSerializableException;
-import java.net.InetAddress;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-
-import org.apache.geode.CancelCriterion;
-import org.apache.geode.admin.GemFireHealthConfig;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.Role;
-import org.apache.geode.distributed.internal.locks.ElderState;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.MembershipManager;
-import org.apache.geode.internal.Version;
-import org.apache.geode.internal.cache.InternalCache;
-
-/**
- * This interface defines the services provided by any class that is a distribution manager.
- */
-public interface DM extends ReplySender {
-
-  boolean shutdownInProgress();
-
-  /**
-   * Returns the current "cache time" in milliseconds since the epoch. The "cache time" takes into
-   * account skew among the local clocks on the various machines involved in the cache.
-   */
-  long cacheTimeMillis();
-
-  /**
-   * Returns the id of this distribution manager.
-   */
-  InternalDistributedMember getDistributionManagerId();
-
-  /**
-   * Get a set of all other members (both admin ones and normal).
-   *
-   * @since GemFire 5.7
-   */
-  Set getAllOtherMembers();
-
-  /**
-   * Returns the ID in the membership view that is equal to the argument. If the ID is not in the
-   * view, the argument is returned.
-   */
-  InternalDistributedMember getCanonicalId(DistributedMember id);
-
-  /**
-   * removes members that have older versions from the given collection, typically a Set from a
-   * distribution advisor
-   *
-   * @since GemFire 8.0
-   */
-  void retainMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
-      Version version);
-
-  /**
-   * removes members that have the given version or later from the given collection, typically a Set
-   * from a distribution advisor
-   *
-   * @since GemFire 8.0
-   */
-  void removeMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
-      Version version);
-
-  /**
-   * Returns an unmodifiable set containing the identities of all of the known distribution
-   * managers. As of 7.0 this includes locators since they have a cache.
-   */
-  Set getDistributionManagerIds();
-
-  /**
-   * Returns an unmodifiable set containing the identities of all of the known "normal" distribution
-   * managers. This does not include locators or admin members.
-   */
-  Set getNormalDistributionManagerIds();
-
-  /**
-   * Returns an unmodifiable set containing the identities of all of the known distribution managers
-   * including admin members.
-   *
-   * @since GemFire 5.7
-   */
-  Set getDistributionManagerIdsIncludingAdmin();
-
-  /**
-   * Returns a private-memory list containing getDistributionManagerIds() minus our id.
-   */
-  Set getOtherDistributionManagerIds();
-
-  /**
-   * Returns a private-memory list containing getNormalDistributionManagerIds() minus our id.
-   */
-  Set getOtherNormalDistributionManagerIds();
-
-  /**
-   * Add a membership listener and return other DistribtionManagerIds as an atomic operation
-   */
-  Set addMembershipListenerAndGetDistributionManagerIds(MembershipListener l);
-
-  /**
-   * Add a membership listener for all members and return other DistribtionManagerIds as an atomic
-   * operation
-   *
-   * @since GemFire 5.7
-   */
-  Set addAllMembershipListenerAndGetAllIds(MembershipListener l);
-
-  /**
-   * Returns the identity of this <code>DistributionManager</code>
-   */
-  InternalDistributedMember getId();
-
-  /**
-   * Return true if no other distribution manager was in this group when he joined.
-   *
-   * @since GemFire 4.0
-   */
-  boolean isAdam();
-
-  /**
-   * Returns the identity of the oldest DM in this group.
-   *
-   * Note that this method may return null (no valid elders exist).
-   *
-   * @return the elder member, possibly null
-   * @since GemFire 4.0
-   */
-  InternalDistributedMember getElderId();
-
-  /**
-   * Return true if this is the oldest DM in this group.
-   *
-   * @since GemFire 5.0
-   */
-  boolean isElder();
-
-  /**
-   * Return true if this DM is a loner that is not part of a real distributed system.
-   */
-  boolean isLoner();
-
-  /**
-   * Returns the elder state or null if this DM is not the elder.
-   * <p>
-   * If useTryLock is true, then it will attempt to get a try-lock and throw IllegalStateException
-   * if another thread already holds the try-lock.
-   *
-   * @param force if true then this DM must become the elder.
-   * @param useTryLock if true then a try-lock will be used
-   * @throws IllegalStateException if elder try lock fails
-   * @since GemFire 4.0
-   */
-  ElderState getElderState(boolean force, boolean useTryLock);
-
-  /**
-   * Returns the membership port of the underlying distribution manager used for communication.
-   *
-   * @since GemFire 3.0
-   */
-  long getMembershipPort();
-
-  /**
-   * Sends a message
-   *
-   * @param msg
-   * @return recipients who did not receive the message
-   */
-  Set putOutgoing(DistributionMessage msg);
-
-  /**
-   * Returns the distributed system to which this distribution manager is connected.
-   */
-  InternalDistributedSystem getSystem();
-
-  /**
-   * Adds a <code>MembershipListener</code> to this distribution manager.
-   */
-  void addMembershipListener(MembershipListener l);
-
-  /**
-   * Removes a <code>MembershipListener</code> from this distribution manager.
-   *
-   * @throws IllegalArgumentException <code>l</code> was not registered on this distribution manager
-   */
-  void removeMembershipListener(MembershipListener l);
-
-  /**
-   * Removes a <code>MembershipListener</code> listening for all members from this distribution
-   * manager.
-   *
-   * @throws IllegalArgumentException <code>l</code> was not registered on this distribution manager
-   * @since GemFire 5.7
-   */
-  void removeAllMembershipListener(MembershipListener l);
-
-  /**
-   * Makes note of a new administration console (admin-only member).
-   *
-   * @Deprecated admin members are deprecated
-   */
-  void addAdminConsole(InternalDistributedMember id);
-
-  DMStats getStats();
-
-  /**
-   * Used to get the DistributionConfig so that Connection can figure out if it is configured for
-   * async comms.
-   *
-   * @since GemFire 4.2.1
-   */
-  DistributionConfig getConfig();
-
-  /**
-   * Makes note of a distribution manager that has shut down. Invokes the appropriate listeners.
-   *
-   * @param theId The id of the distribution manager starting up
-   *
-   * @see ShutdownMessage#process
-   */
-  void handleManagerDeparture(InternalDistributedMember theId, boolean crashed, String reason);
-
-  /**
-   * getThreadPool gets this distribution manager's message-processing thread pool
-   */
-  ExecutorService getThreadPool();
-
-  /**
-   * Return the high-priority message-processing executor
-   */
-  ExecutorService getHighPriorityThreadPool();
-
-  /**
-   * Return the waiting message-processing executor
-   */
-  ExecutorService getWaitingThreadPool();
-
-  /**
-   * Return the special waiting message-processing executor
-   */
-  ExecutorService getPrMetaDataCleanupThreadPool();
-
-  /**
-   * Return the executor used for function processing
-   */
-  Executor getFunctionExcecutor();
-
-  /**
-   * gets this distribution manager's message-processing executor for ordered (i.e. serialized)
-   * message processing
-   */
-  // public Executor getSerialExecutor();
-
-  void close();
-
-  /**
-   * Returns the ordered list of current DistributionManagers in oldest-to-youngest order. Added for
-   * DLockGrantor
-   */
-  List<InternalDistributedMember> getViewMembers();
-
-  /**
-   * Returns the oldest member in the given set of distribution managers. The current implementation
-   * may use n*n/2 comparisons, so use this judiciously
-   *
-   * @return the oldest member of the given collection
-   * @throws NoSuchElementException when none of the given members is actually a member of the
-   *         distributed system.
-   */
-  DistributedMember getOldestMember(Collection members) throws NoSuchElementException;
-
-  /**
-   * @return Set of Admin VM nodes
-   */
-  Set<InternalDistributedMember> getAdminMemberSet();
-
-  /** Throws ShutdownException if closeInProgress returns true. */
-  void throwIfDistributionStopped();
-
-  /** Returns count of members filling the specified role */
-  int getRoleCount(Role role);
-
-  /** Returns true if at least one member is filling the specified role */
-  boolean isRolePresent(Role role);
-
-  /** Returns a set of all roles currently in the distributed system. */
-  Set getAllRoles();
-
-  /** Returns true if id is a current member of the distributed system */
-  boolean isCurrentMember(InternalDistributedMember id);
-
-  /**
-   * Remove given member from list of members who are pending a startup reply
-   *
-   * @param m the member
-   * @param departed true if we're removing them due to membership
-   */
-  void removeUnfinishedStartup(InternalDistributedMember m, boolean departed);
-
-  void setUnfinishedStartups(Collection s);
-
-  /**
-   * Return the CancelCriterion for this DM.
-   *
-   * @return CancelCriterion for this DM
-   */
-  CancelCriterion getCancelCriterion();
-
-  /**
-   * Return the membership manager for this DM
-   *
-   * @return the membership manager
-   */
-  MembershipManager getMembershipManager();
-
-  /**
-   * Set the root cause for DM failure
-   *
-   * @param t the underlying failure
-   */
-  void setRootCause(Throwable t);
-
-  /**
-   * Return the underlying root cause for DM failure, possibly null
-   *
-   * @return the underlying root cause
-   */
-  Throwable getRootCause();
-
-  /**
-   * Return all members that are on the the this host
-   *
-   * @return set of {@link InternalDistributedMember} including this VM
-   * @since GemFire 5.9
-   */
-  Set<InternalDistributedMember> getMembersInThisZone();
-
-  /**
-   * Acquire a permit to request a GII from another member
-   */
-  void acquireGIIPermitUninterruptibly();
-
-  /**
-   * Release a permit to request a GII from another member.
-   */
-  void releaseGIIPermit();
-
-  int getDistributedSystemId();
-
-  boolean enforceUniqueZone();
-
-  Set<InternalDistributedMember> getMembersInSameZone(InternalDistributedMember acceptedMember);
-
-  boolean areInSameZone(InternalDistributedMember member1, InternalDistributedMember member2);
-
-  /**
-   * Returns true is the two members are on the same equivalent host machine based on overlapping IP
-   * addresses collected for all NICs on each member's machine.
-   *
-   * @param member1 First member
-   * @param member2 Second member
-   */
-  boolean areOnEquivalentHost(InternalDistributedMember member1, InternalDistributedMember member2);
-
-  Set<InetAddress> getEquivalents(InetAddress in);
-
-  Set<DistributedMember> getGroupMembers(String group);
-
-  /**
-   * Adds the entry in hostedLocators for a member with one or more hosted locators. The value is a
-   * collection of host[port] strings. If a bind-address was used for a locator then the form is
-   * bind-addr[port].
-   * <p>
-   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
-   *
-   * @param isSharedConfigurationEnabled flag to determine if the locator has enabled shared
-   *        configuration
-   *
-   * @since GemFire 6.6.3
-   */
-  void addHostedLocators(InternalDistributedMember member, Collection<String> locators,
-      boolean isSharedConfigurationEnabled);
-
-
-  /**
-   * Gets the value in hostedLocators for a member with one or more hosted locators. The value is a
-   * collection of host[port] strings. If a bind-address was used for a locator then the form is
-   * bind-addr[port].
-   * <p>
-   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
-   *
-   * @since GemFire 6.6.3
-   */
-  Collection<String> getHostedLocators(InternalDistributedMember member);
-
-  /**
-   * Gets the map of all members hosting locators. The key is the member, and the value is a
-   * collection of host[port] strings. If a bind-address was used for a locator then the form is
-   * bind-addr[port].
-   *
-   *
-   * <p>
-   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
-   *
-   * @since GemFire 6.6.3
-   */
-  Map<InternalDistributedMember, Collection<String>> getAllHostedLocators();
-
-  /**
-   * Gets the map of all members hosting locators with shared configuration. The key is the member,
-   * and the value is a collection of host[port] strings. If a bind-address was used for a locator
-   * then the form is bind-addr[port].
-   * <p>
-   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
-   *
-   * @since GemFire 8.0
-   */
-  Map<InternalDistributedMember, Collection<String>> getAllHostedLocatorsWithSharedConfiguration();
-
-  /**
-   * Forces use of UDP for communications in the current thread. UDP is connectionless, so no tcp/ip
-   * connections will be created or used for messaging until this setting is released with
-   * releaseUDPMessagingForCurrentThread.
-   */
-  void forceUDPMessagingForCurrentThread();
-
-  /**
-   * Releases use of UDP for all communications in the current thread, as established by
-   * forceUDPMessagingForCurrentThread.
-   */
-  void releaseUDPMessagingForCurrentThread();
-
-  /**
-   * returns the type of node
-   *
-   * @see DistributionManager#NORMAL_DM_TYPE
-   * @see DistributionManager#LONER_DM_TYPE
-   * @see DistributionManager#LOCATOR_DM_TYPE
-   * @see DistributionManager#ADMIN_ONLY_DM_TYPE
-   */
-  int getDMType();
-
-  /**
-   * The returned cache will be null if the cache does not yet exist. Note that the returned cache
-   * may be one that is already closed. Callers of GemFireCacheImpl.getInstance() should try to use
-   * this method.
-   */
-  InternalCache getCache();
-
-  /**
-   * Returns an existing non-closed cache associated with this DM. Callers of
-   * CacheFactory.getAnyInstance(), CacheFactory.getInstance(DistributedSystem) or
-   * GemFireCacheImpl.getExisting() should try to use this method.
-   *
-   * @throws CacheClosedException if a cache has not yet been associated with this DM or it has been
-   *         {@link Cache#isClosed closed}.
-   */
-  InternalCache getExistingCache();
-
-  void setCache(InternalCache instance);
-
-  HealthMonitor getHealthMonitor(InternalDistributedMember owner);
-
-  void removeHealthMonitor(InternalDistributedMember owner, int theId);
-
-  void createHealthMonitor(InternalDistributedMember owner, GemFireHealthConfig cfg);
-}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DirectReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DirectReplyProcessor.java
index 17dce55..860e79d 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DirectReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DirectReplyProcessor.java
@@ -59,26 +59,28 @@ public class DirectReplyProcessor extends ReplyProcessor21 {
    * @param dm the DistributionManager to use for messaging and membership
    * @param member the member this processor wants a reply from
    */
-  public DirectReplyProcessor(DM dm, InternalDistributedMember member) {
+  public DirectReplyProcessor(DistributionManager dm, InternalDistributedMember member) {
     this(dm, Collections.singleton(member));
   }
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param dm the DistributionManager to use for messaging and membership
    * @param initMembers the Set of members this processor wants replies from
    */
-  public DirectReplyProcessor(DM dm, Collection initMembers) {
+  public DirectReplyProcessor(DistributionManager dm, Collection initMembers) {
     this(dm, dm.getSystem(), initMembers, null);
   }
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param system the DistributedSystem connection
    * @param initMembers the Set of members this processor wants replies from
@@ -89,8 +91,9 @@ public class DirectReplyProcessor extends ReplyProcessor21 {
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param system the DistributedSystem connection
    * @param initMembers the Set of members this processor wants replies from
@@ -108,8 +111,8 @@ public class DirectReplyProcessor extends ReplyProcessor21 {
    * @param initMembers
    * @param cancelCriterion
    */
-  public DirectReplyProcessor(DM dm, InternalDistributedSystem system, Collection initMembers,
-      CancelCriterion cancelCriterion) {
+  public DirectReplyProcessor(DistributionManager dm, InternalDistributedSystem system,
+      Collection initMembers, CancelCriterion cancelCriterion) {
     super(dm, system, initMembers, cancelCriterion, false);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisee.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisee.java
index ae3b1a7..756ddea 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisee.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisee.java
@@ -15,9 +15,7 @@
 package org.apache.geode.distributed.internal;
 
 import org.apache.geode.CancelCriterion;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionAdvisor.Profile;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
 /**
  * Resource which uses a {@link DistributionAdvisor}.
@@ -31,7 +29,7 @@ public interface DistributionAdvisee {
    *
    * @return the underlying <code>DistributionManager</code>
    */
-  public DM getDistributionManager();
+  public DistributionManager getDistributionManager();
 
   /**
    * @return the cancellation object for the advisee
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java
index e48d4df..7df44aa 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java
@@ -374,7 +374,7 @@ public class DistributionAdvisor {
     }
   }
 
-  public DM getDistributionManager() {
+  public DistributionManager getDistributionManager() {
     return getAdvisee().getDistributionManager();
   }
 
@@ -1611,8 +1611,8 @@ public class DistributionAdvisor {
     /**
      * Process add/remove/update of an incoming profile.
      */
-    public void processIncoming(DistributionManager dm, String adviseePath, boolean removeProfile,
-        boolean exchangeProfiles, final List<Profile> replyProfiles) {
+    public void processIncoming(ClusterDistributionManager dm, String adviseePath,
+        boolean removeProfile, boolean exchangeProfiles, final List<Profile> replyProfiles) {
       // nothing by default; just log that nothing was done
       if (logger.isDebugEnabled()) {
         logger.debug("While processing UpdateAttributes message ignored incoming profile: {}",
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
index 5a4de3d..94c9d52 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionManager.java
@@ -14,4530 +14,475 @@
  */
 package org.apache.geode.distributed.internal;
 
-import java.io.NotSerializableException;
 import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.CancelCriterion;
-import org.apache.geode.CancelException;
-import org.apache.geode.ForcedDisconnectException;
-import org.apache.geode.IncompatibleSystemException;
-import org.apache.geode.InternalGemFireError;
-import org.apache.geode.InternalGemFireException;
-import org.apache.geode.InvalidDeltaException;
-import org.apache.geode.SystemConnectException;
-import org.apache.geode.SystemFailure;
-import org.apache.geode.ToDataException;
 import org.apache.geode.admin.GemFireHealthConfig;
+import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.DistributedSystemDisconnectedException;
-import org.apache.geode.distributed.Locator;
 import org.apache.geode.distributed.Role;
 import org.apache.geode.distributed.internal.locks.ElderState;
-import org.apache.geode.distributed.internal.membership.DistributedMembershipListener;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.MemberFactory;
 import org.apache.geode.distributed.internal.membership.MembershipManager;
-import org.apache.geode.distributed.internal.membership.NetView;
-import org.apache.geode.i18n.StringId;
-import org.apache.geode.internal.Assert;
-import org.apache.geode.internal.NanoTimer;
-import org.apache.geode.internal.OSProcess;
-import org.apache.geode.internal.SetUtils;
 import org.apache.geode.internal.Version;
-import org.apache.geode.internal.admin.remote.AdminConsoleDisconnectMessage;
-import org.apache.geode.internal.admin.remote.RemoteGfManagerAgent;
-import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
-import org.apache.geode.internal.cache.InitialImageOperation;
 import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.LoggingThreadGroup;
-import org.apache.geode.internal.logging.log4j.AlertAppender;
-import org.apache.geode.internal.logging.log4j.LocalizedMessage;
-import org.apache.geode.internal.logging.log4j.LogMarker;
-import org.apache.geode.internal.net.SocketCreator;
-import org.apache.geode.internal.sequencelog.MembershipLogger;
-import org.apache.geode.internal.tcp.Connection;
-import org.apache.geode.internal.tcp.ConnectionTable;
-import org.apache.geode.internal.tcp.ReenteredConnectException;
-import org.apache.geode.internal.util.concurrent.StoppableReentrantLock;
 
 /**
- * The <code>DistributionManager</code> uses a {@link MembershipManager} to distribute
- * {@link DistributionMessage messages}. It also reports on who is currently in the distributed
- * system and tracks the elder member for the distributed lock service. You may also register a
- * membership listener with the DistributionManager to receive notification of changes in
- * membership.
- *
- * <P>
- *
- * Code that wishes to send a {@link DistributionMessage} must get the
- * <code>DistributionManager</code> and invoke {@link #putOutgoing}.
- *
- * <P>
- *
- * @see DistributionMessage#process
- * @see IgnoredByManager
+ * This interface defines the services provided by any class that is a distribution manager.
  */
-public class DistributionManager implements DM {
-
-  private static final Logger logger = LogService.getLogger();
+public interface DistributionManager extends ReplySender {
 
-  private static final int STARTUP_TIMEOUT =
-      Integer.getInteger("DistributionManager.STARTUP_TIMEOUT", 15000).intValue();
-
-  public static final boolean DEBUG_NO_ACKNOWLEDGEMENTS =
-      Boolean.getBoolean("DistributionManager.DEBUG_NO_ACKNOWLEDGEMENTS");
+  boolean shutdownInProgress();
 
   /**
-   * maximum time, in milliseconds, to wait for all threads to exit
+   * Returns the current "cache time" in milliseconds since the epoch. The "cache time" takes into
+   * account skew among the local clocks on the various machines involved in the cache.
    */
-  private static final int MAX_STOP_TIME = 20000;
+  long cacheTimeMillis();
 
   /**
-   * Time to sleep, in milliseconds, while polling to see if threads have finished
+   * Returns the id of this distribution manager.
    */
-  private static final int STOP_PAUSE_TIME = 1000;
+  InternalDistributedMember getDistributionManagerId();
 
   /**
-   * Maximum number of interrupt attempts to stop a thread
+   * Get a set of all other members (both admin ones and normal).
+   *
+   * @since GemFire 5.7
    */
-  private static final int MAX_STOP_ATTEMPTS = 10;
-
-
-
-  private static final boolean SYNC_EVENTS = Boolean.getBoolean("DistributionManager.syncEvents");
+  Set getAllOtherMembers();
 
   /**
-   * Flag indicating whether to use single Serial-Executor thread or Multiple Serial-executor
-   * thread,
+   * Returns the ID in the membership view that is equal to the argument. If the ID is not in the
+   * view, the argument is returned.
    */
-  private static final boolean MULTI_SERIAL_EXECUTORS =
-      !Boolean.getBoolean("DistributionManager.singleSerialExecutor");
-
-  private static final int MAX_WAITING_THREADS =
-      Integer.getInteger("DistributionManager.MAX_WAITING_THREADS", Integer.MAX_VALUE).intValue();
-
-  private static final int MAX_PR_META_DATA_CLEANUP_THREADS =
-      Integer.getInteger("DistributionManager.MAX_PR_META_DATA_CLEANUP_THREADS", 1).intValue();
-
-  public static final int MAX_THREADS =
-      Integer.getInteger("DistributionManager.MAX_THREADS", 100).intValue();
-
-  private static final int MAX_PR_THREADS = Integer.getInteger("DistributionManager.MAX_PR_THREADS",
-      Math.max(Runtime.getRuntime().availableProcessors() * 4, 16)).intValue();
-
-  private static final int MAX_FE_THREADS = Integer.getInteger("DistributionManager.MAX_FE_THREADS",
-      Math.max(Runtime.getRuntime().availableProcessors() * 4, 16)).intValue();
-
-
-
-  private static final int INCOMING_QUEUE_LIMIT =
-      Integer.getInteger("DistributionManager.INCOMING_QUEUE_LIMIT", 80000).intValue();
-
-  /** Throttling based on the Queue byte size */
-  private static final double THROTTLE_PERCENT = (double) (Integer
-      .getInteger("DistributionManager.SERIAL_QUEUE_THROTTLE_PERCENT", 75).intValue()) / 100;
-
-  static final int SERIAL_QUEUE_BYTE_LIMIT = Integer
-      .getInteger("DistributionManager.SERIAL_QUEUE_BYTE_LIMIT", (40 * (1024 * 1024))).intValue();
-
-  static final int SERIAL_QUEUE_THROTTLE =
-      Integer.getInteger("DistributionManager.SERIAL_QUEUE_THROTTLE",
-          (int) (SERIAL_QUEUE_BYTE_LIMIT * THROTTLE_PERCENT)).intValue();
-
-  static final int TOTAL_SERIAL_QUEUE_BYTE_LIMIT =
-      Integer.getInteger("DistributionManager.TOTAL_SERIAL_QUEUE_BYTE_LIMIT", (80 * (1024 * 1024)))
-          .intValue();
-
-  static final int TOTAL_SERIAL_QUEUE_THROTTLE =
-      Integer.getInteger("DistributionManager.TOTAL_SERIAL_QUEUE_THROTTLE",
-          (int) (SERIAL_QUEUE_BYTE_LIMIT * THROTTLE_PERCENT)).intValue();
-
-  /** Throttling based on the Queue item size */
-  static final int SERIAL_QUEUE_SIZE_LIMIT =
-      Integer.getInteger("DistributionManager.SERIAL_QUEUE_SIZE_LIMIT", 20000).intValue();
-
-  static final int SERIAL_QUEUE_SIZE_THROTTLE =
-      Integer.getInteger("DistributionManager.SERIAL_QUEUE_SIZE_THROTTLE",
-          (int) (SERIAL_QUEUE_SIZE_LIMIT * THROTTLE_PERCENT)).intValue();
-
-  /** Max number of serial Queue executors, in case of multi-serial-queue executor */
-  static final int MAX_SERIAL_QUEUE_THREAD =
-      Integer.getInteger("DistributionManager.MAX_SERIAL_QUEUE_THREAD", 20).intValue();
-
-
-
-  /** The DM type for regular distribution managers */
-  public static final int NORMAL_DM_TYPE = 10;
-
-  /** The DM type for locator distribution managers */
-  public static final int LOCATOR_DM_TYPE = 11;
-
-  /** The DM type for Console (admin-only) distribution managers */
-  public static final int ADMIN_ONLY_DM_TYPE = 12;
-
-  /** The DM type for stand-alone members */
-  public static final int LONER_DM_TYPE = 13;
-
-
+  InternalDistributedMember getCanonicalId(DistributedMember id);
 
   /**
-   * @see org.apache.geode.distributed.internal.PooledDistributionMessage
+   * removes members that have older versions from the given collection, typically a Set from a
+   * distribution advisor
+   *
+   * @since GemFire 8.0
    */
-  public static final int STANDARD_EXECUTOR = 73;
+  void retainMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
+      Version version);
 
   /**
-   * @see org.apache.geode.distributed.internal.SerialDistributionMessage
+   * removes members that have the given version or later from the given collection, typically a Set
+   * from a distribution advisor
+   *
+   * @since GemFire 8.0
    */
-  public static final int SERIAL_EXECUTOR = 74;
+  void removeMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
+      Version version);
 
   /**
-   * @see org.apache.geode.distributed.internal.HighPriorityDistributionMessage
+   * Returns an unmodifiable set containing the identities of all of the known distribution
+   * managers. As of 7.0 this includes locators since they have a cache.
    */
-  public static final int HIGH_PRIORITY_EXECUTOR = 75;
-
-  // 76 not in use
+  Set getDistributionManagerIds();
 
   /**
-   * @see org.apache.geode.internal.cache.InitialImageOperation
+   * Returns an unmodifiable set containing the identities of all of the known "normal" distribution
+   * managers. This does not include locators or admin members.
    */
-  public static final int WAITING_POOL_EXECUTOR = 77;
+  Set getNormalDistributionManagerIds();
 
   /**
-   * @see org.apache.geode.internal.cache.InitialImageOperation
+   * Returns an unmodifiable set containing the identities of all of the known distribution managers
+   * including admin members.
+   *
+   * @since GemFire 5.7
    */
-  public static final int PARTITIONED_REGION_EXECUTOR = 78;
-
+  Set getDistributionManagerIdsIncludingAdmin();
 
   /**
-   * Executor for view related messages
-   *
-   * @see org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage
+   * Returns a private-memory list containing getDistributionManagerIds() minus our id.
    */
-  public static final int VIEW_EXECUTOR = 79;
-
-
-  public static final int REGION_FUNCTION_EXECUTION_EXECUTOR = 80;
-
-
-
-  /** Is this node running an AdminDistributedSystem? */
-  private static volatile boolean isDedicatedAdminVM = false;
-
-  private static ThreadLocal<Boolean> isStartupThread = new ThreadLocal();
+  Set getOtherDistributionManagerIds();
 
   /**
-   * Identifier for function execution threads and any of their children
+   * Returns a private-memory list containing getNormalDistributionManagerIds() minus our id.
    */
-  private static final InheritableThreadLocal<Boolean> isFunctionExecutionThread =
-      new InheritableThreadLocal<Boolean>() {
-        @Override
-        protected Boolean initialValue() {
-          return Boolean.FALSE;
-        }
-      };
-
-
-
-  ///////////////////// Instance Fields //////////////////////
+  Set getOtherNormalDistributionManagerIds();
 
   /**
-   * Mutex to control access to {@link #waitingForElderChange} or {@link #elder}.
+   * Add a membership listener and return other DistribtionManagerIds as an atomic operation
    */
-  private final Object elderMonitor = new Object();
+  Set addMembershipListenerAndGetDistributionManagerIds(MembershipListener l);
 
   /**
-   * Must be read/written while holding {@link #elderMonitor}
+   * Add a membership listener for all members and return other DistribtionManagerIds as an atomic
+   * operation
    *
-   * @see #elderChangeWait()
+   * @since GemFire 5.7
    */
-  private boolean waitingForElderChange = false;
+  Set addAllMembershipListenerAndGetAllIds(MembershipListener l);
 
   /**
-   * @see DM#isAdam()
+   * Returns the identity of this <code>DistributionManager</code>
    */
-  private boolean adam = false;
+  InternalDistributedMember getId();
 
   /**
-   * This is the "elder" member of the distributed system, responsible for certain types of
-   * arbitration.
-   *
-   * Must hold {@link #elderMonitor} in order to change this.
+   * Return true if no other distribution manager was in this group when he joined.
    *
-   * @see #getElderId()
+   * @since GemFire 4.0
    */
-  protected volatile InternalDistributedMember elder = null;
-
-  /** The id of this distribution manager */
-  protected final InternalDistributedMember localAddress;
+  boolean isAdam();
 
   /**
-   * The distribution manager type of this dm; set in its constructor.
+   * Returns the identity of the oldest DM in this group.
+   *
+   * Note that this method may return null (no valid elders exist).
+   *
+   * @return the elder member, possibly null
+   * @since GemFire 4.0
    */
-  private final int dmType;
+  InternalDistributedMember getElderId();
 
   /**
-   * The <code>MembershipListener</code>s that are registered on this manager.
+   * Return true if this is the oldest DM in this group.
+   *
+   * @since GemFire 5.0
    */
-  private final ConcurrentMap<MembershipListener, Boolean> membershipListeners;
+  boolean isElder();
 
   /**
-   * The <code>MembershipListener</code>s that are registered on this manager for ALL members.
-   *
-   * @since GemFire 5.7
+   * Return true if this DM is a loner that is not part of a real distributed system.
    */
-  protected volatile Set<MembershipListener> allMembershipListeners = Collections.emptySet();
+  boolean isLoner();
 
   /**
-   * A lock to hold while adding and removing all membership listeners.
+   * Returns the elder state or null if this DM is not the elder.
+   * <p>
+   * If useTryLock is true, then it will attempt to get a try-lock and throw IllegalStateException
+   * if another thread already holds the try-lock.
    *
-   * @since GemFire 5.7
+   * @param force if true then this DM must become the elder.
+   * @param useTryLock if true then a try-lock will be used
+   * @throws IllegalStateException if elder try lock fails
+   * @since GemFire 4.0
    */
-  private final Object allMembershipListenersLock = new MembershipListenersLock();
-
-  /** A queue of MemberEvent instances */
-  private final BlockingQueue<MemberEvent> membershipEventQueue = new LinkedBlockingQueue();
-
-  /** Used to invoke registered membership listeners in the background. */
-  private Thread memberEventThread;
-
-
-  /** A brief description of this DistributionManager */
-  protected final String description;
-
-  /** Statistics about distribution */
-  protected DistributionStats stats;
-
-  /** Did an exception occur in one of the DM threads? */
-  private boolean exceptionInThreads;
-
-  private volatile boolean shutdownMsgSent = false;
-
-  /** Set to true when this manager is being shutdown */
-  private volatile boolean closeInProgress = false;
-
-  private volatile boolean receivedStartupResponse = false;
+  ElderState getElderState(boolean force, boolean useTryLock);
 
-  private volatile String rejectionMessage = null;
-
-  private MembershipManager membershipManager;
-
-  /**
-   * The (non-admin-only) members of the distributed system. This is a map of memberid->memberid for
-   * fast access to canonical ID references. All accesses to this field must be synchronized on
-   * {@link #membersLock}.
-   */
-  private Map<InternalDistributedMember, InternalDistributedMember> members =
-      Collections.emptyMap();
   /**
-   * All (admin and non-admin) members of the distributed system. All accesses to this field must be
-   * synchronized on {@link #membersLock}.
-   */
-  private Set<InternalDistributedMember> membersAndAdmin = Collections.emptySet();
-  /**
-   * Map of all locator members of the distributed system. The value is a collection of locator
-   * strings that are hosted in that member. All accesses to this field must be synchronized on
-   * {@link #membersLock}.
+   * Returns the membership port of the underlying distribution manager used for communication.
+   *
+   * @since GemFire 3.0
    */
-  private Map<InternalDistributedMember, Collection<String>> hostedLocatorsAll =
-      Collections.emptyMap();
+  long getMembershipPort();
 
   /**
-   * Map of all locator members of the distributed system which have the shared configuration. The
-   * value is a collection of locator strings that are hosted in that member. All accesses to this
-   * field must be synchronized on {@link #membersLock}.
+   * Sends a message
+   *
+   * @param msg
+   * @return recipients who did not receive the message
    */
-  private Map<InternalDistributedMember, Collection<String>> hostedLocatorsWithSharedConfiguration =
-      Collections.emptyMap();
+  Set putOutgoing(DistributionMessage msg);
 
   /**
-   * The lock held while accessing the field references to the following:<br>
-   * 1) {@link #members}<br>
-   * 2) {@link #membersAndAdmin}<br>
-   * 3) {@link #hostedLocatorsAll}<br>
-   * 4) {@link #hostedLocatorsWithSharedConfiguration}<br>
+   * Returns the distributed system to which this distribution manager is connected.
    */
-  private final Object membersLock = new MembersLock();
+  InternalDistributedSystem getSystem();
 
   /**
-   * The lock held while writing {@link #adminConsoles}.
-   */
-  private final Object adminConsolesLock = new Object();
-  /**
-   * The ids of all known admin consoles Uses Copy on Write. Writers must sync on adminConsolesLock.
-   * Readers don't need to sync.
+   * Adds a <code>MembershipListener</code> to this distribution manager.
    */
-  private volatile Set<InternalDistributedMember> adminConsoles = Collections.emptySet();
-
-  /** The group of distribution manager threads */
-  protected LoggingThreadGroup threadGroup;
-
-  /** Message processing thread pool */
-  private ThreadPoolExecutor threadPool;
+  void addMembershipListener(MembershipListener l);
 
   /**
-   * High Priority processing thread pool, used for initializing messages such as UpdateAttributes
-   * and CreateRegion messages
+   * Removes a <code>MembershipListener</code> from this distribution manager.
+   *
+   * @throws IllegalArgumentException <code>l</code> was not registered on this distribution manager
    */
-  private ThreadPoolExecutor highPriorityPool;
+  void removeMembershipListener(MembershipListener l);
 
   /**
-   * Waiting Pool, used for messages that may have to wait on something. Use this separate pool with
-   * an unbounded queue so that waiting runnables don't get in the way of other processing threads.
-   * Used for threads that will most likely have to wait for a region to be finished initializing
-   * before it can proceed
+   * Removes a <code>MembershipListener</code> listening for all members from this distribution
+   * manager.
+   *
+   * @throws IllegalArgumentException <code>l</code> was not registered on this distribution manager
+   * @since GemFire 5.7
    */
-  private ThreadPoolExecutor waitingPool;
-
-  private ThreadPoolExecutor prMetaDataCleanupThreadPool;
+  void removeAllMembershipListener(MembershipListener l);
 
   /**
-   * Thread used to decouple {@link org.apache.geode.internal.cache.partitioned.PartitionMessage}s
-   * from {@link org.apache.geode.internal.cache.DistributedCacheOperation}s </b>
+   * Makes note of a new administration console (admin-only member).
    *
-   * @see #SERIAL_EXECUTOR
+   * @Deprecated admin members are deprecated
    */
-  private ThreadPoolExecutor partitionedRegionThread;
-  private ThreadPoolExecutor partitionedRegionPool;
+  void addAdminConsole(InternalDistributedMember id);
 
-  /** Function Execution executors */
-  private ThreadPoolExecutor functionExecutionThread;
-  private ThreadPoolExecutor functionExecutionPool;
-
-  /** Message processing executor for serial, ordered, messages. */
-  private ThreadPoolExecutor serialThread;
+  DMStats getStats();
 
   /**
-   * Message processing executor for view messages
+   * Used to get the DistributionConfig so that Connection can figure out if it is configured for
+   * async comms.
    *
-   * @see org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage
-   */
-  private ThreadPoolExecutor viewThread;
-
-  /**
-   * If using a throttling queue for the serialThread, we cache the queue here so we can see if
-   * delivery would block
+   * @since GemFire 4.2.1
    */
-  private ThrottlingMemLinkedQueueWithDMStats serialQueue;
-
-  /** a map keyed on InternalDistributedMember, to direct channels to other systems */
-  // protected final Map channelMap = CFactory.createCM();
-
-  private volatile boolean readyForMessages = false;
+  DistributionConfig getConfig();
 
   /**
-   * Set to true once this DM is ready to send messages. Note that it is always ready to send the
-   * startup message.
+   * Makes note of a distribution manager that has shut down. Invokes the appropriate listeners.
+   *
+   * @param theId The id of the distribution manager starting up
+   *
+   * @see ShutdownMessage#process
    */
-  private volatile boolean readyToSendMsgs = false;
-  private final Object readyToSendMsgsLock = new Object();
-
-  /** Is this distribution manager closed? */
-  private volatile boolean closed = false;
+  void handleManagerDeparture(InternalDistributedMember theId, boolean crashed, String reason);
 
   /**
-   * The distributed system to which this distribution manager is connected.
+   * getThreadPool gets this distribution manager's message-processing thread pool
    */
-  private InternalDistributedSystem system;
-
-  /** The remote transport configuration for this dm */
-  private RemoteTransportConfig transport;
+  ExecutorService getThreadPool();
 
   /**
-   * The administration agent associated with this distribution manager.
+   * Return the high-priority message-processing executor
    */
-  private volatile RemoteGfManagerAgent agent;
-
-  private SerialQueuedExecutorPool serialQueuedExecutorPool;
+  ExecutorService getHighPriorityThreadPool();
 
   /**
-   * TODO why does the distribution manager arbitrate GII operations? That should be a Cache
-   * function
+   * Return the waiting message-processing executor
    */
-  private final Semaphore parallelGIIs = new Semaphore(InitialImageOperation.MAX_PARALLEL_GIIS);
+  ExecutorService getWaitingThreadPool();
 
   /**
-   * Map of InetAddress to HashSets of InetAddress, to define equivalences between network interface
-   * cards and hosts.
+   * Return the special waiting message-processing executor
    */
-  private final HashMap<InetAddress, Set<InetAddress>> equivalentHosts = new HashMap<>();
-
-  private int distributedSystemId = DistributionConfig.DEFAULT_DISTRIBUTED_SYSTEM_ID;
-
-
-  private final Map<InternalDistributedMember, String> redundancyZones =
-      Collections.synchronizedMap(new HashMap<InternalDistributedMember, String>());
-
-  private boolean enforceUniqueZone = false;
+  ExecutorService getPrMetaDataCleanupThreadPool();
 
   /**
-   * root cause of forcibly shutting down the distribution manager
+   * Return the executor used for function processing
    */
-  volatile Throwable rootCause = null;
+  Executor getFunctionExcecutor();
 
   /**
-   * @see #closeInProgress
+   * gets this distribution manager's message-processing executor for ordered (i.e. serialized)
+   * message processing
    */
-  private final Object shutdownMutex = new Object();
-
-
+  // public Executor getSerialExecutor();
 
-  ////////////////////// Static Methods //////////////////////
+  void close();
 
   /**
-   * Is the current thread used for executing Functions?
+   * Returns the ordered list of current DistributionManagers in oldest-to-youngest order. Added for
+   * DLockGrantor
    */
-  public static Boolean isFunctionExecutionThread() {
-    return isFunctionExecutionThread.get();
-  }
+  List<InternalDistributedMember> getViewMembers();
 
   /**
-   * Creates a new distribution manager and discovers the other members of the distributed system.
-   * Note that it does not check to see whether or not this VM already has a distribution manager.
+   * Returns the oldest member in the given set of distribution managers. The current implementation
+   * may use n*n/2 comparisons, so use this judiciously
    *
-   * @param system The distributed system to which this distribution manager will send messages.
+   * @return the oldest member of the given collection
+   * @throws NoSuchElementException when none of the given members is actually a member of the
+   *         distributed system.
    */
-  static DistributionManager create(InternalDistributedSystem system) {
-
-    DistributionManager distributionManager = null;
-    boolean beforeJoined = true;
-
-    try {
-
-      int vmKind;
-
-      if (Boolean.getBoolean(InternalLocator.FORCE_LOCATOR_DM_TYPE)) {
-        // if this DM is starting for a locator, set it to be a locator DM
-        vmKind = LOCATOR_DM_TYPE;
-
-      } else if (isDedicatedAdminVM()) {
-        vmKind = ADMIN_ONLY_DM_TYPE;
-
-      } else {
-        vmKind = NORMAL_DM_TYPE;
-      }
-
-      RemoteTransportConfig transport = new RemoteTransportConfig(system.getConfig(), vmKind);
-      transport.setIsReconnectingDS(system.isReconnectingDS());
-      transport.setOldDSMembershipInfo(system.oldDSMembershipInfo());
-
-      long start = System.currentTimeMillis();
-
-      distributionManager = new DistributionManager(system, transport);
-      distributionManager.assertDistributionManagerType();
-
-      beforeJoined = false; // we have now joined the system
-
-      {
-        InternalDistributedMember id = distributionManager.getDistributionManagerId();
-        if (!"".equals(id.getName())) {
-          for (InternalDistributedMember m : (List<InternalDistributedMember>) distributionManager
-              .getViewMembers()) {
-            if (m.equals(id)) {
-              // I'm counting on the members returned by getViewMembers being ordered such that
-              // members that joined before us will precede us AND members that join after us
-              // will succeed us.
-              // SO once we find ourself break out of this loop.
-              break;
-            }
-            if (id.getName().equals(m.getName())) {
-              if (distributionManager.getMembershipManager().verifyMember(m,
-                  "member is using the name of " + id)) {
-                throw new IncompatibleSystemException("Member " + id
-                    + " could not join this distributed system because the existing member " + m
-                    + " used the same name. Set the \"name\" gemfire property to a unique value.");
-              }
-            }
-          }
-        }
-        distributionManager.addNewMember(id); // add ourselves
-        distributionManager.selectElder(); // ShutdownException could be thrown here
-      }
-
-      // Send out a StartupMessage to the other members.
-      StartupOperation op = new StartupOperation(distributionManager, transport);
-
-      try {
-        if (!distributionManager.sendStartupMessage(op)) {
-          // We'll we didn't hear back from anyone else. We assume that
-          // we're the first one.
-          if (distributionManager.getOtherDistributionManagerIds().size() == 0) {
-            logger.info(LocalizedMessage.create(
-                LocalizedStrings.DistributionManager_DIDNT_HEAR_BACK_FROM_ANY_OTHER_SYSTEM_I_AM_THE_FIRST_ONE));
-          } else if (transport.isMcastEnabled()) {
-            // perform a multicast ping test
-            if (!distributionManager.testMulticast()) {
-              logger.warn(LocalizedMessage.create(
-                  LocalizedStrings.DistributionManager_RECEIVED_NO_STARTUP_RESPONSES_BUT_OTHER_MEMBERS_EXIST_MULTICAST_IS_NOT_RESPONSIVE));
-            }
-          }
-        }
-      } catch (InterruptedException ex) {
-        Thread.currentThread().interrupt();
-        // This is ALWAYS bad; don't consult a CancelCriterion.
-        throw new InternalGemFireException(
-            LocalizedStrings.DistributionManager_INTERRUPTED_WHILE_WAITING_FOR_FIRST_STARTUPRESPONSEMESSAGE
-                .toLocalizedString(),
-            ex);
-      } catch (IncompatibleSystemException ex) {
-        logger.fatal(ex.getMessage(), ex);
-        throw ex;
-      } finally {
-        distributionManager.readyToSendMsgs();
-      }
-
-      if (logger.isInfoEnabled()) {
-        long delta = System.currentTimeMillis() - start;
-        Object[] logArgs = new Object[] {distributionManager.getDistributionManagerId(), transport,
-            Integer.valueOf(distributionManager.getOtherDistributionManagerIds().size()),
-            distributionManager.getOtherDistributionManagerIds(),
-            (logger.isInfoEnabled(LogMarker.DM) ? " (VERBOSE, took " + delta + " ms)" : ""),
-            ((distributionManager.getDMType() == ADMIN_ONLY_DM_TYPE) ? " (admin only)"
-                : (distributionManager.getDMType() == LOCATOR_DM_TYPE) ? " (locator)" : "")};
-        logger.info(LogMarker.DM,
-            LocalizedMessage.create(
-                LocalizedStrings.DistributionManager_DISTRIBUTIONMANAGER_0_STARTED_ON_1_THERE_WERE_2_OTHER_DMS_3_4_5,
-                logArgs));
-
-        MembershipLogger.logStartup(distributionManager.getDistributionManagerId());
-      }
-      return distributionManager;
-    } catch (RuntimeException r) {
-      if (distributionManager != null) {
-        if (logger.isDebugEnabled()) {
-          logger.debug("cleaning up incompletely started DistributionManager due to exception", r);
-        }
-        distributionManager.uncleanShutdown(beforeJoined);
-      }
-      throw r;
-    }
-  }
-
-  /////////////////////// Constructors ///////////////////////
+  DistributedMember getOldestMember(Collection members) throws NoSuchElementException;
 
   /**
-   * Creates a new <code>DistributionManager</code> by initializing itself, creating the membership
-   * manager and executors
-   *
-   * @param transport The configuration for the communications transport
-   *
+   * @return Set of Admin VM nodes
    */
-  private DistributionManager(RemoteTransportConfig transport, InternalDistributedSystem system) {
-
-    this.dmType = transport.getVmKind();
-    this.system = system;
-    this.elderLock = new StoppableReentrantLock(stopper);
-    this.transport = transport;
-
-    this.membershipListeners = new ConcurrentHashMap();
-    this.distributedSystemId = system.getConfig().getDistributedSystemId();
-    {
-      long statId = OSProcess.getId();
-      /*
-       * deadcoded since we don't know the channel id yet. if (statId == 0 || statId == -1) { statId
-       * = getMembershipPort(); }
-       */
-      this.stats = new DistributionStats(system, statId);
-      DistributionStats.enableClockStats = system.getConfig().getEnableTimeStatistics();
-    }
-
-    this.exceptionInThreads = false;
-
-    // Start the processing threads
-    final LoggingThreadGroup group =
-        LoggingThreadGroup.createThreadGroup("DistributionManager Threads", logger);
-    this.threadGroup = group;
-
-    boolean finishedConstructor = false;
-    try {
-
-      if (MULTI_SERIAL_EXECUTORS) {
-        if (logger.isInfoEnabled(LogMarker.DM)) {
-          logger.info(LogMarker.DM, "Serial Queue info :" + " THROTTLE_PERCENT: " + THROTTLE_PERCENT
-              + " SERIAL_QUEUE_BYTE_LIMIT :" + SERIAL_QUEUE_BYTE_LIMIT + " SERIAL_QUEUE_THROTTLE :"
-              + SERIAL_QUEUE_THROTTLE + " TOTAL_SERIAL_QUEUE_BYTE_LIMIT :"
-              + TOTAL_SERIAL_QUEUE_BYTE_LIMIT + " TOTAL_SERIAL_QUEUE_THROTTLE :"
-              + TOTAL_SERIAL_QUEUE_THROTTLE + " SERIAL_QUEUE_SIZE_LIMIT :" + SERIAL_QUEUE_SIZE_LIMIT
-              + " SERIAL_QUEUE_SIZE_THROTTLE :" + SERIAL_QUEUE_SIZE_THROTTLE);
-        }
-        // when TCP/IP is disabled we can't throttle the serial queue or we run the risk of
-        // distributed deadlock when we block the UDP reader thread
-        boolean throttlingDisabled = system.getConfig().getDisableTcp();
-        this.serialQueuedExecutorPool =
-            new SerialQueuedExecutorPool(this.threadGroup, this.stats, throttlingDisabled);
-      }
-
-      {
-        BlockingQueue poolQueue;
-        if (SERIAL_QUEUE_BYTE_LIMIT == 0) {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getSerialQueueHelper());
-        } else {
-          this.serialQueue = new ThrottlingMemLinkedQueueWithDMStats(TOTAL_SERIAL_QUEUE_BYTE_LIMIT,
-              TOTAL_SERIAL_QUEUE_THROTTLE, SERIAL_QUEUE_SIZE_LIMIT, SERIAL_QUEUE_SIZE_THROTTLE,
-              this.stats.getSerialQueueHelper());
-          poolQueue = this.serialQueue;
-        }
-        ThreadFactory tf = new ThreadFactory() {
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incSerialThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incNumSerialThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                  // command.run();
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumSerialThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_SERIAL_MESSAGE_PROCESSOR.toLocalizedString());
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        SerialQueuedExecutorWithDMStats executor = new SerialQueuedExecutorWithDMStats(poolQueue,
-            this.stats.getSerialProcessorHelper(), tf);
-        this.serialThread = executor;
-      }
-      {
-        BlockingQueue q = new LinkedBlockingQueue();
-        ThreadFactory tf = new ThreadFactory() {
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incViewThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incNumViewThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumViewThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_VIEW_MESSAGE_PROCESSOR.toLocalizedString());
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        this.viewThread =
-            new SerialQueuedExecutorWithDMStats(q, this.stats.getViewProcessorHelper(), tf);
-      }
-
-      {
-        BlockingQueue poolQueue;
-        if (INCOMING_QUEUE_LIMIT == 0) {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getOverflowQueueHelper());
-        } else {
-          poolQueue = new OverflowQueueWithDMStats(INCOMING_QUEUE_LIMIT,
-              this.stats.getOverflowQueueHelper());
-        }
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incProcessingThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incNumProcessingThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incNumProcessingThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_POOLED_MESSAGE_PROCESSOR.toLocalizedString()
-                    + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        ThreadPoolExecutor pool = new PooledExecutorWithDMStats(poolQueue, MAX_THREADS,
-            this.stats.getNormalPoolHelper(), tf);
-        this.threadPool = pool;
-      }
-
-
-      {
-        BlockingQueue poolQueue;
-        if (INCOMING_QUEUE_LIMIT == 0) {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getHighPriorityQueueHelper());
-        } else {
-          poolQueue = new OverflowQueueWithDMStats(INCOMING_QUEUE_LIMIT,
-              this.stats.getHighPriorityQueueHelper());
-        }
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incHighPriorityThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incHighPriorityThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incHighPriorityThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_POOLED_HIGH_PRIORITY_MESSAGE_PROCESSOR
-                    .toLocalizedString() + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        this.highPriorityPool = new PooledExecutorWithDMStats(poolQueue, MAX_THREADS,
-            this.stats.getHighPriorityPoolHelper(), tf);
-      }
-
-
-      {
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incWaitingThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incWaitingThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incWaitingThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_POOLED_WAITING_MESSAGE_PROCESSOR
-                    .toLocalizedString() + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        BlockingQueue poolQueue;
-        if (MAX_WAITING_THREADS == Integer.MAX_VALUE) {
-          // no need for a queue since we have infinite threads
-          poolQueue = new SynchronousQueue();
-        } else {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getWaitingQueueHelper());
-        }
-        this.waitingPool = new PooledExecutorWithDMStats(poolQueue, MAX_WAITING_THREADS,
-            this.stats.getWaitingPoolHelper(), tf);
-      }
-
-      {
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incWaitingThreadStarts();// will it be ok?
-            final Runnable r = new Runnable() {
-              public void run() {
-                DistributionManager.this.stats.incWaitingThreads(1);// will it be ok
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  DistributionManager.this.stats.incWaitingThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r,
-                LocalizedStrings.DistributionManager_PR_META_DATA_CLEANUP_MESSAGE_PROCESSOR
-                    .toLocalizedString() + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        BlockingQueue poolQueue;
-        poolQueue = new OverflowQueueWithDMStats(this.stats.getWaitingQueueHelper());
-        this.prMetaDataCleanupThreadPool = new PooledExecutorWithDMStats(poolQueue,
-            MAX_PR_META_DATA_CLEANUP_THREADS, this.stats.getWaitingPoolHelper(), tf);
-      }
-
-      {
-        BlockingQueue poolQueue;
-        if (INCOMING_QUEUE_LIMIT == 0) {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getPartitionedRegionQueueHelper());
-        } else {
-          poolQueue = new OverflowQueueWithDMStats(INCOMING_QUEUE_LIMIT,
-              this.stats.getPartitionedRegionQueueHelper());
-        }
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incPartitionedRegionThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                stats.incPartitionedRegionThreads(1);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  stats.incPartitionedRegionThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r, "PartitionedRegion Message Processor" + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-        if (MAX_PR_THREADS > 1) {
-          this.partitionedRegionPool = new PooledExecutorWithDMStats(poolQueue, MAX_PR_THREADS,
-              this.stats.getPartitionedRegionPoolHelper(), tf);
-        } else {
-          SerialQueuedExecutorWithDMStats executor = new SerialQueuedExecutorWithDMStats(poolQueue,
-              this.stats.getPartitionedRegionPoolHelper(), tf);
-          this.partitionedRegionThread = executor;
-        }
-
-      }
-
-      {
-        BlockingQueue poolQueue;
-        if (INCOMING_QUEUE_LIMIT == 0) {
-          poolQueue = new OverflowQueueWithDMStats(this.stats.getFunctionExecutionQueueHelper());
-        } else {
-          poolQueue = new OverflowQueueWithDMStats(INCOMING_QUEUE_LIMIT,
-              this.stats.getFunctionExecutionQueueHelper());
-        }
-        ThreadFactory tf = new ThreadFactory() {
-          private int next = 0;
-
-          public Thread newThread(final Runnable command) {
-            DistributionManager.this.stats.incFunctionExecutionThreadStarts();
-            final Runnable r = new Runnable() {
-              public void run() {
-                stats.incFunctionExecutionThreads(1);
-                isFunctionExecutionThread.set(Boolean.TRUE);
-                try {
-                  ConnectionTable.threadWantsSharedResources();
-                  Connection.makeReaderThread();
-                  runUntilShutdown(command);
-                } finally {
-                  ConnectionTable.releaseThreadsSockets();
-                  stats.incFunctionExecutionThreads(-1);
-                }
-              }
-            };
-            Thread thread = new Thread(group, r, "Function Execution Processor" + (next++));
-            thread.setDaemon(true);
-            return thread;
-          }
-        };
-
-        if (MAX_FE_THREADS > 1) {
-          this.functionExecutionPool =
-              new FunctionExecutionPooledExecutor(poolQueue, MAX_FE_THREADS,
-                  this.stats.getFunctionExecutionPoolHelper(), tf, true /* for fn exec */);
-        } else {
-          SerialQueuedExecutorWithDMStats executor = new SerialQueuedExecutorWithDMStats(poolQueue,
-              this.stats.getFunctionExecutionPoolHelper(), tf);
-          this.functionExecutionThread = executor;
-        }
-
-      }
-
-      if (!SYNC_EVENTS) {
-        this.memberEventThread =
-            new Thread(group, new MemberEventInvoker(), "DM-MemberEventInvoker");
-        this.memberEventThread.setDaemon(true);
-      }
-
-      StringBuffer sb = new StringBuffer(" (took ");
+  Set<InternalDistributedMember> getAdminMemberSet();
 
-      // connect to the cluster
-      long start = System.currentTimeMillis();
+  /** Throws ShutdownException if closeInProgress returns true. */
+  void throwIfDistributionStopped();
 
-      DMListener l = new DMListener(this);
-      membershipManager = MemberFactory.newMembershipManager(l, system.getConfig(), transport,
-          stats, system.getSecurityService());
-
-      sb.append(System.currentTimeMillis() - start);
-
-      this.localAddress = membershipManager.getLocalMember();
-
-      membershipManager.postConnect();
-
-      sb.append(" ms)");
+  /** Returns count of members filling the specified role */
+  int getRoleCount(Role role);
 
-      logger.info(LocalizedMessage.create(
-          LocalizedStrings.DistributionManager_STARTING_DISTRIBUTIONMANAGER_0_1, new Object[] {
-              this.localAddress, (logger.isInfoEnabled(LogMarker.DM) ? sb.toString() : "")}));
+  /** Returns true if at least one member is filling the specified role */
+  boolean isRolePresent(Role role);
 
-      this.description = "Distribution manager on " + this.localAddress + " started at "
-          + (new Date(System.currentTimeMillis())).toString();
+  /** Returns a set of all roles currently in the distributed system. */
+  Set getAllRoles();
 
-      finishedConstructor = true;
-    } finally {
-      if (!finishedConstructor) {
-        askThreadsToStop(); // fix for bug 42039
-      }
-    }
-  }
+  /** Returns true if id is a current member of the distributed system */
+  boolean isCurrentMember(InternalDistributedMember id);
 
   /**
-   * Creates a new distribution manager
+   * Remove given member from list of members who are pending a startup reply
    *
-   * @param system The distributed system to which this distribution manager will send messages.
+   * @param m the member
+   * @param departed true if we're removing them due to membership
    */
-  private DistributionManager(InternalDistributedSystem system, RemoteTransportConfig transport) {
-    this(transport, system);
-
-    boolean finishedConstructor = false;
-    try {
+  void removeUnfinishedStartup(InternalDistributedMember m, boolean departed);
 
-      setIsStartupThread(Boolean.TRUE);
-
-      startThreads();
-
-      // Allow events to start being processed.
-      membershipManager.startEventProcessing();
-      for (;;) {
-        this.getCancelCriterion().checkCancelInProgress(null);
-        boolean interrupted = Thread.interrupted();
-        try {
-          membershipManager.waitForEventProcessing();
-          break;
-        } catch (InterruptedException e) {
-          interrupted = true;
-        } finally {
-          if (interrupted) {
-            Thread.currentThread().interrupt();
-          }
-        }
-      }
-
-      finishedConstructor = true;
-    } finally {
-      if (!finishedConstructor) {
-        askThreadsToStop(); // fix for bug 42039
-      }
-    }
-  }
+  void setUnfinishedStartups(Collection s);
 
   /**
-   * Is this VM dedicated to administration (like a GUI console or a JMX agent)? If so, then it
-   * creates {@link #ADMIN_ONLY_DM_TYPE} type distribution managers.
+   * Return the CancelCriterion for this DM.
    *
-   * @since GemFire 4.0
+   * @return CancelCriterion for this DM
    */
-  public static boolean isDedicatedAdminVM() {
-    return isDedicatedAdminVM;
-  }
-
-  public static void setIsDedicatedAdminVM(boolean isDedicatedAdminVM) {
-    DistributionManager.isDedicatedAdminVM = isDedicatedAdminVM;
-  }
-
-  public static Boolean getIsStartupThread() {
-    return isStartupThread.get();
-  }
-
-  public static void setIsStartupThread(Boolean isStartup) {
-    DistributionManager.isStartupThread.set(isStartup);
-  }
-
-  //////////////////// Instance Methods /////////////////////
-
-  private void runUntilShutdown(Runnable r) {
-    try {
-      r.run();
-    } catch (CancelException e) {
-      if (logger.isTraceEnabled()) {
-        logger.trace("Caught shutdown exception", e);
-      }
-    } catch (VirtualMachineError err) {
-      SystemFailure.initiateFailure(err);
-      // If this ever returns, rethrow the error. We're poisoned
-      // now, so don't let this thread continue.
-      throw err;
-    } catch (Throwable t) {
-      SystemFailure.checkFailure();
-      if (isCloseInProgress()) {
-        logger.debug("Caught unusual exception during shutdown: {}", t.getMessage(), t);
-      } else {
-        logger.warn(LocalizedMessage
-            .create(LocalizedStrings.DistributionManager_TASK_FAILED_WITH_EXCEPTION), t);
-      }
-    }
-  }
+  CancelCriterion getCancelCriterion();
 
   /**
-   * Returns true if the two members are on the same equivalent host based on overlapping IP
-   * addresses collected for all NICs during exchange of startup messages.
+   * Return the membership manager for this DM
    *
-   * @param member1 First member
-   * @param member2 Second member
+   * @return the membership manager
    */
-  @Override
-  public boolean areOnEquivalentHost(InternalDistributedMember member1,
-      InternalDistributedMember member2) {
-    Set<InetAddress> equivalents1 = getEquivalents(member1.getInetAddress());
-    return equivalents1.contains(member2.getInetAddress());
-  }
+  MembershipManager getMembershipManager();
 
   /**
-   * Set the host equivalencies for a given host. This overrides any previous information in the
-   * tables.
+   * Set the root cause for DM failure
    *
-   * @param equivs list of InetAddress's that all point at same host
+   * @param t the underlying failure
    */
-  void setEquivalentHosts(Set<InetAddress> equivs) {
-    Iterator<InetAddress> it = equivs.iterator();
-    synchronized (equivalentHosts) {
-      while (it.hasNext()) {
-        equivalentHosts.put(it.next(), Collections.unmodifiableSet(equivs));
-      }
-    }
-  }
-
+  void setRootCause(Throwable t);
 
   /**
-   * Return all of the InetAddress's that are equivalent to the given one (same host)
+   * Return the underlying root cause for DM failure, possibly null
    *
-   * @param in host to match up
-   * @return all the addresses thus equivalent
+   * @return the underlying root cause
    */
-  @Override
-  public Set<InetAddress> getEquivalents(InetAddress in) {
-    Set<InetAddress> result;
-    synchronized (equivalentHosts) {
-      result = equivalentHosts.get(in);
-    }
-    // DS 11/25/08 - It appears that when using VPN, the distributed member
-    // id is the vpn address, but that doesn't show up in the equivalents.
-    if (result == null) {
-      result = Collections.singleton(in);
-    }
-    return result;
-  }
-
-  void setRedundancyZone(InternalDistributedMember member, String redundancyZone) {
-    if (redundancyZone != null && !redundancyZone.equals("")) {
-      this.redundancyZones.put(member, redundancyZone);
-    }
-    if (member != getDistributionManagerId()) {
-      String relationship = areInSameZone(getDistributionManagerId(), member) ? "" : "not ";
-      Object[] logArgs = new Object[] {member, relationship};
-      logger.info(LocalizedMessage.create(
-          LocalizedStrings.DistributionManager_DISTRIBUTIONMANAGER_MEMBER_0_IS_1_EQUIVALENT,
-          logArgs));
-    }
-  }
+  Throwable getRootCause();
 
   /**
-   * Set the flag indicating that we should enforce unique zones. If we are already enforcing unique
-   * zones, keep it that way.
+   * Return all members that are on the the this host
+   *
+   * @return set of {@link InternalDistributedMember} including this VM
+   * @since GemFire 5.9
    */
-  void setEnforceUniqueZone(boolean enforceUniqueZone) {
-    this.enforceUniqueZone |= enforceUniqueZone;
-  }
-
-  @Override
-  public boolean enforceUniqueZone() {
-    return enforceUniqueZone;
-  }
-
-  public String getRedundancyZone(InternalDistributedMember member) {
-    return redundancyZones.get(member);
-  }
+  Set<InternalDistributedMember> getMembersInThisZone();
 
   /**
-   * Asserts that distributionManagerType is LOCAL, GEMFIRE, or ADMIN_ONLY. Also asserts that the
-   * distributionManagerId (jgroups DistributedMember) has a VmKind that matches.
+   * Acquire a permit to request a GII from another member
    */
-  private void assertDistributionManagerType() {
-    // Assert that dmType is one of the three DM types...
-    int theDmType = getDMType();
-    switch (theDmType) {
-      case NORMAL_DM_TYPE:
-      case LONER_DM_TYPE:
-      case ADMIN_ONLY_DM_TYPE:
-      case LOCATOR_DM_TYPE:
-        break;
-      default:
-        Assert.assertTrue(false, "unknown distribution manager type");
-    }
-
-    // Assert InternalDistributedMember VmKind matches this DistributionManagerType...
-    final InternalDistributedMember theId = getDistributionManagerId();
-    final int vmKind = theId.getVmKind();
-    if (theDmType != vmKind) {
-      Assert.assertTrue(false,
-          "InternalDistributedMember has a vmKind of " + vmKind + " instead of " + theDmType);
-    }
-  }
-
-  public int getDMType() {
-    return this.dmType;
-  }
-
-  public List<InternalDistributedMember> getViewMembers() {
-    return membershipManager.getView().getMembers();
-  }
-
-  /* implementation of DM.getOldestMember */
-  @Override
-  public DistributedMember getOldestMember(Collection c) throws NoSuchElementException {
-    List<InternalDistributedMember> view = getViewMembers();
-    for (int i = 0; i < view.size(); i++) {
-      Object viewMbr = view.get(i);
-      Iterator it = c.iterator();
-      while (it.hasNext()) {
-        Object nextMbr = it.next();
-        if (viewMbr.equals(nextMbr)) {
-          return (DistributedMember) nextMbr;
-        }
-      }
-    }
-    throw new NoSuchElementException(
-        LocalizedStrings.DistributionManager_NONE_OF_THE_GIVEN_MANAGERS_IS_IN_THE_CURRENT_MEMBERSHIP_VIEW
-            .toLocalizedString());
-  }
-
-  private boolean testMulticast() {
-    return this.membershipManager.testMulticast();
-  }
+  void acquireGIIPermitUninterruptibly();
 
   /**
-   * Need to do this outside the constructor so that the child constructor can finish.
+   * Release a permit to request a GII from another member.
    */
-  private void startThreads() {
-    this.system.setDM(this); // fix for bug 33362
-    if (this.memberEventThread != null)
-      this.memberEventThread.start();
-    try {
-
-      // And the distinguished guests today are...
-      NetView v = membershipManager.getView();
-      logger.info(LocalizedMessage.create(
-          LocalizedStrings.DistributionManager_INITIAL_MEMBERSHIPMANAGER_VIEW___0,
-          String.valueOf(v)));
-
-      // Add them all to our view
-      for (InternalDistributedMember internalDistributedMember : v.getMembers()) {
-        addNewMember(internalDistributedMember);
-      }
+  void releaseGIIPermit();
 
-      // Figure out who the elder is...
-      selectElder(); // ShutdownException could be thrown here
-    } catch (Exception ex) {
-      throw new InternalGemFireException(
-          LocalizedStrings.DistributionManager_COULD_NOT_PROCESS_INITIAL_VIEW.toLocalizedString(),
-          ex);
-    }
-    try {
-      getWaitingThreadPool().execute(new Runnable() {
-        public void run() {
-          // call in background since it might need to send a reply
-          // and we are not ready to send messages until startup is finished
-          setIsStartupThread(Boolean.TRUE);
-          readyForMessages();
-        }
-      });
-    } catch (VirtualMachineError err) {
-      SystemFailure.initiateFailure(err);
-      // If this ever returns, rethrow the error. We're poisoned
-      // now, so don't let this thread continue.
-      throw err;
-    } catch (Throwable t) {
-      // Whenever you catch Error or Throwable, you must also
-      // catch VirtualMachineError (see above). However, there is
-      // _still_ a possibility that you are dealing with a cascading
-      // error condition, so you also need to check to see if the JVM
-      // is still usable:
-      SystemFailure.checkFailure();
-      logger.fatal(LocalizedMessage.create(
-          LocalizedStrings.DistributionManager_UNCAUGHT_EXCEPTION_CALLING_READYFORMESSAGES), t);
-    }
-  }
+  int getDistributedSystemId();
 
-  private void readyForMessages() {
-    synchronized (this) {
-      this.readyForMessages = true;
-      this.notifyAll();
-    }
-    membershipManager.startEventProcessing();
-  }
+  boolean enforceUniqueZone();
 
-  private void waitUntilReadyForMessages() {
-    if (readyForMessages)
-      return;
-    synchronized (this) {
-      for (;;) {
-        if (readyForMessages)
-          break;
-        stopper.checkCancelInProgress(null);
-        boolean interrupted = Thread.interrupted();
-        try {
-          this.wait();
-        } catch (InterruptedException e) {
-          interrupted = true;
-          stopper.checkCancelInProgress(e);
-        } finally {
-          if (interrupted) {
-            Thread.currentThread().interrupt();
-          }
-        }
-      } // for
-    } // synchronized
-  }
+  Set<InternalDistributedMember> getMembersInSameZone(InternalDistributedMember acceptedMember);
 
-  /**
-   * Call when the DM is ready to send messages.
-   */
-  private void readyToSendMsgs() {
-    synchronized (this.readyToSendMsgsLock) {
-      this.readyToSendMsgs = true;
-      this.readyToSendMsgsLock.notifyAll();
-    }
-  }
+  boolean areInSameZone(InternalDistributedMember member1, InternalDistributedMember member2);
 
   /**
-   * Return when DM is ready to send out messages.
+   * Returns true is the two members are on the same equivalent host machine based on overlapping IP
+   * addresses collected for all NICs on each member's machine.
    *
-   * @param msg the messsage that is currently being sent
-   */
-  private void waitUntilReadyToSendMsgs(DistributionMessage msg) {
-    if (this.readyToSendMsgs) {
-      return;
-    }
-    // another process may have been started in the same view, so we need
-    // to be responsive to startup messages and be able to send responses
-    if (msg instanceof StartupMessage || msg instanceof StartupResponseMessage
-        || msg instanceof AdminMessageType) {
-      return;
-    }
-    if (getIsStartupThread() == Boolean.TRUE) {
-      // let the startup thread send messages
-      // the only case I know of that does this is if we happen to log a
-      // message during startup and an alert listener has registered.
-      return;
-    }
-
-    synchronized (this.readyToSendMsgsLock) {
-      for (;;) {
-        if (this.readyToSendMsgs)
-          break;
-        stopper.checkCancelInProgress(null);
-        boolean interrupted = Thread.interrupted();
-        try {
-          this.readyToSendMsgsLock.wait();
-        } catch (InterruptedException e) {
-          interrupted = true;
-          stopper.checkCancelInProgress(e);
-        } finally {
-          if (interrupted) {
-            Thread.currentThread().interrupt();
-          }
-        }
-      } // for
-    } // synchronized
-  }
-
-
-  @Override
-  public void forceUDPMessagingForCurrentThread() {
-    membershipManager.forceUDPMessagingForCurrentThread();
-  }
-
-
-  @Override
-  public void releaseUDPMessagingForCurrentThread() {
-    membershipManager.releaseUDPMessagingForCurrentThread();
-  }
-
-  /**
-   * Did an exception occur in one of the threads launched by this distribution manager?
-   */
-  public boolean exceptionInThreads() {
-    return this.exceptionInThreads || this.threadGroup.getUncaughtExceptionsCount() > 0;
-  }
-
-  /**
-   * Clears the boolean that determines whether or not an exception occurred in one of the worker
-   * threads. This method should be used for testing purposes only!
-   */
-  void clearExceptionInThreads() {
-    this.exceptionInThreads = false;
-    this.threadGroup.clearUncaughtExceptionsCount();
-  }
-
-  /**
-   * Returns the current "cache time" in milliseconds since the epoch. The "cache time" takes into
-   * account skew among the local clocks on the various machines involved in the cache.
+   * @param member1 First member
+   * @param member2 Second member
    */
-  @Override
-  public long cacheTimeMillis() {
-    return this.system.getClock().cacheTimeMillis();
-  }
+  boolean areOnEquivalentHost(InternalDistributedMember member1, InternalDistributedMember member2);
 
+  Set<InetAddress> getEquivalents(InetAddress in);
 
+  Set<DistributedMember> getGroupMembers(String group);
 
   /**
-   * Returns the id of this distribution manager.
-   */
-  @Override
-  public InternalDistributedMember getDistributionManagerId() {
-    return this.localAddress;
-  }
-
-  /**
-   * Returns an unmodifiable set containing the identities of all of the known (non-admin-only)
-   * distribution managers.
-   */
-  @Override
-  public Set getDistributionManagerIds() {
-    // access to members synchronized under membersLock in order to
-    // ensure serialization
-    synchronized (this.membersLock) {
-      return this.members.keySet();
-    }
-  }
-
-  /**
-   * Adds the entry in {@link #hostedLocatorsAll} for a member with one or more hosted locators. The
-   * value is a collection of host[port] strings. If a bind-address was used for a locator then the
-   * form is bind-addr[port].
+   * Adds the entry in hostedLocators for a member with one or more hosted locators. The value is a
+   * collection of host[port] strings. If a bind-address was used for a locator then the form is
+   * bind-addr[port].
+   * <p>
+   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
+   *
+   * @param isSharedConfigurationEnabled flag to determine if the locator has enabled shared
+   *        configuration
    *
    * @since GemFire 6.6.3
    */
-  @Override
-  public void addHostedLocators(InternalDistributedMember member, Collection<String> locators,
-      boolean isSharedConfigurationEnabled) {
-    synchronized (this.membersLock) {
-      if (locators == null || locators.isEmpty()) {
-        throw new IllegalArgumentException("Cannot use empty collection of locators");
-      }
-      if (this.hostedLocatorsAll.isEmpty()) {
-        this.hostedLocatorsAll = new HashMap<InternalDistributedMember, Collection<String>>();
-      }
-      Map<InternalDistributedMember, Collection<String>> tmp =
-          new HashMap<InternalDistributedMember, Collection<String>>(this.hostedLocatorsAll);
-      tmp.remove(member);
-      tmp.put(member, locators);
-      tmp = Collections.unmodifiableMap(tmp);
-      this.hostedLocatorsAll = tmp;
-
-      if (isSharedConfigurationEnabled) {
-        if (locators == null || locators.isEmpty()) {
-          throw new IllegalArgumentException("Cannot use empty collection of locators");
-        }
-        if (this.hostedLocatorsWithSharedConfiguration.isEmpty()) {
-          this.hostedLocatorsWithSharedConfiguration = new HashMap<>();
-        }
-        tmp = new HashMap<>(this.hostedLocatorsWithSharedConfiguration);
-        tmp.remove(member);
-        tmp.put(member, locators);
-        tmp = Collections.unmodifiableMap(tmp);
-        this.hostedLocatorsWithSharedConfiguration = tmp;
-      }
-
-    }
-  }
-
-
-  private void removeHostedLocators(InternalDistributedMember member) {
-    synchronized (this.membersLock) {
-      if (this.hostedLocatorsAll.containsKey(member)) {
-        Map<InternalDistributedMember, Collection<String>> tmp =
-            new HashMap<>(this.hostedLocatorsAll);
-        tmp.remove(member);
-        if (tmp.isEmpty()) {
-          tmp = Collections.emptyMap();
-        } else {
-          tmp = Collections.unmodifiableMap(tmp);
-        }
-        this.hostedLocatorsAll = tmp;
-      }
-      if (this.hostedLocatorsWithSharedConfiguration.containsKey(member)) {
-        Map<InternalDistributedMember, Collection<String>> tmp =
-            new HashMap<InternalDistributedMember, Collection<String>>(
-                this.hostedLocatorsWithSharedConfiguration);
-        tmp.remove(member);
-        if (tmp.isEmpty()) {
-          tmp = Collections.emptyMap();
-        } else {
-          tmp = Collections.unmodifiableMap(tmp);
-        }
-        this.hostedLocatorsWithSharedConfiguration = tmp;
-      }
-    }
-  }
-
+  void addHostedLocators(InternalDistributedMember member, Collection<String> locators,
+      boolean isSharedConfigurationEnabled);
 
 
   /**
-   * Gets the value in {@link #hostedLocatorsAll} for a member with one or more hosted locators. The
-   * value is a collection of host[port] strings. If a bind-address was used for a locator then the
-   * form is bind-addr[port].
+   * Gets the value in hostedLocators for a member with one or more hosted locators. The value is a
+   * collection of host[port] strings. If a bind-address was used for a locator then the form is
+   * bind-addr[port].
+   * <p>
+   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
    *
    * @since GemFire 6.6.3
    */
-  @Override
-  public Collection<String> getHostedLocators(InternalDistributedMember member) {
-    synchronized (this.membersLock) {
-      return this.hostedLocatorsAll.get(member);
-    }
-  }
+  Collection<String> getHostedLocators(InternalDistributedMember member);
 
   /**
-   * Returns a copy of the map of all members hosting locators. The key is the member, and the value
-   * is a collection of host[port] strings. If a bind-address was used for a locator then the form
-   * is bind-addr[port].
-   *
-   * The member is the vm that hosts one or more locator, if another locator starts up linking to
-   * this locator, it will put that member in this map as well, and this member will in the map on
-   * the other locato vm as well.
+   * Gets the map of all members hosting locators. The key is the member, and the value is a
+   * collection of host[port] strings. If a bind-address was used for a locator then the form is
+   * bind-addr[port].
    *
-   * The keyset of the map are the locator vms in this cluster.
    *
-   * the value is a collection of strings in case one vm can have multiple locators ????
+   * <p>
+   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
    *
    * @since GemFire 6.6.3
    */
-  public Map<InternalDistributedMember, Collection<String>> getAllHostedLocators() {
-    synchronized (this.membersLock) {
-      return this.hostedLocatorsAll;
-    }
-  }
+  Map<InternalDistributedMember, Collection<String>> getAllHostedLocators();
 
   /**
-   * Returns a copy of the map of all members hosting locators with shared configuration. The key is
-   * the member, and the value is a collection of host[port] strings. If a bind-address was used for
-   * a locator then the form is bind-addr[port].
+   * Gets the map of all members hosting locators with shared configuration. The key is the member,
+   * and the value is a collection of host[port] strings. If a bind-address was used for a locator
+   * then the form is bind-addr[port].
+   * <p>
+   * This currently only tracks stand-alone/dedicated locators, not embedded locators.
    *
    * @since GemFire 8.0
    */
-  @Override
-  public Map<InternalDistributedMember, Collection<String>> getAllHostedLocatorsWithSharedConfiguration() {
-    synchronized (this.membersLock) {
-      return this.hostedLocatorsWithSharedConfiguration;
-    }
-  }
+  Map<InternalDistributedMember, Collection<String>> getAllHostedLocatorsWithSharedConfiguration();
 
   /**
-   * Returns an unmodifiable set containing the identities of all of the known (including admin)
-   * distribution managers.
+   * Forces use of UDP for communications in the current thread. UDP is connectionless, so no tcp/ip
+   * connections will be created or used for messaging until this setting is released with
+   * releaseUDPMessagingForCurrentThread.
    */
-  @Override
-  public Set getDistributionManagerIdsIncludingAdmin() {
-    // access to members synchronized under membersLock in order to
-    // ensure serialization
-    synchronized (this.membersLock) {
-      return this.membersAndAdmin;
-    }
-  }
-
+  void forceUDPMessagingForCurrentThread();
 
   /**
-   * Returns a private-memory list containing the identities of all the other known distribution
-   * managers not including me.
+   * Releases use of UDP for all communications in the current thread, as established by
+   * forceUDPMessagingForCurrentThread.
    */
-  @Override
-  public Set getOtherDistributionManagerIds() {
-    // We return a modified copy of the list, so
-    // collect the old list and copy under the lock.
-    Set result = new HashSet(getDistributionManagerIds());
-
-    InternalDistributedMember me = getDistributionManagerId();
-    result.remove(me);
-
-    // It's okay for my own id to not be in the list of all ids yet.
-    return result;
-  }
-
-  @Override
-  public Set getOtherNormalDistributionManagerIds() {
-    // We return a modified copy of the list, so
-    // collect the old list and copy under the lock.
-    Set result = new HashSet(getNormalDistributionManagerIds());
-
-    InternalDistributedMember me = getDistributionManagerId();
-    result.remove(me);
-
-    // It's okay for my own id to not be in the list of all ids yet.
-    return result;
-  }
-
-  @Override
-  public InternalDistributedMember getCanonicalId(DistributedMember id) {
-    // the members set is copy-on-write, so it is safe to iterate over it
-    InternalDistributedMember result = this.members.get(id);
-    if (result == null) {
-      return (InternalDistributedMember) id;
-    }
-    return result;
-  }
+  void releaseUDPMessagingForCurrentThread();
 
   /**
-   * Add a membership listener and return other DistributionManagerIds as an atomic operation
+   * returns the type of node
+   *
+   * @see ClusterDistributionManager#NORMAL_DM_TYPE
+   * @see ClusterDistributionManager#LONER_DM_TYPE
+   * @see ClusterDistributionManager#LOCATOR_DM_TYPE
+   * @see ClusterDistributionManager#ADMIN_ONLY_DM_TYPE
    */
-  @Override
-  public Set addMembershipListenerAndGetDistributionManagerIds(MembershipListener l) {
-    // switched sync order to fix bug 30360
-    synchronized (this.membersLock) {
-      // Don't let the members come and go while we are adding this
-      // listener. This ensures that the listener (probably a
-      // ReplyProcessor) gets a consistent view of the members.
-      addMembershipListener(l);
-      // Note it is ok to return the members set
-      // because we will never modify the returned set.
-      return members.keySet();
-    }
-  }
-
-  private void addNewMember(InternalDistributedMember member) {
-    // This is the place to cleanup the zombieMembers
-    int vmType = member.getVmKind();
-    switch (vmType) {
-      case ADMIN_ONLY_DM_TYPE:
-        handleConsoleStartup(member);
-        break;
-      case LOCATOR_DM_TYPE:
-      case NORMAL_DM_TYPE:
-        handleManagerStartup(member);
-        break;
-      default:
-        throw new InternalGemFireError(LocalizedStrings.DistributionManager_UNKNOWN_MEMBER_TYPE_0
-            .toLocalizedString(Integer.valueOf(vmType)));
-    }
-  }
+  int getDMType();
 
   /**
-   * Returns the identity of this <code>DistributionManager</code>
+   * The returned cache will be null if the cache does not yet exist. Note that the returned cache
+   * may be one that is already closed. Callers of GemFireCacheImpl.getInstance() should try to use
+   * this method.
    */
-  @Override
-  public InternalDistributedMember getId() {
-    return this.localAddress;
-  }
-
-  @Override
-  public long getMembershipPort() {
-    return localAddress.getPort();
-  }
-
-  @Override
-  public Set putOutgoing(final DistributionMessage msg) {
-    try {
-      DistributionMessageObserver observer = DistributionMessageObserver.getInstance();
-      if (observer != null) {
-        observer.beforeSendMessage(this, msg);
-      }
-      return sendMessage(msg);
-    } catch (NotSerializableException e) {
-      throw new InternalGemFireException(e);
-    } catch (ToDataException e) {
-      // exception from user code
-      throw e;
-    }
-  }
-
-  @Override
-  public String toString() {
-    return this.description;
-  }
+  InternalCache getCache();
 
   /**
-   * Informs other members that this dm is shutting down. Stops the pusher, puller, and processor
-   * threads and closes the connection to the transport layer.
+   * Returns an existing non-closed cache associated with this DM. Callers of
+   * CacheFactory.getAnyInstance(), CacheFactory.getInstance(DistributedSystem) or
+   * GemFireCacheImpl.getExisting() should try to use this method.
+   *
+   * @throws CacheClosedException if a cache has not yet been associated with this DM or it has been
+   *         {@link Cache#isClosed closed}.
    */
-  protected void shutdown() {
-    // Make sure only one thread initiates shutdown...
-    synchronized (shutdownMutex) {
-      if (closeInProgress) {
-        return;
-      }
-      this.closeInProgress = true;
-    } // synchronized
-
-    // [bruce] log shutdown at info level and with ID to balance the
-    // "Starting" message. recycleConn.conf is hard to debug w/o this
-    final String exceptionStatus = (this.exceptionInThreads()
-        ? LocalizedStrings.DistributionManager_AT_LEAST_ONE_EXCEPTION_OCCURRED.toLocalizedString()
-        : "");
-    logger.info(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_SHUTTING_DOWN_DISTRIBUTIONMANAGER_0_1,
-        new Object[] {this.localAddress, exceptionStatus}));
-
-    final long start = System.currentTimeMillis();
-    try {
-      if (this.rootCause instanceof ForcedDisconnectException) {
-        if (logger.isDebugEnabled()) {
-          logger.debug(
-              "inhibiting sending of shutdown message to other members due to forced-disconnect");
-        }
-      } else {
-        // Don't block indefinitely trying to send the shutdown message, in
-        // case other VMs in the system are ill-behaved. (bug 34710)
-        final Runnable r = new Runnable() {
-          public void run() {
-            try {
-              ConnectionTable.threadWantsSharedResources();
-              sendShutdownMessage();
-            } catch (final CancelException e) {
-              // We were terminated.
-              logger.debug("Cancelled during shutdown message", e);
-            }
-          }
-        };
-        final Thread t = new Thread(threadGroup, r,
-            LocalizedStrings.DistributionManager_SHUTDOWN_MESSAGE_THREAD_FOR_0
-                .toLocalizedString(this.localAddress));
-        t.start();
-        boolean interrupted = Thread.interrupted();
-        try {
-          t.join(MAX_STOP_TIME / 4);
-        } catch (final InterruptedException e) {
-          interrupted = true;
-          t.interrupt();
-          logger.warn(
-              LocalizedMessage.create(
-                  LocalizedStrings.DistributionManager_INTERRUPTED_SENDING_SHUTDOWN_MESSAGE_TO_PEERS),
-              e);
-        } finally {
-          if (interrupted) {
-            Thread.currentThread().interrupt();
-          }
-        }
-
-        if (t.isAlive()) {
-          t.interrupt();
-          logger.warn(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_FAILED_SENDING_SHUTDOWN_MESSAGE_TO_PEERS_TIMEOUT));
-        }
-      }
-
-    } finally {
-      this.shutdownMsgSent = true; // in case sendShutdownMessage failed....
-      try {
-        this.uncleanShutdown(false);
-      } finally {
-        final Long delta = Long.valueOf(System.currentTimeMillis() - start);
-        logger.info(LocalizedMessage.create(
-            LocalizedStrings.DistributionManager_DISTRIBUTIONMANAGER_STOPPED_IN_0_MS, delta));
-      }
-    }
-  }
-
-  private void askThreadsToStop() {
-    // Stop executors after they have finished
-    ExecutorService es;
-    es = this.serialThread;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.viewThread;
-    if (es != null) {
-      // Hmmm...OK, I'll let any view events currently in the queue be
-      // processed. Not sure it's very important whether they get
-      // handled...
-      es.shutdown();
-    }
-    if (this.serialQueuedExecutorPool != null) {
-      this.serialQueuedExecutorPool.shutdown();
-    }
-    es = this.functionExecutionThread;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.functionExecutionPool;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.partitionedRegionThread;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.partitionedRegionPool;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.highPriorityPool;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.waitingPool;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.prMetaDataCleanupThreadPool;
-    if (es != null) {
-      es.shutdown();
-    }
-    es = this.threadPool;
-    if (es != null) {
-      es.shutdown();
-    }
-
-    Thread th = this.memberEventThread;
-    if (th != null)
-      th.interrupt();
-  }
-
-  private void waitForThreadsToStop(long timeInMillis) throws InterruptedException {
-    long start = System.currentTimeMillis();
-    long remaining = timeInMillis;
-
-    ExecutorService[] allExecutors = new ExecutorService[] {this.serialThread, this.viewThread,
-        this.functionExecutionThread, this.functionExecutionPool, this.partitionedRegionThread,
-        this.partitionedRegionPool, this.highPriorityPool, this.waitingPool,
-        this.prMetaDataCleanupThreadPool, this.threadPool};
-    for (ExecutorService es : allExecutors) {
-      if (es != null) {
-        es.awaitTermination(remaining, TimeUnit.MILLISECONDS);
-      }
-      remaining = timeInMillis - (System.currentTimeMillis() - start);
-      if (remaining <= 0) {
-        return;
-      }
-    }
-
-
-    this.serialQueuedExecutorPool.awaitTermination(remaining, TimeUnit.MILLISECONDS);
-    remaining = timeInMillis - (System.currentTimeMillis() - start);
-    if (remaining <= 0) {
-      return;
-    }
-    Thread th = this.memberEventThread;
-    if (th != null) {
-      th.interrupt(); // bug #43452 - this thread sometimes eats interrupts, so we interrupt it
-                      // again here
-      th.join(remaining);
-    }
-
-  }
-
-  /**
-   * Cheap tool to kill a referenced thread
-   *
-   * @param t the thread to kill
-   */
-  private void clobberThread(Thread t) {
-    if (t == null)
-      return;
-    if (t.isAlive()) {
-      logger.warn(LocalizedMessage
-          .create(LocalizedStrings.DistributionManager_FORCING_THREAD_STOP_ON__0_, t));
-
-      // Start by being nice.
-      t.interrupt();
-
-      // we could be more violent here...
-      // t.stop();
-      try {
-        for (int i = 0; i < MAX_STOP_ATTEMPTS && t.isAlive(); i++) {
-          t.join(STOP_PAUSE_TIME);
-          t.interrupt();
-        }
-      } catch (InterruptedException ex) {
-        logger.debug("Interrupted while attempting to terminate threads.");
-        Thread.currentThread().interrupt();
-        // just keep going
-      }
-
-      if (t.isAlive()) {
-        logger.warn(LocalizedMessage.create(
-            LocalizedStrings.DistributionManager_CLOBBERTHREAD_THREAD_REFUSED_TO_DIE__0, t));
-      }
-    }
-  }
-
-  /**
-   * Cheap tool to examine an executor to see if it is still working
-   *
-   * @param tpe
-   * @return true if executor is still active
-   */
-  private boolean executorAlive(ThreadPoolExecutor tpe, String name) {
-    if (tpe == null) {
-      return false;
-    } else {
-      int ac = tpe.getActiveCount();
-      // boolean result = tpe.getActiveCount() > 0;
-      if (ac > 0) {
-        if (logger.isDebugEnabled()) {
-          logger.debug("Still waiting for {} threads in '{}' pool to exit", ac, name);
-        }
-        return true;
-      } else {
-        return false;
-      }
-    }
-  }
-
-  /**
-   * Wait for the ancillary queues to exit. Kills them if they are still around.
-   *
-   */
-  private void forceThreadsToStop() {
-    long endTime = System.currentTimeMillis() + MAX_STOP_TIME;
-    String culprits = "";
-    for (;;) {
-      boolean stillAlive = false;
-      culprits = "";
-      if (executorAlive(this.serialThread, "serial thread")) {
-        stillAlive = true;
-        culprits = culprits + " serial thread;";
-      }
-      if (executorAlive(this.viewThread, "view thread")) {
-        stillAlive = true;
-        culprits = culprits + " view thread;";
-      }
-      if (executorAlive(this.partitionedRegionThread, "partitioned region thread")) {
-        stillAlive = true;
-        culprits = culprits + " partitioned region thread;";
-      }
-      if (executorAlive(this.partitionedRegionPool, "partitioned region pool")) {
-        stillAlive = true;
-        culprits = culprits + " partitioned region pool;";
-      }
-      if (executorAlive(this.highPriorityPool, "high priority pool")) {
-        stillAlive = true;
-        culprits = culprits + " high priority pool;";
-      }
-      if (executorAlive(this.waitingPool, "waiting pool")) {
-        stillAlive = true;
-        culprits = culprits + " waiting pool;";
-      }
-      if (executorAlive(this.prMetaDataCleanupThreadPool, "prMetaDataCleanupThreadPool")) {
-        stillAlive = true;
-        culprits = culprits + " special waiting pool;";
-      }
-      if (executorAlive(this.threadPool, "thread pool")) {
-        stillAlive = true;
-        culprits = culprits + " thread pool;";
-      }
-
-      if (!stillAlive)
-        return;
-
-      long now = System.currentTimeMillis();
-      if (now >= endTime)
-        break;
-
-      try {
-        Thread.sleep(STOP_PAUSE_TIME);
-      } catch (InterruptedException e) {
-        Thread.currentThread().interrupt();
-        // Desperation, the shutdown thread is being killed. Don't
-        // consult a CancelCriterion.
-        logger.warn(LocalizedMessage
-            .create(LocalizedStrings.DistributionManager_INTERRUPTED_DURING_SHUTDOWN), e);
-        break;
-      }
-    } // for
-
-    logger.warn(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_DAEMON_THREADS_ARE_SLOW_TO_STOP_CULPRITS_INCLUDE_0,
-        culprits));
-
-    // Kill with no mercy
-    if (this.serialThread != null) {
-      this.serialThread.shutdownNow();
-    }
-    if (this.viewThread != null) {
-      this.viewThread.shutdownNow();
-    }
-    if (this.functionExecutionThread != null) {
-      this.functionExecutionThread.shutdownNow();
-    }
-    if (this.functionExecutionPool != null) {
-      this.functionExecutionPool.shutdownNow();
-    }
-    if (this.partitionedRegionThread != null) {
-      this.partitionedRegionThread.shutdownNow();
-    }
-    if (this.partitionedRegionPool != null) {
-      this.partitionedRegionPool.shutdownNow();
-    }
-    if (this.highPriorityPool != null) {
-      this.highPriorityPool.shutdownNow();
-    }
-    if (this.waitingPool != null) {
-      this.waitingPool.shutdownNow();
-    }
-    if (this.prMetaDataCleanupThreadPool != null) {
-      this.prMetaDataCleanupThreadPool.shutdownNow();
-    }
-    if (this.threadPool != null) {
-      this.threadPool.shutdownNow();
-    }
-
-    Thread th = this.memberEventThread;
-    if (th != null) {
-      clobberThread(th);
-    }
-  }
-
-  private volatile boolean shutdownInProgress = false;
-
-  /** guard for membershipViewIdAcknowledged */
-  private final Object membershipViewIdGuard = new Object();
-
-  /** the latest view ID that has been processed by all membership listeners */
-  private long membershipViewIdAcknowledged;
-
-  @Override
-  public boolean shutdownInProgress() {
-    return this.shutdownInProgress;
-  }
-
-  /**
-   * Stops the pusher, puller and processor threads and closes the connection to the transport
-   * layer. This should only be used from shutdown() or from the dm initialization code
-   */
-  private void uncleanShutdown(boolean beforeJoined) {
-    try {
-      this.closeInProgress = true; // set here also to fix bug 36736
-      removeAllHealthMonitors();
-      shutdownInProgress = true;
-      if (membershipManager != null) {
-        membershipManager.setShutdown();
-      }
-
-      askThreadsToStop();
-
-      // wait a moment before asking threads to terminate
-      try {
-        waitForThreadsToStop(1000);
-      } catch (InterruptedException ie) {
-        // No need to reset interrupt bit, we're really trying to quit...
-      }
-      forceThreadsToStop();
-
-    } // try
-    finally {
-      // ABSOLUTELY ESSENTIAL that we close the distribution channel!
-      try {
-        // For safety, but channel close in a finally AFTER this...
-        if (this.stats != null) {
-          this.stats.close();
-          try {
-            Thread.sleep(100);
-          } catch (InterruptedException ie) {
-            // No need to reset interrupt bit, we're really trying to quit...
-          }
-        }
-      } finally {
-        if (this.membershipManager != null) {
-          logger.info(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_NOW_CLOSING_DISTRIBUTION_FOR__0,
-              this.localAddress));
-          this.membershipManager.disconnect(beforeJoined);
-        }
-      }
-    }
-  }
-
-  @Override
-  public InternalDistributedSystem getSystem() {
-    return this.system;
-  }
-
-  /**
-   * Returns the transport configuration for this distribution manager
-   */
-  RemoteTransportConfig getTransport() {
-    return this.transport;
-  }
-
-
-  @Override
-  public void addMembershipListener(MembershipListener l) {
-    this.membershipListeners.putIfAbsent(l, Boolean.TRUE);
-  }
-
-  @Override
-  public void removeMembershipListener(MembershipListener l) {
-    this.membershipListeners.remove(l);
-  }
-
-  /**
-   * Adds a <code>MembershipListener</code> to this distribution manager.
-   */
-  private void addAllMembershipListener(MembershipListener l) {
-    synchronized (this.allMembershipListenersLock) {
-      Set newAllMembershipListeners = new HashSet(this.allMembershipListeners);
-      newAllMembershipListeners.add(l);
-      this.allMembershipListeners = newAllMembershipListeners;
-    }
-  }
-
-  @Override
-  public void removeAllMembershipListener(MembershipListener l) {
-    synchronized (this.allMembershipListenersLock) {
-      Set newAllMembershipListeners = new HashSet(this.allMembershipListeners);
-      if (!newAllMembershipListeners.remove(l)) {
-        // There seems to be a race condition in which
-        // multiple departure events can be registered
-        // on the same peer. We regard this as benign.
-        // FIXME when membership events become sane again
-        // String s = "MembershipListener was never registered";
-        // throw new IllegalArgumentException(s);
-      }
-      this.allMembershipListeners = newAllMembershipListeners;
-    }
-  }
-
-  /**
-   * Returns true if this DM or the DistributedSystem owned by it is closing or is closed.
-   */
-  private boolean isCloseInProgress() {
-    if (closeInProgress) {
-      return true;
-    }
-    InternalDistributedSystem ds = getSystem();
-    if (ds != null && ds.isDisconnecting()) {
-      return true;
-    }
-    return false;
-  }
-
-  public boolean isShutdownStarted() {
-    return closeInProgress;
-  }
-
-  private void handleViewInstalledEvent(ViewInstalledEvent ev) {
-    synchronized (this.membershipViewIdGuard) {
-      this.membershipViewIdAcknowledged = ev.getViewId();
-      this.membershipViewIdGuard.notifyAll();
-    }
-  }
-
-  /**
-   * This stalls waiting for the current membership view (as seen by the membership manager) to be
-   * acknowledged by all membership listeners
-   */
-  void waitForViewInstallation(long id) throws InterruptedException {
-    if (id <= this.membershipViewIdAcknowledged) {
-      return;
-    }
-    synchronized (this.membershipViewIdGuard) {
-      while (this.membershipViewIdAcknowledged < id && !this.stopper.isCancelInProgress()) {
-        if (logger.isDebugEnabled()) {
-          logger.debug("waiting for view {}.  Current DM view processed by all listeners is {}", id,
-              this.membershipViewIdAcknowledged);
-        }
-        this.membershipViewIdGuard.wait();
-      }
-    }
-  }
-
-  private void handleMemberEvent(MemberEvent ev) {
-    ev.handleEvent(this);
-  }
-
-  /**
-   * This thread processes member events as they occur.
-   *
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberCrashedEvent
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberJoinedEvent
-   * @see org.apache.geode.distributed.internal.DistributionManager.MemberDepartedEvent
-   *
-   */
-  protected class MemberEventInvoker implements Runnable {
-
-
-    @SuppressWarnings("synthetic-access")
-    public void run() {
-      for (;;) {
-        SystemFailure.checkFailure();
-        // bug 41539 - member events need to be delivered during shutdown
-        // or reply processors may hang waiting for replies from
-        // departed members
-        // if (getCancelCriterion().isCancelInProgress()) {
-        // break; // no message, just quit
-        // }
-        if (!DistributionManager.this.system.isConnected && DistributionManager.this.isClosed()) {
-          break;
-        }
-        try {
-          MemberEvent ev = (MemberEvent) DistributionManager.this.membershipEventQueue.take();
-          handleMemberEvent(ev);
-        } catch (InterruptedException e) {
-          if (isCloseInProgress()) {
-            if (logger.isTraceEnabled()) {
-              logger.trace("MemberEventInvoker: InterruptedException during shutdown");
-            }
-          } else {
-            logger.warn(LocalizedMessage
-                .create(LocalizedStrings.DistributionManager_UNEXPECTED_INTERRUPTEDEXCEPTION), e);
-          }
-          break;
-        } catch (DistributedSystemDisconnectedException e) {
-          break;
-        } catch (CancelException e) {
-          if (isCloseInProgress()) {
-            if (logger.isTraceEnabled()) {
-              logger.trace("MemberEventInvoker: cancelled");
-            }
-          } else {
-            logger.warn(LocalizedMessage
-                .create(LocalizedStrings.DistributionManager_UNEXPECTED_CANCELLATION), e);
-          }
-          break;
-        } catch (Exception e) {
-          logger.fatal(
-              LocalizedMessage.create(
-                  LocalizedStrings.DistributionManager_UNCAUGHT_EXCEPTION_PROCESSING_MEMBER_EVENT),
-              e);
-        }
-      } // for
-      if (logger.isTraceEnabled()) {
-        logger.trace("MemberEventInvoker on {} stopped", DistributionManager.this);
-      }
-    }
-  }
-
-  private void addMemberEvent(MemberEvent ev) {
-    if (SYNC_EVENTS) {
-      handleMemberEvent(ev);
-    } else {
-      stopper.checkCancelInProgress(null);
-      boolean interrupted = Thread.interrupted();
-      try {
-        this.membershipEventQueue.put(ev);
-      } catch (InterruptedException ex) {
-        interrupted = true;
-        stopper.checkCancelInProgress(ex);
-        handleMemberEvent(ev); // FIXME why???
-      } finally {
-        if (interrupted) {
-          Thread.currentThread().interrupt();
-        }
-      }
-    }
-  }
-
-
-  @Override
-  public void close() {
-    if (!closed) {
-      this.shutdown();
-      logger.info(LocalizedMessage.create(
-          LocalizedStrings.DistributionManager_MARKING_DISTRIBUTIONMANAGER_0_AS_CLOSED,
-          this.localAddress));
-      MembershipLogger.logShutdown(this.localAddress);
-      closed = true;
-    }
-  }
-
-  @Override
-  public void throwIfDistributionStopped() {
-    if (this.shutdownMsgSent) {
-      throw new DistributedSystemDisconnectedException(
-          LocalizedStrings.DistributionManager_MESSAGE_DISTRIBUTION_HAS_TERMINATED
-              .toLocalizedString(),
-          this.getRootCause());
-    }
-  }
-
-  /**
-   * Returns true if this distribution manager has been closed.
-   */
-  public boolean isClosed() {
-    return this.closed;
-  }
-
-
-  @Override
-  public void addAdminConsole(InternalDistributedMember theId) {
-    logger.info(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_NEW_ADMINISTRATION_MEMBER_DETECTED_AT_0, theId));
-    synchronized (this.adminConsolesLock) {
-      HashSet tmp = new HashSet(this.adminConsoles);
-      tmp.add(theId);
-      this.adminConsoles = Collections.unmodifiableSet(tmp);
-    }
-  }
-
-  @Override
-  public DMStats getStats() {
-    return this.stats;
-  }
-
-  @Override
-  public DistributionConfig getConfig() {
-    DistributionConfig result = null;
-    InternalDistributedSystem sys = getSystem();
-    if (sys != null) {
-      result = system.getConfig();
-    }
-    return result;
-  }
-
-  @Override
-  public Set getAllOtherMembers() {
-    Set result = new HashSet(getDistributionManagerIdsIncludingAdmin());
-    result.remove(getDistributionManagerId());
-    return result;
-  }
-
-  @Override
-  public void retainMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
-      Version version) {
-    for (Iterator<InternalDistributedMember> it = members.iterator(); it.hasNext();) {
-      InternalDistributedMember id = it.next();
-      if (id.getVersionObject().compareTo(version) < 0) {
-        it.remove();
-      }
-    }
-  }
-
-  @Override
-  public void removeMembersWithSameOrNewerVersion(Collection<InternalDistributedMember> members,
-      Version version) {
-    for (Iterator<InternalDistributedMember> it = members.iterator(); it.hasNext();) {
-      InternalDistributedMember id = it.next();
-      if (id.getVersionObject().compareTo(version) >= 0) {
-        it.remove();
-      }
-    }
-  }
-
-  @Override
-  public Set addAllMembershipListenerAndGetAllIds(MembershipListener l) {
-    MembershipManager mgr = membershipManager;
-    mgr.getViewLock().writeLock().lock();
-    try {
-      synchronized (this.membersLock) {
-        // Don't let the members come and go while we are adding this
-        // listener. This ensures that the listener (probably a
-        // ReplyProcessor) gets a consistent view of the members.
-        addAllMembershipListener(l);
-        return getDistributionManagerIdsIncludingAdmin();
-      }
-    } finally {
-      mgr.getViewLock().writeLock().unlock();
-    }
-  }
-
-  /**
-   * Sends a startup message and waits for a response. Returns true if response received; false if
-   * it timed out or there are no peers.
-   */
-  private boolean sendStartupMessage(StartupOperation startupOperation)
-      throws InterruptedException {
-    if (Thread.interrupted())
-      throw new InterruptedException();
-    this.receivedStartupResponse = false;
-    boolean ok = false;
-
-    // Be sure to add ourself to the equivalencies list!
-    Set equivs = StartupMessage.getMyAddresses(this);
-    if (equivs == null || equivs.size() == 0) {
-      // no network interface
-      equivs = new HashSet();
-      try {
-        equivs.add(SocketCreator.getLocalHost());
-      } catch (UnknownHostException e) {
-        // can't even get localhost
-        if (getViewMembers().size() > 1) {
-          throw new SystemConnectException(
-              "Unable to examine network cards and other members exist");
-        }
-      }
-    }
-    setEquivalentHosts(equivs);
-    setEnforceUniqueZone(getConfig().getEnforceUniqueHost());
-    String redundancyZone = getConfig().getRedundancyZone();
-    if (redundancyZone != null && !redundancyZone.equals("")) {
-      setEnforceUniqueZone(true);
-    }
-    setRedundancyZone(getDistributionManagerId(), redundancyZone);
-    if (logger.isDebugEnabled()) {
-      StringBuffer sb = new StringBuffer();
-      sb.append("Equivalent IPs for this host: ");
-      Iterator it = equivs.iterator();
-      while (it.hasNext()) {
-        InetAddress in = (InetAddress) it.next();
-        sb.append(in.toString());
-        if (it.hasNext()) {
-          sb.append(", ");
-        }
-      } // while
-      logger.debug(sb);
-    }
-
-    // we need to send this to everyone else; even admin vm
-    Set allOthers = new HashSet(getViewMembers());
-    allOthers.remove(getDistributionManagerId());
-
-    if (allOthers.isEmpty()) {
-      return false; // no peers, we are alone.
-    }
-
-    try {
-      ok = startupOperation.sendStartupMessage(allOthers, STARTUP_TIMEOUT, equivs, redundancyZone,
-          enforceUniqueZone());
-    } catch (Exception re) {
-      throw new SystemConnectException(
-          LocalizedStrings.DistributionManager_ONE_OR_MORE_PEERS_GENERATED_EXCEPTIONS_DURING_CONNECTION_ATTEMPT
-              .toLocalizedString(),
-          re);
-    }
-    if (this.rejectionMessage != null) {
-      throw new IncompatibleSystemException(rejectionMessage);
-    }
-
-    boolean isAdminDM = getId().getVmKind() == DistributionManager.ADMIN_ONLY_DM_TYPE
-        || getId().getVmKind() == DistributionManager.LOCATOR_DM_TYPE
-        || DistributionManager.isDedicatedAdminVM()
-        || Boolean.getBoolean(InternalLocator.FORCE_LOCATOR_DM_TYPE);
-
-    boolean receivedAny = this.receivedStartupResponse;
-
-    if (!ok) { // someone didn't reply
-      int unresponsiveCount;
-
-      synchronized (unfinishedStartupsLock) {
-        if (unfinishedStartups == null)
-          unresponsiveCount = 0;
-        else
-          unresponsiveCount = unfinishedStartups.size();
-
-        if (unresponsiveCount != 0) {
-          if (Boolean.getBoolean("DistributionManager.requireAllStartupResponses")) {
-            throw new SystemConnectException(
-                LocalizedStrings.DistributionManager_NO_STARTUP_REPLIES_FROM_0
-                    .toLocalizedString(unfinishedStartups));
-          }
-        }
-      } // synchronized
-
-
-      // Bug 35887:
-      // If there are other members, we must receive at least _one_ response
-      if (allOthers.size() != 0) { // there exist others
-        if (!receivedAny) { // and none responded
-          StringBuffer sb = new StringBuffer();
-          Iterator itt = allOthers.iterator();
-          while (itt.hasNext()) {
-            Object m = itt.next();
-            sb.append(m.toString());
-            if (itt.hasNext())
-              sb.append(", ");
-          }
-          if (DEBUG_NO_ACKNOWLEDGEMENTS) {
-            printStacks(allOthers, false);
-          }
-          throw new SystemConnectException(
-              LocalizedStrings.DistributionManager_RECEIVED_NO_CONNECTION_ACKNOWLEDGMENTS_FROM_ANY_OF_THE_0_SENIOR_CACHE_MEMBERS_1
-                  .toLocalizedString(
-                      new Object[] {Integer.toString(allOthers.size()), sb.toString()}));
-        } // and none responded
-      } // there exist others
-
-      InternalDistributedMember e = getElderId();
-      if (e != null) { // an elder exists
-        boolean unresponsiveElder;
-        synchronized (unfinishedStartupsLock) {
-          if (unfinishedStartups == null)
-            unresponsiveElder = false;
-          else
-            unresponsiveElder = unfinishedStartups.contains(e);
-        }
-        if (unresponsiveElder) {
-          logger.warn(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_FORCING_AN_ELDER_JOIN_EVENT_SINCE_A_STARTUP_RESPONSE_WAS_NOT_RECEIVED_FROM_ELDER__0_,
-              e));
-          handleManagerStartup(e);
-        }
-      } // an elder exists
-    } // someone didn't reply
-    return receivedAny;
-  }
-
-  /**
-   * List of InternalDistributedMember's that we have not received startup replies from. If null, we
-   * have not finished sending the startup message.
-   * <p>
-   * Must be synchronized using {@link #unfinishedStartupsLock}
-   */
-  private Set unfinishedStartups = null;
-
-  /**
-   * Synchronization for {@link #unfinishedStartups}
-   */
-  private final Object unfinishedStartupsLock = new Object();
-
-  @Override
-  public void setUnfinishedStartups(Collection s) {
-    synchronized (unfinishedStartupsLock) {
-      Assert.assertTrue(unfinishedStartups == null, "Set unfinished startups twice");
-      unfinishedStartups = new HashSet(s);
-
-      // OK, I don't _quite_ trust the list to be current, so let's
-      // prune it here.
-      Iterator it = unfinishedStartups.iterator();
-      synchronized (this.membersLock) {
-        while (it.hasNext()) {
-          InternalDistributedMember m = (InternalDistributedMember) it.next();
-          if (!isCurrentMember(m)) {
-            it.remove();
-          }
-        } // while
-      } // synchronized
-    }
-  }
-
-  @Override
-  public void removeUnfinishedStartup(InternalDistributedMember m, boolean departed) {
-    synchronized (unfinishedStartupsLock) {
-      if (logger.isDebugEnabled()) {
-        logger.debug("removeUnfinishedStartup for {} wtih {}", m, unfinishedStartups);
-      }
-      if (unfinishedStartups == null)
-        return; // not yet done with startup
-      if (!unfinishedStartups.remove(m))
-        return;
-      StringId msg = null;
-      if (departed) {
-        msg =
-            LocalizedStrings.DistributionManager_STOPPED_WAITING_FOR_STARTUP_REPLY_FROM_0_BECAUSE_THE_PEER_DEPARTED_THE_VIEW;
-      } else {
-        msg =
-            LocalizedStrings.DistributionManager_STOPPED_WAITING_FOR_STARTUP_REPLY_FROM_0_BECAUSE_THE_REPLY_WAS_FINALLY_RECEIVED;
-      }
-      logger.info(LocalizedMessage.create(msg, m));
-      int numLeft = unfinishedStartups.size();
-      if (numLeft != 0) {
-        logger.info(LocalizedMessage.create(
-            LocalizedStrings.DistributionManager_STILL_AWAITING_0_RESPONSES_FROM_1,
-            new Object[] {Integer.valueOf(numLeft), unfinishedStartups}));
-      }
-    } // synchronized
-  }
-
-  /**
-   * Processes the first startup response.
-   *
-   * @see StartupResponseMessage#process
-   */
-  void processStartupResponse(InternalDistributedMember sender, String theRejectionMessage) {
-    removeUnfinishedStartup(sender, false);
-    synchronized (this) {
-      if (!this.receivedStartupResponse) {
-        // only set the cacheTimeDelta once
-        this.receivedStartupResponse = true;
-      }
-      if (theRejectionMessage != null && this.rejectionMessage == null) {
-        // remember the first non-null rejection. This fixes bug 33266
-        this.rejectionMessage = theRejectionMessage;
-      }
-    }
-  }
-
-  /**
-   * Based on a recent JGroups view, return a member that might be the next elder.
-   *
-   * @return the elder candidate, possibly this VM.
-   */
-  private InternalDistributedMember getElderCandidate() {
-    List<InternalDistributedMember> theMembers = getViewMembers();
-
-    // Assert.assertTrue(!closeInProgress
-    // && theMembers.contains(this.localAddress)); // bug36202?
-
-    int elderCandidates = 0;
-    Iterator<InternalDistributedMember> it;
-
-    // for bug #50510 we need to know if there are any members older than v8.0
-    it = theMembers.iterator();
-    boolean anyPre80Members = false;
-    while (it.hasNext()) {
-      InternalDistributedMember member = it.next();
-      if (member.getVersionObject().compareTo(Version.GFE_80) < 0) {
-        anyPre80Members = true;
-      }
-    }
-
-    // determine number of elder candidates (unless adam)
-    if (!this.adam) {
-      it = theMembers.iterator();
-      while (it.hasNext()) {
-        InternalDistributedMember member = it.next();
-        int managerType = member.getVmKind();
-        if (managerType == ADMIN_ONLY_DM_TYPE)
-          continue;
-
-        if (managerType == LOCATOR_DM_TYPE) {
-          // Fix for #50510 - pre-8.0 members will not let a locator be the elder
-          // so we need to make the same decision here
-          if (anyPre80Members) {
-            continue;
-          }
-        }
-
-        // Fix for #45566. Using a surprise member as the elder can cause a
-        // deadlock.
-        if (getMembershipManager().isSurpriseMember(member)) {
-          continue;
-        }
-
-        elderCandidates++;
-        if (elderCandidates > 1) {
-          // If we have more than one candidate then we are not adam
-          break;
-        }
-      } // while
-    }
-
-    // Second pass over members...
-    it = theMembers.iterator();
-    while (it.hasNext()) {
-      InternalDistributedMember member = it.next();
-      int managerType = member.getVmKind();
-      if (managerType == ADMIN_ONLY_DM_TYPE)
-        continue;
-
-      if (managerType == LOCATOR_DM_TYPE) {
-        // Fix for #50510 - pre-8.0 members will not let a locator be the elder
-        // so we need to make the same decision here
-        if (anyPre80Members) {
-          continue;
-        }
-      }
-
-      // Fix for #45566. Using a surprise member as the elder can cause a
-      // deadlock.
-      if (getMembershipManager().isSurpriseMember(member)) {
-        continue;
-      }
-
-      if (member.equals(this.localAddress)) {
-        if (!this.adam && elderCandidates == 1) {
-          this.adam = true;
-          logger.info(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_0_IS_THE_ELDER_AND_THE_ONLY_MEMBER,
-              this.localAddress));
-        } else {
-          logger.info(LocalizedMessage.create(LocalizedStrings.DistributionManager_I_0_AM_THE_ELDER,
-              this.localAddress));
-        }
-      }
-      return member;
-    } // while
-    // If we get this far then no elder exists
-    return null;
-  }
-
-  /**
-   * Select a new elder
-   *
-   */
-  private void selectElder() {
-    getSystem().getCancelCriterion().checkCancelInProgress(null); // bug 37884, if DS is
-                                                                  // disconnecting, throw exception
-
-    // Once we are the elder, we're stuck until we leave the view.
-    if (this.localAddress.equals(this.elder)) {
-      return;
-    }
-
-    // Determine who is the elder...
-    InternalDistributedMember candidate = getElderCandidate();
-    if (candidate == null) {
-      changeElder(null);
-      return; // No valid elder in current context
-    }
-
-    // Carefully switch to new elder
-    synchronized (this.elderMonitor) {
-      if (!candidate.equals(this.elder)) {
-        if (logger.isDebugEnabled()) {
-          logger.debug("The elder is: {} (was {})", candidate, this.elder);
-        }
-        changeElder(candidate);
-      }
-    } // synchronized
-  }
-
-  private String prettifyReason(String r) {
-    final String str = "java.io.IOException:";
-    if (r.startsWith(str)) {
-      return r.substring(str.length());
-    }
-    return r;
-  }
-
-  /**
-   * Returns true if id was removed. Returns false if it was not in the list of managers.
-   */
-  private boolean removeManager(InternalDistributedMember theId, boolean crashed, String p_reason) {
-    String reason = p_reason;
-    boolean result = false; // initialization shouldn't be required, but...
-
-    // Test once before acquiring the lock, fault tolerance for potentially
-    // recursive (and deadlock) conditions -- bug33626
-    // Note that it is always safe to _read_ {@link members} without locking
-    if (isCurrentMember(theId)) {
-      // Destroy underlying member's resources
-      reason = prettifyReason(reason);
-      synchronized (this.membersLock) {
-        if (logger.isDebugEnabled()) {
-          logger.debug("DistributionManager: removing member <{}>; crashed {}; reason = {}", theId,
-              crashed, reason);
-        }
-        Map<InternalDistributedMember, InternalDistributedMember> tmp = new HashMap(this.members);
-        if (tmp.remove(theId) != null) {
-          // Note we don't modify in place. This allows reader to get snapshots
-          // without locking.
-          if (tmp.isEmpty()) {
-            tmp = Collections.EMPTY_MAP;
-          } else {
-            tmp = Collections.unmodifiableMap(tmp);
-          }
-          this.members = tmp;
-          result = true;
-
-        } else {
-          result = false;
-          // Don't get upset since this can happen twice due to
-          // an explicit remove followed by an implicit one caused
-          // by a JavaGroup view change
-        }
-        Set tmp2 = new HashSet(this.membersAndAdmin);
-        if (tmp2.remove(theId)) {
-          if (tmp2.isEmpty()) {
-            tmp2 = Collections.EMPTY_SET;
-          } else {
-            tmp2 = Collections.unmodifiableSet(tmp2);
-          }
-          this.membersAndAdmin = tmp2;
-        }
-        this.removeHostedLocators(theId);
-      } // synchronized
-    } // if
-
-    // In any event, make sure that this member is no longer an elder.
-    if (!theId.equals(localAddress) && theId.equals(elder)) {
-      try {
-        selectElder();
-      } catch (DistributedSystemDisconnectedException e) {
-        // ignore
-      }
-    }
-
-    redundancyZones.remove(theId);
-
-    return result;
-  }
-
-  /**
-   * Makes note of a new distribution manager that has started up in the distributed cache. Invokes
-   * the appropriately listeners.
-   *
-   * @param theId The id of the distribution manager starting up
-   *
-   */
-  private void handleManagerStartup(InternalDistributedMember theId) {
-    HashMap<InternalDistributedMember, InternalDistributedMember> tmp = null;
-    synchronized (this.membersLock) {
-      // Note test is under membersLock
-      if (members.containsKey(theId)) {
-        return; // already accounted for
-      }
-
-      // Note we don't modify in place. This allows reader to get snapshots
-      // without locking.
-      tmp = new HashMap(this.members);
-      tmp.put(theId, theId);
-      this.members = Collections.unmodifiableMap(tmp);
-
-      Set stmp = new HashSet(this.membersAndAdmin);
-      stmp.add(theId);
-      this.membersAndAdmin = Collections.unmodifiableSet(stmp);
-    } // synchronized
-
-    if (theId.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
-      this.stats.incNodes(1);
-    }
-    logger.info(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_ADMITTING_MEMBER_0_NOW_THERE_ARE_1_NONADMIN_MEMBERS,
-        new Object[] {theId, Integer.valueOf(tmp.size())}));
-    addMemberEvent(new MemberJoinedEvent(theId));
-  }
-
-  @Override
-  public boolean isCurrentMember(InternalDistributedMember id) {
-    Set m;
-    synchronized (this.membersLock) {
-      // access to members synchronized under membersLock in order to
-      // ensure serialization
-      m = this.membersAndAdmin;
-    }
-    return m.contains(id);
-  }
-
-  /**
-   * Makes note of a new console that has started up in the distributed cache.
-   *
-   */
-  private void handleConsoleStartup(InternalDistributedMember theId) {
-    // if we have an all listener then notify it NOW.
-    HashSet tmp = null;
-    synchronized (this.membersLock) {
-      // Note test is under membersLock
-      if (membersAndAdmin.contains(theId))
-        return; // already accounted for
-
-      // Note we don't modify in place. This allows reader to get snapshots
-      // without locking.
-      tmp = new HashSet(this.membersAndAdmin);
-      tmp.add(theId);
-      this.membersAndAdmin = Collections.unmodifiableSet(tmp);
-    } // synchronized
-
-    for (Iterator iter = allMembershipListeners.iterator(); iter.hasNext();) {
-      MembershipListener listener = (MembershipListener) iter.next();
-      listener.memberJoined(theId);
-    }
-    logger.info(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_DMMEMBERSHIP_ADMITTING_NEW_ADMINISTRATION_MEMBER__0_,
-        theId));
-    // Note that we don't add the member to the list of admin consoles until
-    // we receive a message from them.
-  }
-
-  /**
-   * Process an incoming distribution message. This includes scheduling it correctly based on the
-   * message's nioPriority (executor type)
-   */
-  private void handleIncomingDMsg(DistributionMessage message) {
-    stats.incReceivedMessages(1L);
-    stats.incReceivedBytes(message.getBytesRead());
-    stats.incMessageChannelTime(message.resetTimestamp());
-
-    if (logger.isDebugEnabled()) {
-      logger.debug("Received message '{}' from <{}>", message, message.getSender());
-    }
-    scheduleIncomingMessage(message);
-  }
-
-  /**
-   * Makes note of a console that has shut down.
-   *
-   * @param theId The id of the console shutting down
-   * @param crashed only true if we detect this id to be gone from a javagroup view
-   *
-   * @see AdminConsoleDisconnectMessage#process
-   */
-  public void handleConsoleShutdown(InternalDistributedMember theId, boolean crashed,
-      String reason) {
-    boolean removedConsole = false;
-    boolean removedMember = false;
-    synchronized (this.membersLock) {
-      // to fix bug 39747 we can only remove this member from
-      // membersAndAdmin if he is not in members.
-      // This happens when we have an admin guy colocated with a normal DS.
-      // In this case we need for the normal DS to shutdown or crash.
-      if (!this.members.containsKey(theId)) {
-        if (logger.isDebugEnabled())
-          logger.debug("DistributionManager: removing admin member <{}>; crashed = {}; reason = {}",
-              theId, crashed, reason);
-        Set tmp = new HashSet(this.membersAndAdmin);
-        if (tmp.remove(theId)) {
-          // Note we don't modify in place. This allows reader to get snapshots
-          // without locking.
-          if (tmp.isEmpty()) {
-            tmp = Collections.EMPTY_SET;
-          } else {
-            tmp = Collections.unmodifiableSet(tmp);
-          }
-          this.membersAndAdmin = tmp;
-          removedMember = true;
-        } else {
-          // Don't get upset since this can happen twice due to
-          // an explicit remove followed by an implicit one caused
-          // by a JavaGroup view change
-        }
-      }
-      removeHostedLocators(theId);
-    }
-    synchronized (this.adminConsolesLock) {
-      if (this.adminConsoles.contains(theId)) {
-        removedConsole = true;
-        Set tmp = new HashSet(this.adminConsoles);
-        tmp.remove(theId);
-        if (tmp.isEmpty()) {
-          tmp = Collections.EMPTY_SET;
-        } else {
-          tmp = Collections.unmodifiableSet(tmp);
-        }
-        this.adminConsoles = tmp;
-      }
-    }
-    if (removedMember) {
-      for (Iterator iter = allMembershipListeners.iterator(); iter.hasNext();) {
-        MembershipListener listener = (MembershipListener) iter.next();
-        listener.memberDeparted(theId, crashed);
-      }
-    }
-    if (removedConsole) {
-      StringId msg = null;
-      if (crashed) {
-        msg = LocalizedStrings.DistributionManager_ADMINISTRATION_MEMBER_AT_0_CRASHED_1;
-      } else {
-        msg = LocalizedStrings.DistributionManager_ADMINISTRATION_MEMBER_AT_0_CLOSED_1;
-      }
-      logger.info(LocalizedMessage.create(msg, new Object[] {theId, reason}));
-    }
-
-    redundancyZones.remove(theId);
-  }
-
-  public void shutdownMessageReceived(InternalDistributedMember theId, String reason) {
-    this.membershipManager.shutdownMessageReceived(theId, reason);
-    handleManagerDeparture(theId, false,
-        LocalizedStrings.ShutdownMessage_SHUTDOWN_MESSAGE_RECEIVED.toLocalizedString());
-  }
-
-  @Override
-  public void handleManagerDeparture(InternalDistributedMember theId, boolean p_crashed,
-      String p_reason) {
-    boolean crashed = p_crashed;
-    String reason = p_reason;
-
-    AlertAppender.getInstance().removeAlertListener(theId);
-
-    // this fixes a race introduced in 5.0.1 by the fact that an explicit
-    // shutdown will cause a member to no longer be in our DM membership
-    // but still in the javagroup view.
-    try {
-      selectElder();
-    } catch (DistributedSystemDisconnectedException e) {
-      // keep going
-    }
-
-
-
-    int vmType = theId.getVmKind();
-    if (vmType == ADMIN_ONLY_DM_TYPE) {
-      removeUnfinishedStartup(theId, true);
-      handleConsoleShutdown(theId, crashed, reason);
-      return;
-    }
-
-    // not an admin VM...
-    if (!isCurrentMember(theId)) {
-      return; // fault tolerance
-    }
-    removeUnfinishedStartup(theId, true);
-
-    if (removeManager(theId, crashed, reason)) {
-      if (theId.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
-        this.stats.incNodes(-1);
-      }
-      StringId msg;
-      if (crashed && !isCloseInProgress()) {
-        msg =
-            LocalizedStrings.DistributionManager_MEMBER_AT_0_UNEXPECTEDLY_LEFT_THE_DISTRIBUTED_CACHE_1;
-        addMemberEvent(new MemberCrashedEvent(theId, reason));
-      } else {
-        msg =
-            LocalizedStrings.DistributionManager_MEMBER_AT_0_GRACEFULLY_LEFT_THE_DISTRIBUTED_CACHE_1;
-        addMemberEvent(new MemberDepartedEvent(theId, reason));
-      }
-      logger.info(LocalizedMessage.create(msg, new Object[] {theId, prettifyReason(reason)}));
-
-      // Remove this manager from the serialQueueExecutor.
-      if (this.serialQueuedExecutorPool != null) {
-        serialQueuedExecutorPool.handleMemberDeparture(theId);
-      }
-    }
-  }
-
-  private void handleManagerSuspect(InternalDistributedMember suspect,
-      InternalDistributedMember whoSuspected, String reason) {
-    if (!isCurrentMember(suspect)) {
-      return; // fault tolerance
-    }
-
-    int vmType = suspect.getVmKind();
-    if (vmType == ADMIN_ONLY_DM_TYPE) {
-      return;
-    }
-
-    addMemberEvent(new MemberSuspectEvent(suspect, whoSuspected, reason));
-  }
-
-  private void handleViewInstalled(NetView view) {
-    addMemberEvent(new ViewInstalledEvent(view));
-  }
-
-  private void handleQuorumLost(Set<InternalDistributedMember> failures,
-      List<InternalDistributedMember> remaining) {
-    addMemberEvent(new QuorumLostEvent(failures, remaining));
-  }
-
-  /**
-   * Sends the shutdown message. Not all DistributionManagers need to do this.
-   */
-  private void sendShutdownMessage() {
-    if (getDMType() == ADMIN_ONLY_DM_TYPE && Locator.getLocators().size() == 0) {
-      // [bruce] changed above "if" to have ShutdownMessage sent by locators.
-      // Otherwise the system can hang because an admin member does not trigger
-      // member-left notification unless a new view is received showing the departure.
-      // If two locators are simultaneously shut down this may not occur.
-      return;
-    }
-
-    ShutdownMessage m = new ShutdownMessage();
-    InternalDistributedMember theId = this.getDistributionManagerId();
-    m.setDistributionManagerId(theId);
-    Set allOthers = new HashSet(getViewMembers());
-    allOthers.remove(getDistributionManagerId());
-    m.setRecipients(allOthers);
-
-    // Address recipient = (Address) m.getRecipient();
-    if (logger.isTraceEnabled()) {
-      logger.trace("{} Sending {} to {}", this.getDistributionManagerId(), m,
-          m.getRecipientsDescription());
-    }
-
-    try {
-      // m.resetTimestamp(); // nanotimers across systems don't match
-      long startTime = DistributionStats.getStatTime();
-      sendViaMembershipManager(m.getRecipients(), m, this, stats);
-      this.stats.incSentMessages(1L);
-      if (DistributionStats.enableClockStats) {
-        stats.incSentMessagesTime(DistributionStats.getStatTime() - startTime);
-      }
-    } catch (CancelException e) {
-      logger.debug("CancelException caught sending shutdown: {}", e.getMessage(), e);
-    } catch (Exception ex2) {
-      logger.fatal(LocalizedMessage
-          .create(LocalizedStrings.DistributionManager_WHILE_SENDING_SHUTDOWN_MESSAGE), ex2);
-    } finally {
-      // Even if the message wasn't sent, *lie* about it, so that
-      // everyone believes that message distribution is done.
-      this.shutdownMsgSent = true;
-    }
-  }
-
-  /**
-   * Returns the executor for the given type of processor.
-   */
-  public Executor getExecutor(int processorType, InternalDistributedMember sender) {
-    switch (processorType) {
-      case STANDARD_EXECUTOR:
-        return getThreadPool();
-      case SERIAL_EXECUTOR:
-        return getSerialExecutor(sender);
-      case VIEW_EXECUTOR:
-        return this.viewThread;
-      case HIGH_PRIORITY_EXECUTOR:
-        return getHighPriorityThreadPool();
-      case WAITING_POOL_EXECUTOR:
-        return getWaitingThreadPool();
-      case PARTITIONED_REGION_EXECUTOR:
-        return getPartitionedRegionExcecutor();
-      case REGION_FUNCTION_EXECUTION_EXECUTOR:
-        return getFunctionExcecutor();
-      default:
-        throw new InternalGemFireError(LocalizedStrings.DistributionManager_UNKNOWN_PROCESSOR_TYPE
-            .toLocalizedString(processorType));
-    }
-  }
-
-  /**
-   * Actually does the work of sending a message out over the distribution channel.
-   *
-   * @param message the message to send
-   * @return list of recipients that did not receive the message because they left the view (null if
-   *         all received it or it was sent to {@link DistributionMessage#ALL_RECIPIENTS}.
-   * @throws NotSerializableException If <code>message</code> cannot be serialized
-   */
-  Set sendOutgoing(DistributionMessage message) throws NotSerializableException {
-    long startTime = DistributionStats.getStatTime();
-
-    Set result = sendViaMembershipManager(message.getRecipients(), message,
-        DistributionManager.this, this.stats);
-    long endTime = 0L;
-    if (DistributionStats.enableClockStats) {
-      endTime = NanoTimer.getTime();
-    }
-    boolean sentToAll = message.forAll();
-
-    if (sentToAll) {
-      stats.incBroadcastMessages(1L);
-      if (DistributionStats.enableClockStats) {
-        stats.incBroadcastMessagesTime(endTime - startTime);
-      }
-    }
-    stats.incSentMessages(1L);
-    if (DistributionStats.enableClockStats) {
-      stats.incSentMessagesTime(endTime - startTime);
-      stats.incDistributeMessageTime(endTime - message.getTimestamp());
-    }
-
-    return result;
-  }
-
-
-
-  /**
-   * @return recipients who did not receive the message
-   * @throws NotSerializableException If <codE>message</code> cannot be serialized
-   */
-  Set sendMessage(DistributionMessage message) throws NotSerializableException {
-    Set result = null;
-    try {
-      // Verify we're not too far into the shutdown
-      stopper.checkCancelInProgress(null);
-
-      // avoid race condition during startup
-      waitUntilReadyToSendMsgs(message);
-
-      result = sendOutgoing(message);
-    } catch (NotSerializableException | ToDataException | ReenteredConnectException
-        | InvalidDeltaException | CancelException ex) {
-      throw ex;
-    } catch (Exception ex) {
-      DistributionManager.this.exceptionInThreads = true;
-      String receiver = "NULL";
-      if (message != null) {
-        receiver = message.getRecipientsDescription();
-      }
-
-      logger.fatal(
-          LocalizedMessage.create(LocalizedStrings.DistributionManager_WHILE_PUSHING_MESSAGE_0_TO_1,
-              new Object[] {message, receiver}),
-          ex);
-      if (message == null || message.forAll())
-        return null;
-      result = new HashSet();
-      for (int i = 0; i < message.getRecipients().length; i++)
-        result.add(message.getRecipients()[i]);
-      return result;
-      /*
-       * if (ex instanceof org.apache.geode.GemFireIpcResourceException) { return; }
-       */
-    }
-    return result;
-  }
-
-  /**
-   * @return list of recipients who did not receive the message because they left the view (null if
-   *         all received it or it was sent to {@link DistributionMessage#ALL_RECIPIENTS}).
-   * @throws NotSerializableException If content cannot be serialized
-   */
-  private Set sendViaMembershipManager(InternalDistributedMember[] destinations,
-      DistributionMessage content, DistributionManager dm, DistributionStats stats)
-      throws NotSerializableException {
-    if (membershipManager == null) {
-      logger.warn(LocalizedMessage.create(
-          LocalizedStrings.DistributionChannel_ATTEMPTING_A_SEND_TO_A_DISCONNECTED_DISTRIBUTIONMANAGER));
-      if (destinations.length == 1 && destinations[0] == DistributionMessage.ALL_RECIPIENTS)
-        return null;
-      HashSet result = new HashSet();
-      for (int i = 0; i < destinations.length; i++) {
-        result.add(destinations[i]);
-      }
-      return result;
-    }
-    return membershipManager.send(destinations, content, stats);
-  }
-
-
-  /**
-   * Schedule a given message appropriately, depending upon its executor kind.
-   */
-  void scheduleIncomingMessage(DistributionMessage message) {
-    /*
-     * Potential race condition between starting up and getting other distribution manager ids -- DM
-     * will only be initialized upto the point at which it called startThreads
-     */
-    waitUntilReadyForMessages();
-    message.schedule(DistributionManager.this);
-  }
-
-  @Override
-  public boolean isAdam() {
-    return this.adam;
-  }
-
-  @Override
-  public InternalDistributedMember getElderId() throws DistributedSystemDisconnectedException {
-    if (closeInProgress) {
-      throw new DistributedSystemDisconnectedException(
-          LocalizedStrings.DistributionManager_NO_VALID_ELDER_WHEN_SYSTEM_IS_SHUTTING_DOWN
-              .toLocalizedString(),
-          this.getRootCause());
-    }
-    getSystem().getCancelCriterion().checkCancelInProgress(null);
-
-    // Cache a recent value of the elder
-    InternalDistributedMember result = elder;
-    if (result != null && membershipManager.memberExists(result)) {
-      return result;
-    }
-    logger.info(LocalizedMessage.create(
-        LocalizedStrings.DistributionManager_ELDER__0__IS_NOT_CURRENTLY_AN_ACTIVE_MEMBER_SELECTING_NEW_ELDER,
-        elder));
-
-    selectElder(); // ShutdownException can be thrown here
-    logger.info(LocalizedMessage
-        .create(LocalizedStrings.DistributionManager_NEWLY_SELECTED_ELDER_IS_NOW__0_, elder));
-    return elder;
-  }
-
-  @Override
-  public boolean isElder() {
-    return getId().equals(elder);
-  }
-
-  @Override
-  public boolean isLoner() {
-    return false;
-  }
-
-  private final StoppableReentrantLock elderLock;
-  private ElderState elderState;
-  private volatile boolean elderStateInitialized;
-
-  @Override
-  public ElderState getElderState(boolean force, boolean useTryLock) {
-    if (force) {
-      if (logger.isDebugEnabled()) {
-        if (!this.localAddress.equals(this.elder)) {
-          logger.debug("Forcing myself, {}, to be the elder.", this.localAddress);
-        }
-      }
-      changeElder(this.localAddress);
-    }
-    if (force || this.localAddress.equals(elder)) {
-      // we are the elder
-      if (this.elderStateInitialized) {
-        return this.elderState;
-      }
-      return getElderStateWithTryLock(useTryLock);
-    } else {
-      // we are not the elder so return null
-      return null;
-    }
-  }
-
-  /**
-   * Usage: GrantorRequestProcessor calls getElderState with useTryLock set to true if the
-   * becomeGrantor Collaboration is already acquired.
-   * <p>
-   * This tryLock is attempted and if it fails, an exception is thrown to cause a Doug Lea style
-   * back-off (p. 149). It throws an exception because it needs to back down a couple of packages
-   * and I didn't want to couple this pkg too tightly with the dlock pkg.
-   * <p>
-   * GrantorRequestProcessor catches the exception, releases and reacquires the Collaboration, and
-   * then comes back here to attempt the tryLock again. Currently nothing will stop it from
-   * re-attempting forever. It has to get the ElderState and cannot give up, but it can free up the
-   * Collaboration and then re-enter it. The other thread holding the elder lock will hold it only
-   * briefly. I've added a volatile called elderStateInitialized which should cause this back-off to
-   * occur only once in the life of a vm... once the elder, always the elder.
-   * <p>
-   */
-  private ElderState getElderStateWithTryLock(boolean useTryLock) {
-    boolean locked = false;
-    if (useTryLock) {
-      boolean interrupted = Thread.interrupted();
-      try {
-        locked = this.elderLock.tryLock(2000);
-      } catch (InterruptedException e) {
-        interrupted = true;
-        getCancelCriterion().checkCancelInProgress(e);
-        // one last attempt and then allow it to fail for back-off...
-        locked = this.elderLock.tryLock();
-      } finally {
-        if (interrupted) {
-          Thread.currentThread().interrupt();
-        }
-      }
-    } else {
-      locked = true;
-      this.elderLock.lock();
-    }
-    if (!locked) {
-      // try-lock must have failed
-      throw new IllegalStateException(
-          LocalizedStrings.DistributionManager_POSSIBLE_DEADLOCK_DETECTED.toLocalizedString());
-    }
-    try {
-      if (this.elderState == null) {
-        this.elderState = new ElderState(this);
-      }
-    } finally {
-      this.elderLock.unlock();
-    }
-    this.elderStateInitialized = true;
-    // if (Thread.currentThread().isInterrupted())
-    // throw new RuntimeException("Interrupted");
-    return this.elderState;
-  }
-
-  /**
-   * Waits until elder if newElder or newElder is no longer a member
-   *
-   * @return true if newElder is the elder; false if he is no longer a member or we are the elder.
-   */
-  public boolean waitForElder(final InternalDistributedMember desiredElder) {
-    MembershipListener l = null;
-    try {
-      // Assert.assertTrue(
-      // desiredElder.getVmKind() != DistributionManager.ADMIN_ONLY_DM_TYPE);
-      synchronized (this.elderMonitor) {
-        while (true) {
-          if (closeInProgress)
-            return false;
-          InternalDistributedMember currentElder = this.elder;
-          // Assert.assertTrue(
-          // currentElder.getVmKind() != DistributionManager.ADMIN_ONLY_DM_TYPE);
-          if (desiredElder.equals(currentElder)) {
-            return true;
-          }
-          if (!isCurrentMember(desiredElder)) {
-            return false; // no longer present
-          }
-          if (this.localAddress.equals(currentElder)) {
-            // Once we become the elder we no longer allow anyone else to be the
-            // elder so don't let them wait anymore.
-            return false;
-          }
-          if (l == null) {
-            l = new MembershipListener() {
-              public void memberJoined(InternalDistributedMember theId) {
-                // nothing needed
-              }
-
-              public void memberDeparted(InternalDistributedMember theId, boolean crashed) {
-                if (desiredElder.equals(theId)) {
-                  notifyElderChangeWaiters();
-                }
-              }
-
-              public void memberSuspect(InternalDistributedMember id,
-                  InternalDistributedMember whoSuspected, String reason) {}
-
-              public void viewInstalled(NetView view) {}
-
-              public void quorumLost(Set<InternalDistributedMember> failures,
-                  List<InternalDistributedMember> remaining) {}
-            };
-            addMembershipListener(l);
-          }
-          logger.info(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_CHANGING_ELDER_FROM_0_TO_1,
-              new Object[] {currentElder, desiredElder}));
-          elderChangeWait();
-        } // while true
-      }
-    } finally {
-      if (l != null) {
-        removeMembershipListener(l);
-      }
-    }
-  }
-
-  /**
-   * Set the elder to newElder and notify anyone waiting for it to change
-   */
-  private void changeElder(InternalDistributedMember newElder) {
-    synchronized (this.elderMonitor) {
-      if (newElder != null && this.localAddress != null && !this.localAddress.equals(newElder)) {
-        if (this.localAddress.equals(this.elder)) {
-          // someone else changed the elder while this thread was off cpu
-          if (logger.isDebugEnabled()) {
-            logger.debug("changeElder found this VM to be the elder and is taking an early out");
-          }
-          return;
-        }
-      }
-      this.elder = newElder;
-      if (this.waitingForElderChange) {
-        this.waitingForElderChange = false;
-        this.elderMonitor.notifyAll();
-      }
-    }
-  }
-
-  /**
-   * Used to wakeup someone in elderChangeWait even though the elder has not changed
-   */
-  private void notifyElderChangeWaiters() {
-    synchronized (this.elderMonitor) {
-      if (this.waitingForElderChange) {
-        this.waitingForElderChange = false;
-        this.elderMonitor.notifyAll();
-      }
-    }
-  }
-
-  /**
-   * Must be called holding {@link #elderMonitor} lock
-   */
-  private void elderChangeWait() {
-    // This is OK since we're holding the elderMonitor lock, so no
-    // new events will come through until the wait() below.
-    this.waitingForElderChange = true;
-
-    while (this.waitingForElderChange) {
-      stopper.checkCancelInProgress(null);
-      boolean interrupted = Thread.interrupted();
-      try {
-        this.elderMonitor.wait();
-        break;
-      } catch (InterruptedException ignore) {
-        interrupted = true;
-      } finally {
-        if (interrupted) {
-          Thread.currentThread().interrupt();
-        }
-      }
-    } // while
-  }
-
-  @Override
-  public ExecutorService getThreadPool() {
-    return this.threadPool;
-  }
-
-  @Override
-  public ExecutorService getHighPriorityThreadPool() {
-    return this.highPriorityPool;
-  }
-
-  @Override
-  public ExecutorService getWaitingThreadPool() {
-    return this.waitingPool;
-  }
-
-  @Override
-  public ExecutorService getPrMetaDataCleanupThreadPool() {
-    return this.prMetaDataCleanupThreadPool;
-  }
-
-  private Executor getPartitionedRegionExcecutor() {
-    if (this.partitionedRegionThread != null) {
-      return this.partitionedRegionThread;
-    } else {
-      return this.partitionedRegionPool;
-    }
-  }
-
-
-  @Override
-  public Executor getFunctionExcecutor() {
-    if (this.functionExecutionThread != null) {
-      return this.functionExecutionThread;
-    } else {
-      return this.functionExecutionPool;
-    }
-  }
-
-  private Executor getSerialExecutor(InternalDistributedMember sender) {
-    if (MULTI_SERIAL_EXECUTORS) {
-      return this.serialQueuedExecutorPool.getThrottledSerialExecutor(sender);
-    } else {
-      return this.serialThread;
-    }
-  }
-
-  /** returns the serialThread's queue if throttling is being used, null if not */
-  public OverflowQueueWithDMStats getSerialQueue(InternalDistributedMember sender) {
-    if (MULTI_SERIAL_EXECUTORS) {
-      return this.serialQueuedExecutorPool.getSerialQueue(sender);
-    } else {
-      return this.serialQueue;
-    }
-  }
-
-  /**
-   * Sets the administration agent associated with this distribution manager.
-   */
-  public void setAgent(RemoteGfManagerAgent agent) {
-    // Don't let the agent be set twice. There should be a one-to-one
-    // correspondence between admin agent and distribution manager.
-    if (agent != null) {
-      if (this.agent != null) {
-        throw new IllegalStateException(
-            LocalizedStrings.DistributionManager_THERE_IS_ALREADY_AN_ADMIN_AGENT_ASSOCIATED_WITH_THIS_DISTRIBUTION_MANAGER
-                .toLocalizedString());
-      }
-
-    } else {
-      if (this.agent == null) {
-        throw new IllegalStateException(
-            LocalizedStrings.DistributionManager_THERE_WAS_NEVER_AN_ADMIN_AGENT_ASSOCIATED_WITH_THIS_DISTRIBUTION_MANAGER
-                .toLocalizedString());
-      }
-    }
-    this.agent = agent;
-  }
-
-  /**
-   * Returns the agent that owns this distribution manager. (in ConsoleDistributionManager)
-   */
-  public RemoteGfManagerAgent getAgent() {
-    return this.agent;
-  }
-
-  /**
-   * Returns a description of the distribution configuration used for this distribution manager. (in
-   * ConsoleDistributionManager)
-   *
-   * @return <code>null</code> if no admin {@linkplain #getAgent agent} is associated with this
-   *         distribution manager
-   */
-  public String getDistributionConfigDescription() {
-    if (this.agent == null) {
-      return null;
-
-    } else {
-      return this.agent.getTransport().toString();
-    }
-  }
-
-  /* -----------------------------Health Monitor------------------------------ */
-  private final ConcurrentMap hmMap = new ConcurrentHashMap();
-
-  private volatile InternalCache cache;
-
-  /**
-   * Returns the health monitor for this distribution manager and owner.
-   *
-   * @param owner the agent that owns the returned monitor
-   * @return the health monitor created by the owner; <code>null</code> if the owner has now created
-   *         a monitor.
-   * @since GemFire 3.5
-   */
-  @Override
-  public HealthMonitor getHealthMonitor(InternalDistributedMember owner) {
-    return (HealthMonitor) this.hmMap.get(owner);
-  }
-
-  /**
-   * Returns the health monitor for this distribution manager.
-   *
-   * @param owner the agent that owns the created monitor
-   * @param cfg the configuration to use when creating the monitor
-   * @since GemFire 3.5
-   */
-  @Override
-  public void createHealthMonitor(InternalDistributedMember owner, GemFireHealthConfig cfg) {
-    if (closeInProgress) {
-      return;
-    }
-    {
-      final HealthMonitor hm = getHealthMonitor(owner);
-      if (hm != null) {
-        hm.stop();
-        this.hmMap.remove(owner);
-      }
-    }
-    {
-      HealthMonitorImpl newHm = new HealthMonitorImpl(owner, cfg, this);
-      newHm.start();
-      this.hmMap.put(owner, newHm);
-    }
-  }
-
-  /**
-   * Remove a monitor that was previously created.
-   *
-   * @param owner the agent that owns the monitor to remove
-   */
-  @Override
-  public void removeHealthMonitor(InternalDistributedMember owner, int theId) {
-    final HealthMonitor hm = getHealthMonitor(owner);
-    if (hm != null && hm.getId() == theId) {
-      hm.stop();
-      this.hmMap.remove(owner);
-    }
-  }
-
-  private void removeAllHealthMonitors() {
-    Iterator it = this.hmMap.values().iterator();
-    while (it.hasNext()) {
-      HealthMonitor hm = (HealthMonitor) it.next();
-      hm.stop();
-      it.remove();
-    }
-  }
-
-  @Override
-  public Set<InternalDistributedMember> getAdminMemberSet() {
-    return this.adminConsoles;
-  }
-
-  /** Returns count of members filling the specified role */
-  @Override
-  public int getRoleCount(Role role) {
-    int count = 0;
-    Set mbrs = getDistributionManagerIds();
-    for (Iterator mbrIter = mbrs.iterator(); mbrIter.hasNext();) {
-      Set roles = ((InternalDistributedMember) mbrIter.next()).getRoles();
-      for (Iterator rolesIter = roles.iterator(); rolesIter.hasNext();) {
-        Role mbrRole = (Role) rolesIter.next();
-        if (mbrRole.equals(role)) {
-          count++;
-          break;
-        }
-      }
-    }
-    return count;
-  }
-
-  /** Returns true if at least one member is filling the specified role */
-  @Override
-  public boolean isRolePresent(Role role) {
-    Set mbrs = getDistributionManagerIds();
-    for (Iterator mbrIter = mbrs.iterator(); mbrIter.hasNext();) {
-      Set roles = ((InternalDistributedMember) mbrIter.next()).getRoles();
-      for (Iterator rolesIter = roles.iterator(); rolesIter.hasNext();) {
-        Role mbrRole = (Role) rolesIter.next();
-        if (mbrRole.equals(role)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-
-  /** Returns a set of all roles currently in the distributed system. */
-  @Override
-  public Set getAllRoles() {
-    Set allRoles = new HashSet();
-    Set mbrs = getDistributionManagerIds();
-    for (Iterator mbrIter = mbrs.iterator(); mbrIter.hasNext();) {
-      Set roles = ((InternalDistributedMember) mbrIter.next()).getRoles();
-      for (Iterator rolesIter = roles.iterator(); rolesIter.hasNext();) {
-        Role mbrRole = (Role) rolesIter.next();
-        allRoles.add(mbrRole);
-      }
-    }
-    return allRoles;
-  }
-
-  /**
-   * Returns the membership manager for this distributed system. The membership manager owns the
-   * membership set and handles all communications. The manager should NOT be used to bypass
-   * DistributionManager to send or receive messages.
-   * <p>
-   * This method was added to allow hydra to obtain thread-local data for transport from one thread
-   * to another.
-   */
-  @Override
-  public MembershipManager getMembershipManager() {
-    // NOTE: do not add cancellation checks here. This method is
-    // used during auto-reconnect after the DS has been closed
-    return membershipManager;
-  }
-
-
-  ////////////////////// Inner Classes //////////////////////
-
-
-  /**
-   * This class is used for DM's multi serial executor. The serial messages are managed/executed by
-   * multiple serial thread. This class takes care of executing messages related to a sender using
-   * the same thread.
-   */
-  private static class SerialQueuedExecutorPool {
-    /** To store the serial threads */
-    ConcurrentMap serialQueuedExecutorMap = new ConcurrentHashMap(MAX_SERIAL_QUEUE_THREAD);
-
-    /** To store the queue associated with thread */
-    Map serialQueuedMap = new HashMap(MAX_SERIAL_QUEUE_THREAD);
-
-    /** Holds mapping between sender to the serial thread-id */
-    Map senderToSerialQueueIdMap = new HashMap();
-
-    /**
-     * Holds info about unused thread, a thread is marked unused when the member associated with it
-     * has left distribution system.
-     */
-    ArrayList threadMarkedForUse = new ArrayList();
-
-    DistributionStats stats;
-    ThreadGroup threadGroup;
-
-    final boolean throttlingDisabled;
-
-    /**
-     * Constructor.
-     *
-     * @param group thread group to which the threads will belog to.
-     * @param stats
-     */
-    SerialQueuedExecutorPool(ThreadGroup group, DistributionStats stats,
-        boolean throttlingDisabled) {
-      this.threadGroup = group;
-      this.stats = stats;
-      this.throttlingDisabled = throttlingDisabled;
-    }
-
-    /*
-     * Returns an id of the thread in serialQueuedExecutorMap, thats mapped to the given seder.
-     *
-     * @param sender
-     *
-     * @param createNew boolean flag to indicate whether to create a new id, if id doesnot exists.
-     */
-    private Integer getQueueId(InternalDistributedMember sender, boolean createNew) {
-      // Create a new Id.
-      Integer queueId;
-
-      synchronized (senderToSerialQueueIdMap) {
-        // Check if there is a executor associated with this sender.
-        queueId = (Integer) senderToSerialQueueIdMap.get(sender);
-
-        if (!createNew || queueId != null) {
-          return queueId;
-        }
-
-        // Create new.
-        // Check if any threads are availabe that is marked for Use.
-        if (!threadMarkedForUse.isEmpty()) {
-          queueId = (Integer) threadMarkedForUse.remove(0);
-        }
-        // If Map is full, use the threads in round-robin fashion.
-        if (queueId == null) {
-          queueId = Integer.valueOf((serialQueuedExecutorMap.size() + 1) % MAX_SERIAL_QUEUE_THREAD);
-        }
-        senderToSerialQueueIdMap.put(sender, queueId);
-      }
-      return queueId;
-    }
-
-    /*
-     * Returns the queue associated with this sender. Used in FlowControl for throttling (based on
-     * queue size).
-     */
-    public OverflowQueueWithDMStats getSerialQueue(InternalDistributedMember sender) {
-      Integer queueId = getQueueId(sender, false);
-      if (queueId == null) {
-        return null;
-      }
-      return (OverflowQueueWithDMStats) serialQueuedMap.get(queueId);
-    }
-
-    /*
-     * Returns the serial queue executor, before returning the thread this applies throttling, based
-     * on the total serial queue size (total - sum of all the serial queue size). The throttling is
-     * applied during put event, this doesnt block the extract operation on the queue.
-     *
-     */
-    public SerialQueuedExecutorWithDMStats getThrottledSerialExecutor(
-        InternalDistributedMember sender) {
-      SerialQueuedExecutorWithDMStats executor = getSerialExecutor(sender);
-
-      // Get the total serial queue size.
-      int totalSerialQueueMemSize = stats.getSerialQueueBytes();
-
-      // for tcp socket reader threads, this code throttles the thread
-      // to keep the sender-side from overwhelming the receiver.
-      // UDP readers are throttled in the FC protocol, which queries
-      // the queue to see if it should throttle
-      if (stats.getSerialQueueBytes() > TOTAL_SERIAL_QUEUE_THROTTLE
-          && !DistributionMessage.isPreciousThread()) {
-        do {
-          boolean interrupted = Thread.interrupted();
-          try {
-            float throttlePercent = (float) (totalSerialQueueMemSize - TOTAL_SERIAL_QUEUE_THROTTLE)
-                / (float) (TOTAL_SERIAL_QUEUE_BYTE_LIMIT - TOTAL_SERIAL_QUEUE_THROTTLE);
-            int sleep = (int) (100.0 * throttlePercent);
-            sleep = Math.max(sleep, 1);
-            Thread.sleep(sleep);
-          } catch (InterruptedException ex) {
-            interrupted = true;
-            // FIXME-InterruptedException
-            // Perhaps we should return null here?
-          } finally {
-            if (interrupted) {
-              Thread.currentThread().interrupt();
-            }
-          }
-          this.stats.getSerialQueueHelper().incThrottleCount();
-        } while (stats.getSerialQueueBytes() >= TOTAL_SERIAL_QUEUE_BYTE_LIMIT);
-      }
-      return executor;
-    }
-
-    /*
-     * Returns the serial queue executor for the given sender.
-     */
-    public SerialQueuedExecutorWithDMStats getSerialExecutor(InternalDistributedMember sender) {
-      SerialQueuedExecutorWithDMStats executor = null;
-      Integer queueId = getQueueId(sender, true);
-      if ((executor =
-          (SerialQueuedExecutorWithDMStats) serialQueuedExecutorMap.get(queueId)) != null) {
-        return executor;
-      }
-      // If executor doesn't exists for this sender, create one.
-      executor = createSerialExecutor(queueId);
-
-      serialQueuedExecutorMap.put(queueId, executor);
-
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "Created Serial Queued Executor With queueId {}. Total number of live Serial Threads :{}",
-            queueId, serialQueuedExecutorMap.size());
-      }
-      stats.incSerialPooledThread();
-      return executor;
-    }
-
-    /*
-     * Creates a serial queue executor.
-     */
-    private SerialQueuedExecutorWithDMStats createSerialExecutor(final Integer id) {
-
-      BlockingQueue poolQueue;
-
-      if (SERIAL_QUEUE_BYTE_LIMIT == 0 || this.throttlingDisabled) {
-        poolQueue = new OverflowQueueWithDMStats(stats.getSerialQueueHelper());
-      } else {
-        poolQueue = new ThrottlingMemLinkedQueueWithDMStats(SERIAL_QUEUE_BYTE_LIMIT,
-            SERIAL_QUEUE_THROTTLE, SERIAL_QUEUE_SIZE_LIMIT, SERIAL_QUEUE_SIZE_THROTTLE,
-            this.stats.getSerialQueueHelper());
-      }
-
-      serialQueuedMap.put(id, poolQueue);
-
-      ThreadFactory tf = new ThreadFactory() {
-        public Thread newThread(final Runnable command) {
-          SerialQueuedExecutorPool.this.stats.incSerialPooledThreadStarts();
-          final Runnable r = new Runnable() {
-            public void run() {
-              ConnectionTable.threadWantsSharedResources();
-              Connection.makeReaderThread();
-              try {
-                command.run();
-              } finally {
-                ConnectionTable.releaseThreadsSockets();
-              }
-            }
-          };
-
-          Thread thread = new Thread(threadGroup, r, "Pooled Serial Message Processor " + id);
-          thread.setDaemon(true);
-          return thread;
-        }
-      };
-      return new SerialQueuedExecutorWithDMStats(poolQueue,
-          this.stats.getSerialPooledProcessorHelper(), tf);
-    }
-
-    /*
-     * Does cleanup relating to this member. And marks the serial executor associated with this
-     * member for re-use.
-     */
-    private void handleMemberDeparture(InternalDistributedMember member) {
-      Integer queueId = getQueueId(member, false);
-      if (queueId == null) {
-        return;
-      }
-
-      boolean isUsed = false;
-
-      synchronized (senderToSerialQueueIdMap) {
-        senderToSerialQueueIdMap.remove(member);
-
-        // Check if any other members are using the same executor.
-        for (Iterator iter = senderToSerialQueueIdMap.values().iterator(); iter.hasNext();) {
-          Integer value = (Integer) iter.next();
-          if (value.equals(queueId)) {
-            isUsed = true;
-            break;
-          }
-        }
-
-        // If not used mark this as unused.
-        if (!isUsed) {
-          if (logger.isInfoEnabled(LogMarker.DM))
-            logger.info(LogMarker.DM,
-                LocalizedMessage.create(
-                    LocalizedStrings.DistributionManager_MARKING_THE_SERIALQUEUEDEXECUTOR_WITH_ID__0__USED_BY_THE_MEMBER__1__TO_BE_UNUSED,
-                    new Object[] {queueId, member}));
-
-          threadMarkedForUse.add(queueId);
-        }
-      }
-    }
-
-    private void awaitTermination(long time, TimeUnit unit) throws InterruptedException {
-      long timeNanos = unit.toNanos(time);
-      long remainingNanos = timeNanos;
-      long start = System.nanoTime();
-      for (Iterator iter = serialQueuedExecutorMap.values().iterator(); iter.hasNext();) {
-        ExecutorService executor = (ExecutorService) iter.next();
-        executor.awaitTermination(remainingNanos, TimeUnit.NANOSECONDS);
-        remainingNanos = timeNanos = (System.nanoTime() - start);
-        if (remainingNanos <= 0) {
-          return;
-        }
-      }
-    }
-
-    private void shutdown() {
-      for (Iterator iter = serialQueuedExecutorMap.values().iterator(); iter.hasNext();) {
-        ExecutorService executor = (ExecutorService) iter.next();
-        executor.shutdown();
-      }
-    }
-  }
-
-  /**
-   * A simple class used for locking the list of members of the distributed system. We give this
-   * lock its own class so that it shows up nicely in stack traces.
-   */
-  private static class MembersLock {
-    protected MembersLock() {
-
-    }
-  }
-
-  /**
-   * A simple class used for locking the list of membership listeners. We give this lock its own
-   * class so that it shows up nicely in stack traces.
-   */
-  private static class MembershipListenersLock {
-    protected MembershipListenersLock() {}
-  }
-
-  /**
-   * This is the listener implementation for responding from events from the Membership Manager.
-   *
-   */
-  private class DMListener implements DistributedMembershipListener {
-    DistributionManager dm;
-
-    public DMListener(DistributionManager dm) {
-      this.dm = dm;
-    }
-
-    @Override
-    public boolean isShutdownMsgSent() {
-      return shutdownMsgSent;
-    }
-
-    @Override
-    public void membershipFailure(String reason, Throwable t) {
-      exceptionInThreads = true;
-      DistributionManager.this.rootCause = t;
-      getSystem().disconnect(reason, t, true);
-    }
-
-    @Override
-    public void messageReceived(DistributionMessage message) {
-      handleIncomingDMsg(message);
-    }
-
-    @Override
-    public void newMemberConnected(InternalDistributedMember member) {
-      // Do not elect the elder here as surprise members invoke this callback
-      // without holding the view lock. That can cause a race condition and
-      // subsequent deadlock (#45566). Elder selection is now done when a view
-      // is installed.
-      dm.addNewMember(member);
-    }
-
-    @Override
-    public void memberDeparted(InternalDistributedMember theId, boolean crashed, String reason) {
-      boolean wasAdmin = getAdminMemberSet().contains(theId);
-      if (wasAdmin) {
-        // Pretend we received an AdminConsoleDisconnectMessage from the console that
-        // is no longer in the JavaGroup view.
-        // He must have died without sending a ShutdownMessage.
-        // This fixes bug 28454.
-        AdminConsoleDisconnectMessage message = new AdminConsoleDisconnectMessage();
-        message.setSender(theId);
-        message.setCrashed(crashed);
-        message.setAlertListenerExpected(true);
-        message.setIgnoreAlertListenerRemovalFailure(true); // we don't know if it was a listener so
-                                                            // don't issue a warning
-        message.setRecipient(localAddress);
-        message.setReason(reason); // added for #37950
-        handleIncomingDMsg(message);
-      }
-      dm.handleManagerDeparture(theId, crashed, reason);
-    }
-
-    @Override
-    public void memberSuspect(InternalDistributedMember suspect,
-        InternalDistributedMember whoSuspected, String reason) {
-      dm.handleManagerSuspect(suspect, whoSuspected, reason);
-    }
-
-    @Override
-    public void viewInstalled(NetView view) {
-      processElderSelection();
-      dm.handleViewInstalled(view);
-    }
-
-    @Override
-    public void quorumLost(Set<InternalDistributedMember> failures,
-        List<InternalDistributedMember> remaining) {
-      dm.handleQuorumLost(failures, remaining);
-    }
-
-    @Override
-    public DistributionManager getDM() {
-      return dm;
-    }
-
-    private void processElderSelection() {
-      // If we currently had no elder, this member might be the elder;
-      // go through the selection process and decide now.
-      try {
-        dm.selectElder();
-      } catch (DistributedSystemDisconnectedException e) {
-        // ignore
-      }
-    }
-  }
-
-
-  private abstract static class MemberEvent {
-
-    private InternalDistributedMember id;
-
-    MemberEvent(InternalDistributedMember id) {
-      this.id = id;
-    }
-
-    public InternalDistributedMember getId() {
-      return this.id;
-    }
-
-    void handleEvent(DistributionManager manager) {
-      handleEvent(manager, manager.membershipListeners.keySet());
-      handleEvent(manager, manager.allMembershipListeners);
-    }
-
-    protected abstract void handleEvent(MembershipListener listener);
-
-    private void handleEvent(DistributionManager manager,
-        Set<MembershipListener> membershipListeners) {
-      for (MembershipListener listener : membershipListeners) {
-        try {
-          handleEvent(listener);
-        } catch (CancelException e) {
-          if (manager.isCloseInProgress()) {
-            if (logger.isTraceEnabled()) {
-              logger.trace("MemberEventInvoker: cancelled");
-            }
-          } else {
-            logger.warn(LocalizedMessage
-                .create(LocalizedStrings.DistributionManager_UNEXPECTED_CANCELLATION), e);
-          }
-          break;
-        } catch (VirtualMachineError err) {
-          SystemFailure.initiateFailure(err);
-          // If this ever returns, rethrow the error. We're poisoned
-          // now, so don't let this thread continue.
-          throw err;
-        } catch (Throwable t) {
-          // Whenever you catch Error or Throwable, you must also
-          // catch VirtualMachineError (see above). However, there is
-          // _still_ a possibility that you are dealing with a cascading
-          // error condition, so you also need to check to see if the JVM
-          // is still usable:
-          SystemFailure.checkFailure();
-          logger.warn(LocalizedMessage.create(
-              LocalizedStrings.DistributionManager_EXCEPTION_WHILE_CALLING_MEMBERSHIP_LISTENER_FOR_EVENT__0,
-              this), t);
-        }
-      }
-    }
-  }
-
-  /**
-   * This is an event reflecting that a InternalDistributedMember has joined the system.
-   *
-   *
-   */
-  private static class MemberJoinedEvent extends MemberEvent {
-    MemberJoinedEvent(InternalDistributedMember id) {
-      super(id);
-    }
-
-    @Override
-    public String toString() {
-      return "member " + getId() + " joined";
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      listener.memberJoined(getId());
-    }
-  }
-
-  /**
-   * This is an event reflecting that a InternalDistributedMember has left the system.
-   *
-   */
-  private static class MemberDepartedEvent extends MemberEvent {
-    String reason;
-
-    MemberDepartedEvent(InternalDistributedMember id, String r) {
-      super(id);
-      reason = r;
-    }
-
-    @Override
-    public String toString() {
-      return "member " + getId() + " departed (" + reason + ")";
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      listener.memberDeparted(getId(), false);
-    }
-  }
-
-  /**
-   * This is an event reflecting that a InternalDistributedMember has left the system in an
-   * unexpected way.
-   *
-   *
-   */
-  private static class MemberCrashedEvent extends MemberEvent {
-    String reason;
-
-    MemberCrashedEvent(InternalDistributedMember id, String r) {
-      super(id);
-      reason = r;
-    }
-
-    @Override
-    public String toString() {
-      return "member " + getId() + " crashed: " + reason;
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      listener.memberDeparted(getId(), true/* crashed */);
-    }
-  }
-
-  /**
-   * This is an event reflecting that a InternalDistributedMember may be missing but has not yet
-   * left the system.
-   */
-  private static class MemberSuspectEvent extends MemberEvent {
-    InternalDistributedMember whoSuspected;
-    String reason;
-
-    MemberSuspectEvent(InternalDistributedMember suspect, InternalDistributedMember whoSuspected,
-        String reason) {
-      super(suspect);
-      this.whoSuspected = whoSuspected;
-      this.reason = reason;
-    }
-
-    public InternalDistributedMember whoSuspected() {
-      return this.whoSuspected;
-    }
-
-    public String getReason() {
-      return this.reason;
-    }
-
-    @Override
-    public String toString() {
-      return "member " + getId() + " suspected by: " + this.whoSuspected + " reason: " + reason;
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      listener.memberSuspect(getId(), whoSuspected(), reason);
-    }
-  }
-
-  private static class ViewInstalledEvent extends MemberEvent {
-    NetView view;
-
-    ViewInstalledEvent(NetView view) {
-      super(null);
-      this.view = view;
-    }
-
-    public long getViewId() {
-      return view.getViewId();
-    }
-
-    @Override
-    public String toString() {
-      return "view installed: " + this.view;
-    }
-
-    @Override
-    public void handleEvent(DistributionManager manager) {
-      manager.handleViewInstalledEvent(this);
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      throw new UnsupportedOperationException();
-    }
-  }
-
-  private static class QuorumLostEvent extends MemberEvent {
-    Set<InternalDistributedMember> failures;
-    List<InternalDistributedMember> remaining;
-
-    QuorumLostEvent(Set<InternalDistributedMember> failures,
-        List<InternalDistributedMember> remaining) {
-      super(null);
-      this.failures = failures;
-      this.remaining = remaining;
-    }
-
-    public Set<InternalDistributedMember> getFailures() {
-      return this.failures;
-    }
-
-    public List<InternalDistributedMember> getRemaining() {
-      return this.remaining;
-    }
-
-    @Override
-    public String toString() {
-      return "quorum lost.  failures=" + failures + "; remaining=" + remaining;
-    }
-
-    @Override
-    protected void handleEvent(MembershipListener listener) {
-      listener.quorumLost(getFailures(), getRemaining());
-    }
-  }
-
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.geode.distributed.internal.DM#getRootCause()
-   */
-  @Override
-  public Throwable getRootCause() {
-    return this.rootCause;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.geode.distributed.internal.DM#setRootCause(java.lang.Throwable)
-   */
-  @Override
-  public void setRootCause(Throwable t) {
-    this.rootCause = t;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.geode.distributed.internal.DM#getMembersOnThisHost()
-   *
-   * @since GemFire 5.9
-   */
-  @Override
-  public Set<InternalDistributedMember> getMembersInThisZone() {
-    return getMembersInSameZone(getDistributionManagerId());
-  }
-
-  @Override
-  public Set<InternalDistributedMember> getMembersInSameZone(
-      InternalDistributedMember targetMember) {
-    Set<InternalDistributedMember> buddyMembers = new HashSet<InternalDistributedMember>();
-    if (!redundancyZones.isEmpty()) {
-      synchronized (redundancyZones) {
-        String targetZone = redundancyZones.get(targetMember);
-        for (Map.Entry<InternalDistributedMember, String> entry : redundancyZones.entrySet()) {
-          if (entry.getValue().equals(targetZone)) {
-            buddyMembers.add(entry.getKey());
-          }
-        }
-      }
-    } else {
-      buddyMembers.add(targetMember);
-      Set targetAddrs = getEquivalents(targetMember.getInetAddress());
-      for (Iterator i = getDistributionManagerIds().iterator(); i.hasNext();) {
-        InternalDistributedMember o = (InternalDistributedMember) i.next();
-        if (SetUtils.intersectsWith(targetAddrs, getEquivalents(o.getInetAddress()))) {
-          buddyMembers.add(o);
-        }
-      }
-    }
-    return buddyMembers;
-  }
-
-  @Override
-  public boolean areInSameZone(InternalDistributedMember member1,
-      InternalDistributedMember member2) {
-
-    if (!redundancyZones.isEmpty()) {
-      String zone1 = redundancyZones.get(member1);
-      String zone2 = redundancyZones.get(member2);
-      return zone1 != null && zone1.equals(zone2);
-    } else {
-      return areOnEquivalentHost(member1, member2);
-    }
-  }
-
-  @Override
-  public void acquireGIIPermitUninterruptibly() {
-    this.parallelGIIs.acquireUninterruptibly();
-    this.stats.incInitialImageRequestsInProgress(1);
-  }
-
-  @Override
-  public void releaseGIIPermit() {
-    this.stats.incInitialImageRequestsInProgress(-1);
-    this.parallelGIIs.release();
-  }
-
-  public void setDistributedSystemId(int distributedSystemId) {
-    if (distributedSystemId != -1) {
-      this.distributedSystemId = distributedSystemId;
-    }
-  }
-
-  @Override
-  public int getDistributedSystemId() {
-    return this.distributedSystemId;
-  }
-
-  /**
-   * this causes the given InternalDistributedMembers to log thread dumps. If useNative is true we
-   * attempt to use OSProcess native code for the dumps. This goes to stdout instead of the
-   * system.log files.
-   */
-  public void printStacks(Collection ids, boolean useNative) {
-    Set requiresMessage = new HashSet();
-    if (ids.contains(localAddress)) {
-      OSProcess.printStacks(0, useNative);
-    }
-    if (useNative) {
-      requiresMessage.addAll(ids);
-      ids.remove(localAddress);
-    } else {
-      for (Iterator it = ids.iterator(); it.hasNext();) {
-        InternalDistributedMember mbr = (InternalDistributedMember) it.next();
-        if (mbr.getProcessId() > 0
-            && mbr.getInetAddress().equals(this.localAddress.getInetAddress())) {
-          if (!mbr.equals(localAddress)) {
-            if (!OSProcess.printStacks(mbr.getProcessId(), false)) {
-              requiresMessage.add(mbr);
-            }
-          }
-        } else {
-          requiresMessage.add(mbr);
-        }
-      }
-    }
-    if (requiresMessage.size() > 0) {
-      HighPriorityAckedMessage msg = new HighPriorityAckedMessage();
-      msg.dumpStacks(requiresMessage, useNative, false);
-    }
-  }
-
-  @Override
-  public Set<DistributedMember> getGroupMembers(String group) {
-    HashSet<DistributedMember> result = null;
-    for (DistributedMember m : (Set<DistributedMember>) getDistributionManagerIdsIncludingAdmin()) {
-      if (m.getGroups().contains(group)) {
-        if (result == null) {
-          result = new HashSet<DistributedMember>();
-        }
-        result.add(m);
-      }
-    }
-    if (result == null) {
-      return Collections.emptySet();
-    } else {
-      return result;
-    }
-  }
-
-  @Override
-  public Set getNormalDistributionManagerIds() {
-    // access to members synchronized under membersLock in order to
-    // ensure serialization
-    synchronized (this.membersLock) {
-      HashSet<InternalDistributedMember> result = new HashSet<InternalDistributedMember>();
-      for (InternalDistributedMember m : this.members.keySet()) {
-        if (m.getVmKind() != DistributionManager.LOCATOR_DM_TYPE) {
-          result.add(m);
-        }
-      }
-      return result;
-    }
-  }
-
-  /** test method to get the member IDs of all locators in the distributed system */
-  public Set<InternalDistributedMember> getLocatorDistributionManagerIds() {
-    // access to members synchronized under membersLock in order to
-    // ensure serialization
-    synchronized (this.membersLock) {
-      HashSet<InternalDistributedMember> result = new HashSet<InternalDistributedMember>();
-      for (InternalDistributedMember m : this.members.keySet()) {
-        if (m.getVmKind() == DistributionManager.LOCATOR_DM_TYPE) {
-          result.add(m);
-        }
-      }
-      return result;
-    }
-  }
-
-  @Override
-  public void setCache(InternalCache instance) {
-    this.cache = instance;
-  }
-
-  @Override
-  public InternalCache getCache() {
-    return this.cache;
-  }
-
-  @Override
-  public InternalCache getExistingCache() {
-    InternalCache result = this.cache;
-    if (result == null) {
-      throw new CacheClosedException(
-          LocalizedStrings.CacheFactory_A_CACHE_HAS_NOT_YET_BEEN_CREATED.toLocalizedString());
-    }
-    result.getCancelCriterion().checkCancelInProgress(null);
-    if (result.isClosed()) {
-      throw result.getCacheClosedException(
-          LocalizedStrings.CacheFactory_THE_CACHE_HAS_BEEN_CLOSED.toLocalizedString(), null);
-    }
-    return result;
-  }
-
-
-  private static class Stopper extends CancelCriterion {
-    private DistributionManager dm;
-
-    Stopper(DistributionManager dm) {
-      this.dm = dm;
-    }
-
-    @Override
-    public String cancelInProgress() {
-      checkFailure();
-
-      // remove call to validateDM() to fix bug 38356
-
-      if (dm.shutdownMsgSent) {
-        return LocalizedStrings.DistributionManager__0_MESSAGE_DISTRIBUTION_HAS_TERMINATED
-            .toLocalizedString(dm.toString());
-      }
-      if (dm.rootCause != null) {
-        return dm.toString() + ": " + dm.rootCause.getMessage();
-      }
-
-      // Nope.
-      return null;
-    }
-
-    @Override
-    public RuntimeException generateCancelledException(Throwable e) {
-      String reason = cancelInProgress();
-      if (reason == null) {
-        return null;
-      }
-      Throwable rc = dm.rootCause; // volatile read
-      if (rc == null) {
-        // No root cause, specify the one given and be done with it.
-        return new DistributedSystemDisconnectedException(reason, e);
-      }
-
-      if (e == null) {
-        // Caller did not specify any root cause, so just use our own.
-        return new DistributedSystemDisconnectedException(reason, rc);
-      }
-
-      // Attempt to stick rootCause at tail end of the exception chain.
-      Throwable nt = e;
-      while (nt.getCause() != null) {
-        nt = nt.getCause();
-      }
-      if (nt == rc) {
-        // Root cause already in place; we're done
-        return new DistributedSystemDisconnectedException(reason, e);
-      }
+  InternalCache getExistingCache();
 
-      try {
-        nt.initCause(rc);
-        return new DistributedSystemDisconnectedException(reason, e);
-      } catch (IllegalStateException e2) {
-        // Bug 39496 (Jrockit related) Give up. The following
-        // error is not entirely sane but gives the correct general picture.
-        return new DistributedSystemDisconnectedException(reason, rc);
-      }
-    }
-  }
+  void setCache(InternalCache instance);
 
-  private final Stopper stopper = new Stopper(this);
+  HealthMonitor getHealthMonitor(InternalDistributedMember owner);
 
-  @Override
-  public CancelCriterion getCancelCriterion() {
-    return stopper;
-  }
+  void removeHealthMonitor(InternalDistributedMember owner, int theId);
 
+  void createHealthMonitor(InternalDistributedMember owner, GemFireHealthConfig cfg);
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
index 134488b..0c47b88 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
@@ -168,7 +168,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
     this.acker = acker;
   }
 
-  public ReplySender getReplySender(DM dm) {
+  public ReplySender getReplySender(DistributionManager dm) {
     if (acker != null) {
       return acker;
     } else {
@@ -189,12 +189,12 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   public boolean orderedDelivery() {
     final int processorType = getProcessorType();
     switch (processorType) {
-      case DistributionManager.SERIAL_EXECUTOR:
+      case ClusterDistributionManager.SERIAL_EXECUTOR:
         // no need to use orderedDelivery for PR ops particularly when thread
         // does not own resources
         // case DistributionManager.PARTITIONED_REGION_EXECUTOR:
         return true;
-      case DistributionManager.REGION_FUNCTION_EXECUTION_EXECUTOR:
+      case ClusterDistributionManager.REGION_FUNCTION_EXECUTION_EXECUTOR:
         // allow nested distributed functions to be executed from within the
         // execution of a function
         return false;
@@ -331,7 +331,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   /**
    * Return the Executor in which to process this message.
    */
-  protected Executor getExecutor(DistributionManager dm) {
+  protected Executor getExecutor(ClusterDistributionManager dm) {
     return dm.getExecutor(getProcessorType(), sender);
   }
 
@@ -346,12 +346,12 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
    *
    * @param dm the distribution manager that is processing the message.
    */
-  protected abstract void process(DistributionManager dm);
+  protected abstract void process(ClusterDistributionManager dm);
 
   /**
    * Scheduled action to take when on this message when we are ready to process it.
    */
-  protected void scheduleAction(final DistributionManager dm) {
+  protected void scheduleAction(final ClusterDistributionManager dm) {
     if (logger.isTraceEnabled(LogMarker.DM)) {
       logger.trace(LogMarker.DM, "Processing '{}'", this);
     }
@@ -417,9 +417,9 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   /**
    * Schedule this message's process() method in a thread determined by getExecutor()
    */
-  protected void schedule(final DistributionManager dm) {
+  protected void schedule(final ClusterDistributionManager dm) {
     boolean inlineProcess = INLINE_PROCESS
-        && getProcessorType() == DistributionManager.SERIAL_EXECUTOR && !isPreciousThread();
+        && getProcessorType() == ClusterDistributionManager.SERIAL_EXECUTOR && !isPreciousThread();
 
     boolean forceInline = this.acker != null || getInlineProcess() || Connection.isDominoThread();
 
@@ -481,7 +481,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
     } // not inline
   }
 
-  protected boolean mayAddToMultipleSerialGateways(DistributionManager dm) {
+  protected boolean mayAddToMultipleSerialGateways(ClusterDistributionManager dm) {
     // subclasses should override this method if processing
     // them may add to multiple serial gateways.
     return false;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessageObserver.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessageObserver.java
index 72e4811..0261887 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessageObserver.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessageObserver.java
@@ -42,7 +42,7 @@ public abstract class DistributionMessageObserver {
    * @param dm the distribution manager that received the message
    * @param message The message itself
    */
-  public void beforeProcessMessage(DistributionManager dm, DistributionMessage message) {
+  public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
     // override as needed
   }
 
@@ -52,7 +52,7 @@ public abstract class DistributionMessageObserver {
    * @param dm the distribution manager that received the message
    * @param message The message itself
    */
-  public void afterProcessMessage(DistributionManager dm, DistributionMessage message) {
+  public void afterProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
     // override as needed
   }
 
@@ -62,7 +62,7 @@ public abstract class DistributionMessageObserver {
    * @param dm the distribution manager that's sending the message
    * @param message the message itself
    */
-  public void beforeSendMessage(DistributionManager dm, DistributionMessage message) {
+  public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
     // override as needed
   }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
index 2d1793b..3ce6834 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/HealthMonitorImpl.java
@@ -37,7 +37,7 @@ public class HealthMonitorImpl implements HealthMonitor, Runnable {
 
   private final InternalDistributedMember owner;
   private final int id;
-  private final DistributionManager dm;
+  private final ClusterDistributionManager dm;
   private final GemFireHealthEvaluator eval;
 
   /**
@@ -56,7 +56,7 @@ public class HealthMonitorImpl implements HealthMonitor, Runnable {
    * Creates a health monitor given its owner, configuration, and its dm
    */
   public HealthMonitorImpl(InternalDistributedMember owner, GemFireHealthConfig config,
-      DistributionManager dm) {
+      ClusterDistributionManager dm) {
     this.owner = owner;
     this.id = getNewId();
     this.dm = dm;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityAckedMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityAckedMessage.java
index 39879a8..19494b7 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityAckedMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityAckedMessage.java
@@ -57,7 +57,7 @@ public class HighPriorityAckedMessage extends HighPriorityDistributionMessage
     DRAIN_POOL, DUMP_STACK
   };
 
-  transient DistributionManager originDm;
+  transient ClusterDistributionManager originDm;
   private transient ReplyProcessor21 rp;
   private boolean useNative;
 
@@ -65,7 +65,7 @@ public class HighPriorityAckedMessage extends HighPriorityDistributionMessage
     super();
     InternalDistributedSystem ds = InternalDistributedSystem.getAnyInstance();
     if (ds != null) {
-      this.originDm = (DistributionManager) ds.getDistributionManager();
+      this.originDm = (ClusterDistributionManager) ds.getDistributionManager();
     }
     if (this.originDm != null) {
       this.id = this.originDm.getDistributionManagerId();
@@ -156,7 +156,7 @@ public class HighPriorityAckedMessage extends HighPriorityDistributionMessage
    * This method is invoked on the receiver side
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     switch (this.op) {
       case DRAIN_POOL:
         Assert.assertTrue(this.id != null);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityDistributionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityDistributionMessage.java
index d83eaf1..8aebe90 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityDistributionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/HighPriorityDistributionMessage.java
@@ -22,7 +22,7 @@ public abstract class HighPriorityDistributionMessage extends DistributionMessag
 
   @Override
   public int getProcessorType() {
-    return DistributionManager.HIGH_PRIORITY_EXECUTOR;
+    return ClusterDistributionManager.HIGH_PRIORITY_EXECUTOR;
   }
 
 }
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 a8b3eb6..d65f9ff 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
@@ -156,7 +156,7 @@ public class InternalDistributedSystem extends DistributedSystem
   /**
    * The distribution manager that is used to communicate with the distributed system.
    */
-  protected DM dm;
+  protected DistributionManager dm;
 
   private final GrantorRequestProcessor.GrantorRequestContext grc;
 
@@ -349,7 +349,8 @@ public class InternalDistributedSystem extends DistributedSystem
    *
    * @param nonDefault - non-default distributed system properties
    */
-  public static InternalDistributedSystem newInstanceForTesting(DM dm, Properties nonDefault) {
+  public static InternalDistributedSystem newInstanceForTesting(DistributionManager dm,
+      Properties nonDefault) {
     InternalDistributedSystem sys = new InternalDistributedSystem(nonDefault);
     sys.config = new RuntimeDistributionConfigImpl(sys);
     sys.dm = dm;
@@ -737,7 +738,7 @@ public class InternalDistributedSystem extends DistributedSystem
           if (this.quorumChecker != null) {
             this.quorumChecker.suspend();
           }
-          this.dm = DistributionManager.create(this);
+          this.dm = ClusterDistributionManager.create(this);
           // fix bug #46324
           if (InternalLocator.hasLocator()) {
             InternalLocator locator = InternalLocator.getLocator();
@@ -885,7 +886,7 @@ public class InternalDistributedSystem extends DistributedSystem
   /**
    * Used by DistributionManager to fix bug 33362
    */
-  void setDM(DM dm) {
+  void setDM(DistributionManager dm) {
     this.dm = dm;
   }
 
@@ -1487,7 +1488,7 @@ public class InternalDistributedSystem extends DistributedSystem
   /**
    * Returns the distribution manager for accessing this distributed system.
    */
-  public DM getDistributionManager() {
+  public DistributionManager getDistributionManager() {
     checkConnected();
     return this.dm;
   }
@@ -1495,7 +1496,7 @@ public class InternalDistributedSystem extends DistributedSystem
   /**
    * Returns the distribution manager without checking for connected or not so can also return null.
    */
-  public DM getDM() {
+  public DistributionManager getDM() {
     return this.dm;
   }
 
@@ -2762,11 +2763,11 @@ public class InternalDistributedSystem extends DistributedSystem
         }
 
 
-        DM newDM = this.reconnectDS.getDistributionManager();
-        if (newDM instanceof DistributionManager) {
+        DistributionManager newDM = this.reconnectDS.getDistributionManager();
+        if (newDM instanceof ClusterDistributionManager) {
           // Admin systems don't carry a cache, but for others we can now create
           // a cache
-          if (newDM.getDMType() != DistributionManager.ADMIN_ONLY_DM_TYPE) {
+          if (newDM.getDMType() != ClusterDistributionManager.ADMIN_ONLY_DM_TYPE) {
             try {
               CacheConfig config = new CacheConfig();
               if (cacheXML != null) {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
index 70fe1c9..8608b5c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
@@ -361,12 +361,12 @@ public class InternalLocator extends Locator implements ConnectListener {
     if (ids == null) {
       return false;
     }
-    DM dm = ids.getDistributionManager();
+    DistributionManager dm = ids.getDistributionManager();
     if (dm.isLoner()) {
       return false;
     }
-    DistributionManager distMgr = (DistributionManager) ids.getDistributionManager();
-    return distMgr.getDMType() == DistributionManager.LOCATOR_DM_TYPE;
+    ClusterDistributionManager distMgr = (ClusterDistributionManager) ids.getDistributionManager();
+    return distMgr.getDMType() == ClusterDistributionManager.LOCATOR_DM_TYPE;
   }
 
   /**
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
index 9dc1ceb..b0d04ec 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
@@ -45,7 +45,7 @@ import org.apache.geode.internal.net.SocketCreator;
  *
  * @since GemFire 3.5
  */
-public class LonerDistributionManager implements DM {
+public class LonerDistributionManager implements DistributionManager {
   private final InternalDistributedSystem system;
   private final InternalLogWriter logger;
   private ElderState elderState;
@@ -1200,7 +1200,7 @@ public class LonerDistributionManager implements DM {
             config.getDurableClientTimeout());
       }
       result = new InternalDistributedMember(host, lonerPort, name, uniqueString,
-          DistributionManager.LONER_DM_TYPE,
+          ClusterDistributionManager.LONER_DM_TYPE,
           MemberAttributes.parseGroups(config.getRoles(), config.getGroups()), dac);
 
     } catch (UnknownHostException ex) {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/MembershipListener.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/MembershipListener.java
index 71e7f5c..6e9df18 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/MembershipListener.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/MembershipListener.java
@@ -26,7 +26,7 @@ import org.apache.geode.distributed.internal.membership.*;
  * but the callback methods are always invoked in the GemFire manager VM. Thus, the callback methods
  * should not perform time-consuming operations.
  *
- * @see DistributionManager#addMembershipListener
+ * @see ClusterDistributionManager#addMembershipListener
  */
 public interface MembershipListener {
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/PooledDistributionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/PooledDistributionMessage.java
index 61939ae..beafa32 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/PooledDistributionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/PooledDistributionMessage.java
@@ -24,7 +24,7 @@ public abstract class PooledDistributionMessage extends DistributionMessage {
 
   @Override
   public int getProcessorType() {
-    return DistributionManager.STANDARD_EXECUTOR;
+    return ClusterDistributionManager.STANDARD_EXECUTOR;
   }
 
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
index 8ef6fc5..1e99b86 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
@@ -63,7 +63,7 @@ public class ProductUseLog implements MembershipListener {
    */
   public void monitorUse(InternalDistributedSystem system) {
     this.system = system;
-    DM dmgr = system.getDistributionManager();
+    DistributionManager dmgr = system.getDistributionManager();
     dmgr.addMembershipListener(this);
     MembershipManager mmgr = dmgr.getMembershipManager();
     if (mmgr != null) {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReliableReplyProcessor21.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReliableReplyProcessor21.java
index 545d4ac..431e635 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReliableReplyProcessor21.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReliableReplyProcessor21.java
@@ -36,11 +36,11 @@ public class ReliableReplyProcessor21 extends ReplyProcessor21 {
     super(system, member);
   }
 
-  public ReliableReplyProcessor21(DM dm, InternalDistributedMember member) {
+  public ReliableReplyProcessor21(DistributionManager dm, InternalDistributedMember member) {
     super(dm, member);
   }
 
-  public ReliableReplyProcessor21(DM dm, Collection initMembers) {
+  public ReliableReplyProcessor21(DistributionManager dm, Collection initMembers) {
     super(dm, initMembers);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyMessage.java
index d53939b..e2c22a3 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyMessage.java
@@ -182,11 +182,11 @@ public class ReplyMessage extends HighPriorityDistributionMessage {
    * @param dm the distribution manager that is processing the message.
    */
   @Override
-  protected void process(final DistributionManager dm) {
+  protected void process(final ClusterDistributionManager dm) {
     dmProcess(dm);
   }
 
-  public void dmProcess(final DM dm) {
+  public void dmProcess(final DistributionManager dm) {
     final long startTime = getTimestamp();
     ReplyProcessor21 processor = ReplyProcessor21.getProcessor(processorId);
     try {
@@ -207,7 +207,7 @@ public class ReplyMessage extends HighPriorityDistributionMessage {
    * @param dm
    * @param processor
    */
-  public void process(final DM dm, ReplyProcessor21 processor) {
+  public void process(final DistributionManager dm, ReplyProcessor21 processor) {
     if (processor == null)
       return;
     processor.process(ReplyMessage.this);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyProcessor21.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyProcessor21.java
index 84a0b08..4111c0b 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyProcessor21.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyProcessor21.java
@@ -137,7 +137,7 @@ public class ReplyProcessor21 implements MembershipListener {
   protected final InternalDistributedSystem system;
 
   /** the distribution manager - if null, get the manager from the system */
-  protected final DM dmgr;
+  protected final DistributionManager dmgr;
 
   /** Start time for replyWait stat, in nanos */
   long statStart;
@@ -232,26 +232,28 @@ public class ReplyProcessor21 implements MembershipListener {
    * @param dm the DistributionManager to use for messaging and membership
    * @param member the member this processor wants a reply from
    */
-  public ReplyProcessor21(DM dm, InternalDistributedMember member) {
+  public ReplyProcessor21(DistributionManager dm, InternalDistributedMember member) {
     this(dm, Collections.singleton(member));
   }
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param dm the DistributionManager to use for messaging and membership
    * @param initMembers the Set of members this processor wants replies from
    */
-  public ReplyProcessor21(DM dm, Collection initMembers) {
+  public ReplyProcessor21(DistributionManager dm, Collection initMembers) {
     this(dm, dm.getSystem(), initMembers, null);
   }
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param system the DistributedSystem connection
    * @param initMembers the Set of members this processor wants replies from
@@ -262,8 +264,9 @@ public class ReplyProcessor21 implements MembershipListener {
 
   /**
    * Creates a new <code>ReplyProcessor</code> that wants replies from some number of members of a
-   * distributed system. Call this method with {@link DistributionManager#getDistributionManagerIds}
-   * if you want replies from all DMs including the one hosted in this VM.
+   * distributed system. Call this method with
+   * {@link ClusterDistributionManager#getDistributionManagerIds} if you want replies from all DMs
+   * including the one hosted in this VM.
    *
    * @param system the DistributedSystem connection
    * @param initMembers the Set of members this processor wants replies from
@@ -283,8 +286,8 @@ public class ReplyProcessor21 implements MembershipListener {
    * @param initMembers the collection of members this processor wants replies from
    * @param cancelCriterion optional CancelCriterion to use; will use the dm if null
    */
-  private ReplyProcessor21(DM dm, InternalDistributedSystem system, Collection initMembers,
-      CancelCriterion cancelCriterion) {
+  private ReplyProcessor21(DistributionManager dm, InternalDistributedSystem system,
+      Collection initMembers, CancelCriterion cancelCriterion) {
 
     this(dm, system, initMembers, cancelCriterion, true);
   }
@@ -297,8 +300,8 @@ public class ReplyProcessor21 implements MembershipListener {
    * @param initMembers the collection of members this processor wants replies from
    * @param cancelCriterion optional CancelCriterion to use; will use the dm if null
    */
-  protected ReplyProcessor21(DM dm, InternalDistributedSystem system, Collection initMembers,
-      CancelCriterion cancelCriterion, boolean register) {
+  protected ReplyProcessor21(DistributionManager dm, InternalDistributedSystem system,
+      Collection initMembers, CancelCriterion cancelCriterion, boolean register) {
     if (!allowReplyFromSender()) {
       Assert.assertTrue(initMembers != null, "null initMembers");
       Assert.assertTrue(system != null, "null system");
@@ -343,9 +346,9 @@ public class ReplyProcessor21 implements MembershipListener {
    * manager, it is used. Otherwise, we expect a distribution manager has been set with
    * setDistributionManager and we'll use that
    */
-  protected DM getDistributionManager() {
+  protected DistributionManager getDistributionManager() {
     try {
-      DM result = this.system.getDistributionManager();
+      DistributionManager result = this.system.getDistributionManager();
       if (result == null) {
         result = this.dmgr;
         Assert.assertTrue(result != null, "null DistributionManager");
@@ -409,7 +412,7 @@ public class ReplyProcessor21 implements MembershipListener {
     final InternalDistributedMember sender = msg.getSender();
     if (!removeMember(sender, false) && warn) {
       // if the member hasn't left the system, something is wrong
-      final DM dm = getDistributionManager(); // fix for bug 33253
+      final DistributionManager dm = getDistributionManager(); // fix for bug 33253
       Set ids = getDistributionManagerIds();
       if (ids == null || ids.contains(sender)) {
         List viewMembers = dm.getViewMembers();
@@ -550,7 +553,7 @@ public class ReplyProcessor21 implements MembershipListener {
 
   protected void preWait() {
     waiting = true;
-    DM mgr = getDistributionManager();
+    DistributionManager mgr = getDistributionManager();
     statStart = mgr.getStats().startReplyWait();
     synchronized (this.members) {
       Set activeMembers = addListenerAndGetMembers();
@@ -576,7 +579,7 @@ public class ReplyProcessor21 implements MembershipListener {
   private void postWait() {
     waiting = false;
     removeListener();
-    final DM mgr = getDistributionManager();
+    final DistributionManager mgr = getDistributionManager();
     mgr.getStats().endReplyWait(this.statStart, this.initTime);
     mgr.getCancelCriterion().checkCancelInProgress(null);
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplySender.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplySender.java
index 513cab7..74070fc 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplySender.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplySender.java
@@ -16,13 +16,13 @@ package org.apache.geode.distributed.internal;
 
 import java.util.Set;
 
-import org.apache.geode.i18n.LogWriterI18n;
 import org.apache.geode.internal.cache.DirectReplyMessage;
 
 /**
  * This interface is used by direct ack messages to send a reply to the original sender of the
  * message. Any message which implements {@link DirectReplyMessage} must reply by calling
- * putOutgoing on the ReplySender returned by {@link DistributionMessage#getReplySender(DM)}
+ * putOutgoing on the ReplySender returned by
+ * {@link DistributionMessage#getReplySender(DistributionManager)}
  *
  * The reply sender may be the distribution manager itself, or it may send the reply directly back
  * on the same socket the message as received on.
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialAckedMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialAckedMessage.java
index c11d434..7755dab 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialAckedMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialAckedMessage.java
@@ -41,14 +41,14 @@ public class SerialAckedMessage extends SerialDistributionMessage implements Mes
   private InternalDistributedMember id;
   private int processorId;
 
-  transient DistributionManager originDm;
+  transient ClusterDistributionManager originDm;
   private transient ReplyProcessor21 rp;
 
   public SerialAckedMessage() {
     super();
     InternalDistributedSystem ds = InternalDistributedSystem.getAnyInstance();
     if (ds != null) { // this constructor is used in serialization as well as when sending to others
-      this.originDm = (DistributionManager) ds.getDistributionManager();
+      this.originDm = (ClusterDistributionManager) ds.getDistributionManager();
       this.id = this.originDm.getDistributionManagerId();
     }
   }
@@ -119,7 +119,7 @@ public class SerialAckedMessage extends SerialDistributionMessage implements Mes
    * This method is invoked on the receiver side
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     Assert.assertTrue(this.id != null);
     ReplyMessage reply = new ReplyMessage();
     reply.setProcessorId(processorId);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialDistributionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialDistributionMessage.java
index b9bf3f9..f745ea5 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialDistributionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/SerialDistributionMessage.java
@@ -24,7 +24,7 @@ public abstract class SerialDistributionMessage extends DistributionMessage {
   // not "final" because it's overridden in ViewMessage
   @Override
   public int getProcessorType() {
-    return DistributionManager.SERIAL_EXECUTOR;
+    return ClusterDistributionManager.SERIAL_EXECUTOR;
   }
 
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ServerLocator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ServerLocator.java
index 2c92610..a21bb3b 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ServerLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ServerLocator.java
@@ -292,7 +292,7 @@ public class ServerLocator implements TcpHandler, DistributionAdvisee {
   }
 
   // DistributionAdvisee methods
-  public DM getDistributionManager() {
+  public DistributionManager getDistributionManager() {
     return getSystem().getDistributionManager();
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ShutdownMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ShutdownMessage.java
index ed3eb1e..4c6b546 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ShutdownMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ShutdownMessage.java
@@ -66,7 +66,7 @@ public class ShutdownMessage extends HighPriorityDistributionMessage
    * This method is invoked on the receiver side
    */
   @Override
-  protected void process(final DistributionManager dm) {
+  protected void process(final ClusterDistributionManager dm) {
     Assert.assertTrue(this.id != null);
     // The peer goes deaf after sending us this message, so do not
     // attempt a reply.
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessage.java
index df7b5ba..7651ee0 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessage.java
@@ -63,7 +63,7 @@ public class StartupMessage extends HighPriorityDistributionMessage implements A
    * @return list of addresses for this host
    * @since GemFire 5.7
    */
-  public static Set getMyAddresses(DistributionManager dm) {
+  public static Set getMyAddresses(ClusterDistributionManager dm) {
     try {
       Set addresses = SocketCreator.getMyAddresses();
       return addresses;
@@ -176,10 +176,11 @@ public class StartupMessage extends HighPriorityDistributionMessage implements A
    * This method is invoked on the receiver side
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     String rejectionMessage = null;
-    final boolean isAdminDM = dm.getId().getVmKind() == DistributionManager.ADMIN_ONLY_DM_TYPE
-        || dm.getId().getVmKind() == DistributionManager.LOCATOR_DM_TYPE;
+    final boolean isAdminDM =
+        dm.getId().getVmKind() == ClusterDistributionManager.ADMIN_ONLY_DM_TYPE
+            || dm.getId().getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE;
 
     String myVersion = GemFireVersion.getGemFireVersion();
     String theirVersion = this.version;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessageReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessageReplyProcessor.java
index c0f4806..6f10b49 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessageReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupMessageReplyProcessor.java
@@ -28,9 +28,9 @@ public class StartupMessageReplyProcessor extends ReplyProcessor21 {
    * receive replies from admin dm but they do not have the authority to accept us into the group.
    */
   private boolean receivedAcceptance;
-  private DM dm;
+  private DistributionManager dm;
 
-  public StartupMessageReplyProcessor(DM dm, Set recipients) {
+  public StartupMessageReplyProcessor(DistributionManager dm, Set recipients) {
     super(dm, recipients);
     this.dm = dm;
   }
@@ -87,7 +87,7 @@ public class StartupMessageReplyProcessor extends ReplyProcessor21 {
   @Override
   protected void preWait() {
     this.waiting = true;
-    DM mgr = getDistributionManager();
+    DistributionManager mgr = getDistributionManager();
     this.statStart = mgr.getStats().startReplyWait();
     // Note we do not use addMembershipListenerAndGetDistributionManagerIds
     // because this is the startup message and we do not yet have any
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupOperation.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupOperation.java
index 6d8ebc9..71c3272 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupOperation.java
@@ -30,11 +30,11 @@ import org.apache.geode.internal.logging.log4j.LocalizedMessage;
 public class StartupOperation {
   private static final Logger logger = LogService.getLogger();
 
-  DistributionManager dm;
+  ClusterDistributionManager dm;
   RemoteTransportConfig transport;
   Set newlyDeparted;
 
-  StartupOperation(DistributionManager dm, RemoteTransportConfig transport) {
+  StartupOperation(ClusterDistributionManager dm, RemoteTransportConfig transport) {
     this.dm = dm;
     this.transport = transport;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseMessage.java
index 45ed83c..06b835b 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseMessage.java
@@ -61,7 +61,7 @@ public class StartupResponseMessage extends HighPriorityDistributionMessage
 
   }
 
-  StartupResponseMessage(DistributionManager dm, int processorId,
+  StartupResponseMessage(ClusterDistributionManager dm, int processorId,
       InternalDistributedMember recipient, String rejectionMessage, boolean responderIsAdmin) {
     // StartupResponseMessage m = new StartupResponseMessage();
 
@@ -131,7 +131,7 @@ public class StartupResponseMessage extends HighPriorityDistributionMessage
    * This method is invoked on the receiver side
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
 
     if (this.interfaces == null || this.interfaces.size() == 0) {
       // this.rejectionMessage = "Peer " + getSender() + " has no network interfaces";
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseWithVersionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseWithVersionMessage.java
index 5bcbb47..c9ff742 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseWithVersionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/StartupResponseWithVersionMessage.java
@@ -24,7 +24,6 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.GemFireVersion;
-import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.Version;
 import org.apache.geode.internal.logging.LogService;
 
@@ -44,7 +43,7 @@ public class StartupResponseWithVersionMessage extends StartupResponseMessage {
 
   }
 
-  StartupResponseWithVersionMessage(DistributionManager dm, int processorId,
+  StartupResponseWithVersionMessage(ClusterDistributionManager dm, int processorId,
       InternalDistributedMember recipient, String rejectionMessage, boolean responderIsAdmin) {
     super(dm, processorId, recipient, rejectionMessage, responderIsAdmin);
     version = GemFireVersion.getGemFireVersion();
@@ -56,7 +55,7 @@ public class StartupResponseWithVersionMessage extends StartupResponseMessage {
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     if (this.hostedLocators != null) {
       dm.addHostedLocators(getSender(), this.hostedLocators, this.isSharedConfigurationEnabled);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/WaitForViewInstallation.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/WaitForViewInstallation.java
index c010ce7..d1e2a5f 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/WaitForViewInstallation.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/WaitForViewInstallation.java
@@ -34,7 +34,7 @@ public class WaitForViewInstallation extends HighPriorityDistributionMessage
 
   private static final Logger logger = LogService.getLogger();
 
-  public static void send(DistributionManager dm) throws InterruptedException {
+  public static void send(ClusterDistributionManager dm) throws InterruptedException {
     long viewId = dm.getMembershipManager().getView().getViewId();
     ReplyProcessor21 rp = new ReplyProcessor21(dm, dm.getOtherDistributionManagerIds());
     rp.enableSevereAlertProcessing();
@@ -57,7 +57,7 @@ public class WaitForViewInstallation extends HighPriorityDistributionMessage
 
   @Override
   public int getProcessorType() {
-    return DistributionManager.WAITING_POOL_EXECUTOR;
+    return ClusterDistributionManager.WAITING_POOL_EXECUTOR;
   }
 
   @Override
@@ -112,7 +112,7 @@ public class WaitForViewInstallation extends HighPriorityDistributionMessage
    * internal.DistributionManager)
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     boolean interrupted = false;
     try {
       dm.waitForViewInstallation(this.viewId);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannel.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannel.java
index 527a611..7dd099b 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannel.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannel.java
@@ -210,7 +210,7 @@ public class DirectChannel {
    * Returns true if calling thread owns its own communication resources.
    */
   boolean threadOwnsResources() {
-    DM d = getDM();
+    DistributionManager d = getDM();
     if (d != null) {
       return d.getSystem().threadOwnsResources() && !AlertAppender.isThreadAlerting();
     }
@@ -613,7 +613,7 @@ public class DirectChannel {
    * Returns null if no stats available.
    */
   public DMStats getDMStats() {
-    DM dm = getDM();
+    DistributionManager dm = getDM();
     if (dm != null) {
       return dm.getStats(); // fix for bug#34004
     } else {
@@ -627,7 +627,7 @@ public class DirectChannel {
    * @since GemFire 4.2.2
    */
   public DistributionConfig getDMConfig() {
-    DM dm = getDM();
+    DistributionManager dm = getDM();
     if (dm != null) {
       return dm.getConfig();
     } else {
@@ -638,7 +638,7 @@ public class DirectChannel {
   /**
    * Returns null if no dm available.
    */
-  public DM getDM() {
+  public DistributionManager getDM() {
     return this.receiver.getDM();
   }
 
@@ -652,7 +652,7 @@ public class DirectChannel {
    */
   private void handleAckTimeout(long ackTimeout, long ackSATimeout, Connection c,
       DirectReplyProcessor processor) throws ConnectionException {
-    DM dm = getDM();
+    DistributionManager dm = getDM();
     Set activeMembers = dm.getDistributionManagerIds();
 
     // Increment the stat
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannelListener.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannelListener.java
index 24506fc..37fa2bf 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannelListener.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/direct/DirectChannelListener.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.distributed.internal.direct;
 
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 
 public interface DirectChannelListener {
@@ -32,6 +32,6 @@ public interface DirectChannelListener {
    *
    * @return the distribution manager
    */
-  public DistributionManager getDM();
+  public ClusterDistributionManager getDM();
 
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockGrantor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockGrantor.java
index 2907544..96f6e75 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockGrantor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockGrantor.java
@@ -26,8 +26,8 @@ import org.apache.geode.CancelException;
 import org.apache.geode.cache.CommitConflictException;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.MembershipListener;
 import org.apache.geode.distributed.internal.locks.DLockQueryProcessor.DLockQueryMessage;
 import org.apache.geode.distributed.internal.locks.DLockRequestProcessor.DLockRequestMessage;
@@ -161,7 +161,7 @@ public class DLockGrantor {
   /**
    * Used to verify that requestor member is still in view when granting.
    */
-  protected final DM dm;
+  protected final DistributionManager dm;
 
   // -------------------------------------------------------------------------
   // SuspendLocking state (BEGIN)
@@ -3373,7 +3373,7 @@ public class DLockGrantor {
     }
 
     private long now() {
-      DM dm = this.grantor.dlock.getDistributionManager();
+      DistributionManager dm = this.grantor.dlock.getDistributionManager();
       return DLockService.getLockTimeStamp(dm);
     }
 
@@ -3646,7 +3646,7 @@ public class DLockGrantor {
 
     public void memberDeparted(final InternalDistributedMember id, final boolean crashed) {
       final DLockGrantor me = DLockGrantor.this;
-      final DM distMgr = me.dlock.getDistributionManager();
+      final DistributionManager distMgr = me.dlock.getDistributionManager();
       // if the VM is being forcibly disconnected, we shouldn't release locks as it
       // will take longer than the time allowed by the InternalDistributedSystem
       // shutdown mechanism.
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockQueryProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockQueryProcessor.java
index ced1ea5..9fe4ef3 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockQueryProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockQueryProcessor.java
@@ -25,7 +25,7 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -59,7 +59,8 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
    * @return the query reply or null if there was no reply due to membership change
    */
   static DLockQueryReplyMessage query(final InternalDistributedMember grantor,
-      final String serviceName, final Object objectName, final boolean lockBatch, final DM dm) {
+      final String serviceName, final Object objectName, final boolean lockBatch,
+      final DistributionManager dm) {
     DLockQueryProcessor processor = new DLockQueryProcessor(dm, grantor, serviceName);
 
     DLockQueryMessage msg = new DLockQueryMessage();
@@ -98,7 +99,8 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
    * @param grantor the member to query for lock leasing info
    * @param serviceName the name of the lock service
    */
-  private DLockQueryProcessor(DM dm, InternalDistributedMember grantor, String serviceName) {
+  private DLockQueryProcessor(DistributionManager dm, InternalDistributedMember grantor,
+      String serviceName) {
     super(dm, grantor);
   }
 
@@ -152,7 +154,7 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
      * Processes this message - invoked on the node that is the lock grantor.
      */
     @Override
-    protected void process(final DistributionManager dm) {
+    protected void process(final ClusterDistributionManager dm) {
       boolean failed = true;
       ReplyException replyException = null;
       try {
@@ -197,7 +199,7 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
     }
 
     /** Process locally without using messaging or executor */
-    protected void processLocally(final DM dm) {
+    protected void processLocally(final DistributionManager dm) {
       this.svc = DLockService.getInternalServiceNamed(this.serviceName);
       basicProcess(dm, true); // don't use executor
     }
@@ -208,7 +210,7 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
      * <p>
      * this.svc and this.grantor must be set before calling this method.
      */
-    private void executeBasicProcess(final DM dm) {
+    private void executeBasicProcess(final DistributionManager dm) {
       final DLockQueryMessage msg = this;
       dm.getWaitingThreadPool().execute(new Runnable() {
         public void run() {
@@ -225,7 +227,7 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
      * <p>
      * this.svc and this.grantor must be set before calling this method.
      */
-    protected void basicProcess(final DM dm, final boolean waitForGrantor) {
+    protected void basicProcess(final DistributionManager dm, final boolean waitForGrantor) {
       final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS);
       if (isDebugEnabled_DLS) {
         logger.trace(LogMarker.DLS, "[basicProcess] {}", this);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor.java
index 1423bde..3b7e415 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor.java
@@ -25,7 +25,7 @@ import java.util.Set;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -52,7 +52,7 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
   protected static final DefaultMessageProcessor nullServiceProcessor =
       new DefaultMessageProcessor();
 
-  private DM dm;
+  private DistributionManager dm;
 
   private DLockGrantor newGrantor;
 
@@ -68,7 +68,7 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
    * This method should block until transfer of lock grantor has completed.
    */
   static boolean recoverLockGrantor(Set members, DLockService service, DLockGrantor newGrantor,
-      DM dm, InternalDistributedMember elder) {
+      DistributionManager dm, InternalDistributedMember elder) {
     // proc will wait for replies from everyone including THIS member...
     DLockRecoverGrantorProcessor processor =
         new DLockRecoverGrantorProcessor(dm, members, newGrantor);
@@ -112,7 +112,8 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
   // -------------------------------------------------------------------------
 
   /** Creates a new instance of DLockRecoverGrantorProcessor */
-  private DLockRecoverGrantorProcessor(DM dm, Set members, DLockGrantor newGrantor) {
+  private DLockRecoverGrantorProcessor(DistributionManager dm, Set members,
+      DLockGrantor newGrantor) {
     super(dm, members);
     this.dm = dm;
     this.newGrantor = newGrantor;
@@ -235,7 +236,7 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       processMessage(dm);
     }
 
@@ -245,15 +246,15 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
      *
      * @param dm the distribution manager
      */
-    protected void scheduleMessage(DM dm) {
-      if (dm instanceof DistributionManager) {
-        super.scheduleAction((DistributionManager) dm);
+    protected void scheduleMessage(DistributionManager dm) {
+      if (dm instanceof ClusterDistributionManager) {
+        super.scheduleAction((ClusterDistributionManager) dm);
       } else {
         processMessage(dm);
       }
     }
 
-    protected void processMessage(DM dm) {
+    protected void processMessage(DistributionManager dm) {
       MessageProcessor processor = nullServiceProcessor;
 
       DLockService svc = DLockService.getInternalServiceNamed(this.serviceName);
@@ -383,11 +384,11 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
   }
 
   public static interface MessageProcessor {
-    public void process(DM dm, DLockRecoverGrantorMessage msg);
+    public void process(DistributionManager dm, DLockRecoverGrantorMessage msg);
   }
 
   static class DefaultMessageProcessor implements MessageProcessor {
-    public void process(DM dm, DLockRecoverGrantorMessage msg) {
+    public void process(DistributionManager dm, DLockRecoverGrantorMessage msg) {
       ReplyException replyException = null;
       int replyCode = DLockRecoverGrantorReplyMessage.OK;
       DLockRemoteToken[] heldLocks = new DLockRemoteToken[0];
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockReleaseProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockReleaseProcessor.java
index b1045f1..14eb070 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockReleaseProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockReleaseProcessor.java
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
@@ -48,8 +48,8 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
 
   protected Object objectName;
 
-  public DLockReleaseProcessor(DM dm, InternalDistributedMember member, String serviceName,
-      Object objectName) {
+  public DLockReleaseProcessor(DistributionManager dm, InternalDistributedMember member,
+      String serviceName, Object objectName) {
     super(dm, member);
     this.objectName = objectName;
   }
@@ -61,7 +61,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
   protected boolean release(InternalDistributedMember grantor, String serviceName,
       boolean lockBatch, int lockId) {
 
-    DM dm = getDistributionManager();
+    DistributionManager dm = getDistributionManager();
     DLockReleaseMessage msg = new DLockReleaseMessage();
     msg.processorId = getProcessorId();
     msg.serviceName = serviceName;
@@ -164,7 +164,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
      * Processes this message - invoked on the node that is the lock grantor.
      */
     @Override
-    protected void process(final DistributionManager dm) {
+    protected void process(final ClusterDistributionManager dm) {
       boolean failed = true;
       ReplyException replyException = null;
       try {
@@ -212,7 +212,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
     }
 
     /** Process locally without using messaging or executor */
-    protected void processLocally(final DM dm) {
+    protected void processLocally(final DistributionManager dm) {
       this.svc = DLockService.getInternalServiceNamed(this.serviceName);
       basicProcess(dm, true); // don't use executor
     }
@@ -223,7 +223,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
      * <p>
      * this.svc and this.grantor must be set before calling this method.
      */
-    private void executeBasicProcess(final DM dm) {
+    private void executeBasicProcess(final DistributionManager dm) {
       final DLockReleaseMessage msg = this;
       dm.getWaitingThreadPool().execute(new Runnable() {
         public void run() {
@@ -240,7 +240,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
      * <p>
      * this.svc and this.grantor must be set before calling this method.
      */
-    protected void basicProcess(final DM dm, final boolean waitForGrantor) {
+    protected void basicProcess(final DistributionManager dm, final boolean waitForGrantor) {
       final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS);
       if (isDebugEnabled_DLS) {
         logger.trace(LogMarker.DLS, "[basicProcess] {}", this);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRequestProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRequestProcessor.java
index 3f42adb..9fd6c4b 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRequestProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockRequestProcessor.java
@@ -27,7 +27,7 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.InternalGemFireError;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
@@ -56,7 +56,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
 
   protected final DLockRequestMessage request;
 
-  private final DM dm;
+  private final DistributionManager dm;
 
   protected final DLockService svc;
 
@@ -89,28 +89,28 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
 
   protected DLockRequestProcessor(LockGrantorId lockGrantorId, DLockService svc, Object objectName,
       int threadId, long startTime, long leaseMillis, long waitMillis, boolean reentrant,
-      boolean tryLock, DM dm) {
+      boolean tryLock, DistributionManager dm) {
     this(lockGrantorId, svc, objectName, threadId, startTime, leaseMillis, waitMillis, reentrant,
         tryLock, false, dm, false);
   }
 
   protected DLockRequestProcessor(LockGrantorId lockGrantorId, DLockService svc, Object objectName,
       int threadId, long startTime, long leaseMillis, long waitMillis, boolean reentrant,
-      boolean tryLock, boolean disableAlerts, DM dm) {
+      boolean tryLock, boolean disableAlerts, DistributionManager dm) {
     this(lockGrantorId, svc, objectName, threadId, startTime, leaseMillis, waitMillis, reentrant,
         tryLock, disableAlerts, dm, false);
   }
 
   protected DLockRequestProcessor(LockGrantorId lockGrantorId, DLockService svc, Object objectName,
       int threadId, long startTime, long leaseMillis, long waitMillis, boolean reentrant,
-      boolean tryLock, DM dm, boolean async) {
+      boolean tryLock, DistributionManager dm, boolean async) {
     this(lockGrantorId, svc, objectName, threadId, startTime, leaseMillis, waitMillis, reentrant,
         tryLock, false, dm, false);
   }
 
   protected DLockRequestProcessor(LockGrantorId lockGrantorId, DLockService svc, Object objectName,
       int threadId, long startTime, long leaseMillis, long waitMillis, boolean reentrant,
-      boolean tryLock, boolean disableAlerts, DM dm, boolean async) {
+      boolean tryLock, boolean disableAlerts, DistributionManager dm, boolean async) {
     super(dm, lockGrantorId.getLockGrantorMember());
 
     this.svc = svc;
@@ -142,7 +142,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
     return new DLockRequestMessage();
   }
 
-  protected CancelCriterion getCancelCriterion(DM ignoreDM) {
+  protected CancelCriterion getCancelCriterion(DistributionManager ignoreDM) {
     return this.svc.getCancelCriterion();
   }
 
@@ -440,7 +440,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
     protected transient DLockService svc;
     protected transient DLockGrantor grantor;
     private transient long statStart = -1;
-    private transient volatile DM receivingDM;
+    private transient volatile DistributionManager receivingDM;
     private transient DLockResponseMessage response;
     private transient RemoteThread rThread;
 
@@ -533,7 +533,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
      * Processes this message - invoked on the node that is the lock grantor.
      */
     @Override
-    protected void process(final DistributionManager dm) {
+    protected void process(final ClusterDistributionManager dm) {
       boolean failed = false;
       Throwable replyException = null;
       try {
@@ -575,7 +575,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
     }
 
     /** Process locally without using messaging or executor */
-    protected void processLocally(final DM dm) {
+    protected void processLocally(final DistributionManager dm) {
       this.statStart = startGrantWait();
       this.svc = DLockService.getInternalServiceNamed(this.serviceName);
       basicProcess(dm, true); // don't use executor
@@ -587,7 +587,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
      * <p>
      * this.svc and this.grantor must be set before calling this method.
      */
-    private void executeBasicProcess(final DM dm) {
+    private void executeBasicProcess(final DistributionManager dm) {
       final DLockRequestMessage msg = this;
       dm.getWaitingThreadPool().execute(new Runnable() {
         public void run() {
@@ -599,7 +599,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
       });
     }
 
-    protected void basicProcess(final DM dm, final boolean waitForGrantor) {
+    protected void basicProcess(final DistributionManager dm, final boolean waitForGrantor) {
       final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS);
       try {
         this.receivingDM = dm;
@@ -1068,7 +1068,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
      * receiving a GRANT response which may already be in transit to this node.
      */
     @Override
-    public void process(final DM dm, final ReplyProcessor21 processor) {
+    public void process(final DistributionManager dm, final ReplyProcessor21 processor) {
       if (processor == null) {
         // The processor was probably cleaned up because of memberDeparted and we need to abandon
         return;
@@ -1099,7 +1099,8 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
       }
     }
 
-    protected boolean callReleaseProcessor(DM dm, InternalDistributedMember grantor) {
+    protected boolean callReleaseProcessor(DistributionManager dm,
+        InternalDistributedMember grantor) {
       return DLockService.callReleaseProcessor(dm, this.serviceName, grantor, this.objectName,
           false, this.lockId);
     }
@@ -1108,7 +1109,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
      * Releases a granted lock that was orphaned by interruption of the lock request. This also
      * releases any lock grant for which we cannot find an active reply processor.
      */
-    public void releaseOrphanedGrant(DM dm) {
+    public void releaseOrphanedGrant(DistributionManager dm) {
       InternalDistributedMember grantor = getSender();
       // method is rewritten to fix bug 35252
       boolean released = false;
@@ -1261,7 +1262,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
     }
   }
 
-  public static void waitToProcessDLockResponse(DM dm) {
+  public static void waitToProcessDLockResponse(DistributionManager dm) {
     synchronized (waitToProcessDLockResponseLock) {
       while (waitToProcessDLockResponse) {
         dm.getCancelCriterion().checkCancelInProgress(null);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java
index 4008d2e..4434044 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockService.java
@@ -44,8 +44,8 @@ import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.LeaseExpiredException;
 import org.apache.geode.distributed.LockNotHeldException;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ResourceEvent;
 import org.apache.geode.distributed.internal.deadlock.UnsafeThreadLocal;
@@ -91,7 +91,7 @@ public class DLockService extends DistributedLockService {
   protected final String serviceName;
 
   /** DistributionManager for this member */
-  private final DM dm;
+  private final DistributionManager dm;
 
   /**
    * DistributedSystem connection for this member (used for DisconnectListener, logging, etc)
@@ -1319,7 +1319,7 @@ public class DLockService extends DistributedLockService {
         lockId);
   }
 
-  protected static boolean callReleaseProcessor(DM dm, String serviceName,
+  protected static boolean callReleaseProcessor(DistributionManager dm, String serviceName,
       InternalDistributedMember grantor, Object name, boolean lockBatch, int lockId) {
     DLockReleaseProcessor processor = new DLockReleaseProcessor(dm, grantor, serviceName, name);
     return processor.release(grantor, serviceName, lockBatch, lockId);
@@ -2168,7 +2168,7 @@ public class DLockService extends DistributedLockService {
     return this.serviceName;
   }
 
-  public DM getDistributionManager() {
+  public DistributionManager getDistributionManager() {
     return this.dm;
   }
 
@@ -2852,7 +2852,7 @@ public class DLockService extends DistributedLockService {
    *
    * @param dm our local DM
    */
-  public static void recoverLocalElder(DM dm, Map grantors, Set needsRecovery) {
+  public static void recoverLocalElder(DistributionManager dm, Map grantors, Set needsRecovery) {
     synchronized (services) {
       Iterator entries = services.entrySet().iterator();
       while (entries.hasNext()) {
@@ -2952,7 +2952,7 @@ public class DLockService extends DistributedLockService {
    *
    * @since GemFire 3.5
    */
-  static long getLockTimeStamp(DM dm) {
+  static long getLockTimeStamp(DistributionManager dm) {
     return dm.cacheTimeMillis();
   }
 
@@ -3097,7 +3097,7 @@ public class DLockService extends DistributedLockService {
      * @param dm the DM to check for shutdown
      * @param dls the DLockService to check for DLS destroy
      */
-    DLockStopper(DM dm, DLockService dls) {
+    DLockStopper(DistributionManager dm, DLockService dls) {
       Assert.assertTrue(dls != null);
       this.dls = dls;
       Assert.assertTrue(dls.getDistributionManager() != null);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockToken.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockToken.java
index 9d36d74..1a1a68d 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockToken.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockToken.java
@@ -20,7 +20,7 @@ import java.util.WeakHashMap;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.distributed.LeaseExpiredException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
@@ -46,9 +46,9 @@ public class DLockToken {
 
   /**
    * DistributionManager using this lock token. Reference is used to identify local member identity
-   * and to {@link DLockService#getLockTimeStamp(DM)}.
+   * and to {@link DLockService#getLockTimeStamp(DistributionManager)}.
    */
-  private final DM dm;
+  private final DistributionManager dm;
 
   /**
    * The reply processor id is used to identify the distinct lease which a thread has used to lease
@@ -112,7 +112,7 @@ public class DLockToken {
    * @param dm the DistributionManager for this member
    * @param name the identifying name of this lock
    */
-  public DLockToken(DM dm, Object name) {
+  public DLockToken(DistributionManager dm, Object name) {
     this.dm = dm;
     this.name = name;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DeposeGrantorProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DeposeGrantorProcessor.java
index 92c36ea..17afdd9 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DeposeGrantorProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DeposeGrantorProcessor.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
@@ -52,7 +52,7 @@ public class DeposeGrantorProcessor extends ReplyProcessor21 {
    */
   static void send(String serviceName, InternalDistributedMember oldGrantor,
       InternalDistributedMember newGrantor, long newGrantorVersion, int newGrantorSerialNumber,
-      DM dm) {
+      DistributionManager dm) {
     final InternalDistributedMember elder = dm.getId();
     if (elder.equals(oldGrantor)) {
       doOldGrantorWork(serviceName, elder, newGrantor, newGrantorVersion, newGrantorSerialNumber,
@@ -71,7 +71,7 @@ public class DeposeGrantorProcessor extends ReplyProcessor21 {
 
   protected static void doOldGrantorWork(final String serviceName,
       final InternalDistributedMember elder, final InternalDistributedMember youngTurk,
-      final long newGrantorVersion, final int newGrantorSerialNumber, final DM dm,
+      final long newGrantorVersion, final int newGrantorSerialNumber, final DistributionManager dm,
       final DeposeGrantorMessage msg) {
     try {
       DLockService svc = DLockService.getInternalServiceNamed(serviceName);
@@ -92,7 +92,7 @@ public class DeposeGrantorProcessor extends ReplyProcessor21 {
   /**
    * Creates a new instance of DeposeGrantorProcessor
    */
-  private DeposeGrantorProcessor(DM dm, InternalDistributedMember oldGrantor) {
+  private DeposeGrantorProcessor(DistributionManager dm, InternalDistributedMember oldGrantor) {
     super(dm, oldGrantor);
   }
 
@@ -109,7 +109,7 @@ public class DeposeGrantorProcessor extends ReplyProcessor21 {
 
     protected static void send(String serviceName, InternalDistributedMember oldGrantor,
         InternalDistributedMember newGrantor, long newGrantorVersion, int newGrantorSerialNumber,
-        DM dm, ReplyProcessor21 proc) {
+        DistributionManager dm, ReplyProcessor21 proc) {
       DeposeGrantorMessage msg = new DeposeGrantorMessage();
       msg.serviceName = serviceName;
       msg.newGrantor = newGrantor;
@@ -128,12 +128,12 @@ public class DeposeGrantorProcessor extends ReplyProcessor21 {
       return this.processorId;
     }
 
-    void reply(DM dm) {
+    void reply(DistributionManager dm) {
       ReplyMessage.send(this.getSender(), this.getProcessorId(), null, dm);
     }
 
     @Override
-    protected void process(final DistributionManager dm) {
+    protected void process(final ClusterDistributionManager dm) {
       // if we are currently the grantor then
       // mark it as being destroyed until we hear from this.newGrantor
       // or he goes away or the grantor that sent us this message goes away.
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DistributedMemberLock.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DistributedMemberLock.java
index 54fe848..1996ae6 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DistributedMemberLock.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DistributedMemberLock.java
@@ -20,7 +20,7 @@ import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 
 import org.apache.geode.distributed.DistributedLockService;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.locks.DLockService.ThreadRequestState;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -244,7 +244,7 @@ public class DistributedMemberLock implements Lock {
     }
   }
 
-  private DM getDM() {
+  private DistributionManager getDM() {
     return this.dls.getDistributionManager();
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderInitProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderInitProcessor.java
index 9f4914a..71f2b47 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderInitProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderInitProcessor.java
@@ -27,7 +27,7 @@ import java.util.Set;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -61,7 +61,7 @@ public class ElderInitProcessor extends ReplyProcessor21 {
    * Initializes ElderState map by recovering all existing grantors and crashed grantors in the
    * current ds.
    */
-  static void init(DM dm, HashMap map) {
+  static void init(DistributionManager dm, HashMap map) {
     HashSet crashedGrantors = new HashSet();
     if (!dm.isAdam()) {
       Set others = dm.getOtherDistributionManagerIds();
@@ -90,7 +90,8 @@ public class ElderInitProcessor extends ReplyProcessor21 {
   /**
    * Creates a new instance of ElderInitProcessor
    */
-  private ElderInitProcessor(DM dm, Set others, HashMap grantors, HashSet crashedGrantors) {
+  private ElderInitProcessor(DistributionManager dm, Set others, HashMap grantors,
+      HashSet crashedGrantors) {
     super(dm/* fix bug 33297 */, others);
     this.grantors = grantors;
     this.crashedGrantors = crashedGrantors;
@@ -147,7 +148,7 @@ public class ElderInitProcessor extends ReplyProcessor21 {
       implements MessageWithReply {
     private int processorId;
 
-    protected static void send(Set others, DM dm, ReplyProcessor21 proc) {
+    protected static void send(Set others, DistributionManager dm, ReplyProcessor21 proc) {
       ElderInitMessage msg = new ElderInitMessage();
       msg.processorId = proc.getProcessorId();
       msg.setRecipients(others);
@@ -162,14 +163,14 @@ public class ElderInitProcessor extends ReplyProcessor21 {
       return this.processorId;
     }
 
-    private void reply(DM dm, ArrayList grantors, ArrayList grantorVersions,
+    private void reply(DistributionManager dm, ArrayList grantors, ArrayList grantorVersions,
         ArrayList grantorSerialNumbers, ArrayList nonGrantors) {
       ElderInitReplyMessage.send(this, dm, grantors, grantorVersions, grantorSerialNumbers,
           nonGrantors);
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       ArrayList grantors = new ArrayList(); // svc names grantor for
       ArrayList grantorVersions = new ArrayList(); // grantor versions
       ArrayList grantorSerialNumbers = new ArrayList(); // serial numbers of grantor svcs
@@ -228,7 +229,7 @@ public class ElderInitProcessor extends ReplyProcessor21 {
     private ArrayList grantorSerialNumbers; // grantor dls serial number ints
     private ArrayList nonGrantors; // svc names
 
-    public static void send(MessageWithReply reqMsg, DM dm, ArrayList grantors,
+    public static void send(MessageWithReply reqMsg, DistributionManager dm, ArrayList grantors,
         ArrayList grantorVersions, ArrayList grantorSerialNumbers, ArrayList nonGrantors) {
       ElderInitReplyMessage m = new ElderInitReplyMessage();
       m.grantors = grantors;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderState.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderState.java
index 58003d8..994ddc1 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderState.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/ElderState.java
@@ -21,7 +21,7 @@ import java.util.Iterator;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.InternalGemFireError;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -41,13 +41,13 @@ public class ElderState {
    * Maps service name keys to GrantorInfo values.
    */
   private final HashMap nameToInfo;
-  private final DM dm;
+  private final DistributionManager dm;
 
   /**
    * Constructs the EdlerState for the given dm. Note that this constructor does not complete until
    * elder recovery is complete.
    */
-  public ElderState(DM dm) {
+  public ElderState(DistributionManager dm) {
     Assert.assertTrue(dm != null);
     this.dm = dm;
     this.nameToInfo = new HashMap();
@@ -81,7 +81,7 @@ public class ElderState {
     }
   }
 
-  private void checkForProblem(DM checkDM) {
+  private void checkForProblem(DistributionManager checkDM) {
     if (checkDM.getSystem() == null) {
       logger.warn(LogMarker.DLS, LocalizedMessage
           .create(LocalizedStrings.ElderState_ELDERSTATE_PROBLEM_SYSTEM_0, checkDM.getSystem()));
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/GrantorRequestProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/GrantorRequestProcessor.java
index 221f568..6d73f4a 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/GrantorRequestProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/GrantorRequestProcessor.java
@@ -19,14 +19,12 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.Set;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.*;
 
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.CancelCriterion;
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -222,7 +220,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
     InternalDistributedMember elder;
     ElderState es = null;
 
-    final DM dm = sys.getDistributionManager();
+    final DistributionManager dm = sys.getDistributionManager();
     boolean elderCallStarted = false;
     while (!elderCallStarted) {
       dm.throwIfDistributionStopped();
@@ -334,7 +332,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
       int dlsSerialNumber, InternalDistributedSystem system, InternalDistributedMember oldTurk,
       byte opCode) {
     GrantorInfo result = null;
-    DM dm = system.getDistributionManager();
+    DistributionManager dm = system.getDistributionManager();
     GrantorRequestContext grc = system.getGrantorRequestContext();
     boolean tryNewElder;
     boolean interrupted = false;
@@ -478,7 +476,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
      * @return true if the message was sent
      */
     protected static boolean send(long grantorVersion, int dlsSerialNumber, String serviceName,
-        InternalDistributedMember elder, DM dm, ReplyProcessor21 proc,
+        InternalDistributedMember elder, DistributionManager dm, ReplyProcessor21 proc,
         InternalDistributedMember oldTurk, byte opCode) {
       // bug36361: the following assertion doesn't work, since the client that sent us
       // the request might have a different notion of the elder (no view synchrony on the
@@ -512,16 +510,16 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
       return this.processorId;
     }
 
-    private void replyGrantorInfo(DM dm, GrantorInfo gi) {
+    private void replyGrantorInfo(DistributionManager dm, GrantorInfo gi) {
       GrantorInfoReplyMessage.send(this, dm, gi);
     }
 
-    private void replyClear(DM dm) {
+    private void replyClear(DistributionManager dm) {
       ReplyMessage.send(this.getSender(), this.getProcessorId(), null, dm);
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       // executeBasicProcess(dm); // TODO change to this after things are stable
       basicProcess(dm);
     }
@@ -540,7 +538,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
     // }
     // }
 
-    protected void basicProcess(final DM dm) {
+    protected void basicProcess(final DistributionManager dm) {
       // we should be in the elder
       ElderState es = dm.getElderState(true, false);
       switch (this.opCode) {
@@ -643,7 +641,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
     private int grantorSerialNumber;
     private boolean needsRecovery;
 
-    public static void send(MessageWithReply reqMsg, DM dm, GrantorInfo gi) {
+    public static void send(MessageWithReply reqMsg, DistributionManager dm, GrantorInfo gi) {
       GrantorInfoReplyMessage m = new GrantorInfoReplyMessage();
       m.grantor = gi.getId();
       m.needsRecovery = gi.needsRecovery();
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/LockGrantorId.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/LockGrantorId.java
index a887d84..e86d828 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/LockGrantorId.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/LockGrantorId.java
@@ -14,8 +14,8 @@
  */
 package org.apache.geode.distributed.internal.locks;
 
-import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
@@ -31,7 +31,7 @@ public class LockGrantorId {
           10000)
       .intValue();
 
-  private final DM dm;
+  private final DistributionManager dm;
   private final InternalDistributedMember lockGrantorMember;
   private final long lockGrantorVersion;
   private final int lockGrantorSerialNumber;
@@ -43,8 +43,8 @@ public class LockGrantorId {
    * @param lockGrantorMember the non-null member hosting the grantor
    * @param lockGrantorVersion the long grantor version number
    */
-  public LockGrantorId(DM dm, InternalDistributedMember lockGrantorMember, long lockGrantorVersion,
-      int lockGrantorSerialNumber) {
+  public LockGrantorId(DistributionManager dm, InternalDistributedMember lockGrantorMember,
+      long lockGrantorVersion, int lockGrantorSerialNumber) {
     if (lockGrantorMember == null) {
       throw new NullPointerException(
           LocalizedStrings.LockGrantorId_LOCKGRANTORMEMBER_IS_NULL.toLocalizedString());
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor.java
index cfc1888..615498d 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.LockServiceDestroyedException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -57,7 +57,7 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
    * Caller should loop, getting the grantor, calling <code>send</code>, and checking
    * <code>informedGrantor()</code> until the grantor has acknowledged being informed.
    */
-  static boolean send(String serviceName, LockGrantorId theLockGrantorId, DM dm) {
+  static boolean send(String serviceName, LockGrantorId theLockGrantorId, DistributionManager dm) {
     InternalDistributedMember recipient = theLockGrantorId.getLockGrantorMember();
     NonGrantorDestroyedProcessor processor = new NonGrantorDestroyedProcessor(dm, recipient);
     NonGrantorDestroyedMessage.send(serviceName, recipient, dm, processor);
@@ -72,7 +72,7 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
   //////////// Instance methods //////////////
 
   /** Creates a new instance of NonGrantorDestroyedProcessor */
-  private NonGrantorDestroyedProcessor(DM dm, InternalDistributedMember grantor) {
+  private NonGrantorDestroyedProcessor(DistributionManager dm, InternalDistributedMember grantor) {
     super(dm, grantor);
   }
 
@@ -108,8 +108,8 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
     /** The name of the DistributedLockService */
     private String serviceName;
 
-    protected static void send(String serviceName, InternalDistributedMember grantor, DM dm,
-        ReplyProcessor21 proc) {
+    protected static void send(String serviceName, InternalDistributedMember grantor,
+        DistributionManager dm, ReplyProcessor21 proc) {
       Assert.assertTrue(grantor != null, "Cannot send NonGrantorDestroyedMessage to null grantor");
 
       NonGrantorDestroyedMessage msg = new NonGrantorDestroyedMessage();
@@ -134,22 +134,22 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
       return this.processorId;
     }
 
-    private void reply(byte replyCode, DM dm) {
+    private void reply(byte replyCode, DistributionManager dm) {
       NonGrantorDestroyedReplyMessage.send(this, replyCode, dm);
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       basicProcess(dm);
     }
 
     /** Process locally without using messaging */
-    protected void processLocally(final DM dm) {
+    protected void processLocally(final DistributionManager dm) {
       basicProcess(dm);
     }
 
     /** Perform basic processing of this message */
-    private void basicProcess(final DM dm) {
+    private void basicProcess(final DistributionManager dm) {
       boolean replied = false;
       try {
         DLockService svc = DLockService.getInternalServiceNamed(this.serviceName);
@@ -222,7 +222,7 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
 
     private byte replyCode;
 
-    public static void send(MessageWithReply destroyedMsg, byte replyCode, DM dm) {
+    public static void send(MessageWithReply destroyedMsg, byte replyCode, DistributionManager dm) {
       NonGrantorDestroyedReplyMessage m = new NonGrantorDestroyedReplyMessage();
       m.processorId = destroyedMsg.getProcessorId();
       m.setRecipient(destroyedMsg.getSender());
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/DistributedMembershipListener.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/DistributedMembershipListener.java
index 73d896d..181db45 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/DistributedMembershipListener.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/DistributedMembershipListener.java
@@ -17,7 +17,6 @@ package org.apache.geode.distributed.internal.membership;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.direct.DirectChannelListener;
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
index b5db42c..f17a766 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
@@ -15,7 +15,6 @@
 package org.apache.geode.distributed.internal.membership;
 
 import java.io.*;
-import java.net.Inet4Address;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.*;
@@ -27,9 +26,9 @@ import org.apache.geode.cache.UnsupportedVersionException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DurableClientAttributes;
 import org.apache.geode.distributed.Role;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionAdvisor.ProfileId;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.ServerLocation;
 import org.apache.geode.internal.*;
 import org.apache.geode.internal.cache.versions.VersionSource;
@@ -219,7 +218,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
       throw new GemFireConfigException("Unable to resolve server location " + location, e);
     }
     netMbr = MemberFactory.newNetMember(addr, location.getPort());
-    netMbr.setVmKind(DistributionManager.NORMAL_DM_TYPE);
+    netMbr.setVmKind(ClusterDistributionManager.NORMAL_DM_TYPE);
     versionObj = Version.CURRENT;
     netMbr.setVersion(versionObj);
   }
@@ -253,7 +252,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
   public InternalDistributedMember(String i, int p, Version version, NetMember netMember) {
     netMbr = netMember;
     defaultToCurrentHost();
-    netMember.setVmKind(DistributionManager.NORMAL_DM_TYPE);
+    netMember.setVmKind(ClusterDistributionManager.NORMAL_DM_TYPE);
     this.versionObj = version;
     netMember.setVersion(version);
   }
@@ -364,8 +363,8 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
   /**
    * [GemStone] Returns the kind of VM that hosts the distribution manager with this address.
    *
-   * @see org.apache.geode.distributed.internal.DistributionManager#getDMType()
-   * @see org.apache.geode.distributed.internal.DistributionManager#NORMAL_DM_TYPE
+   * @see ClusterDistributionManager#getDMType()
+   * @see ClusterDistributionManager#NORMAL_DM_TYPE
    */
   public int getVmKind() {
     return netMbr.getVmKind();
@@ -700,7 +699,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     String myName = getName();
     int vmPid = netMbr.getProcessId();
     int vmKind = netMbr.getVmKind();
-    if (vmPid > 0 || vmKind != DistributionManager.NORMAL_DM_TYPE || !"".equals(myName)) {
+    if (vmPid > 0 || vmKind != ClusterDistributionManager.NORMAL_DM_TYPE || !"".equals(myName)) {
       sb.append("(");
 
       if (!"".equals(myName)) {
@@ -715,16 +714,16 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
 
       String vmStr = "";
       switch (vmKind) {
-        case DistributionManager.NORMAL_DM_TYPE:
+        case ClusterDistributionManager.NORMAL_DM_TYPE:
           // vmStr = ":local"; // let this be silent
           break;
-        case DistributionManager.LOCATOR_DM_TYPE:
+        case ClusterDistributionManager.LOCATOR_DM_TYPE:
           vmStr = ":locator";
           break;
-        case DistributionManager.ADMIN_ONLY_DM_TYPE:
+        case ClusterDistributionManager.ADMIN_ONLY_DM_TYPE:
           vmStr = ":admin";
           break;
-        case DistributionManager.LONER_DM_TYPE:
+        case ClusterDistributionManager.LONER_DM_TYPE:
           vmStr = ":loner";
           break;
         default:
@@ -734,7 +733,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
       sb.append(vmStr);
       sb.append(")");
     }
-    if (vmKind != DistributionManager.LONER_DM_TYPE && netMbr.preferredForCoordinator()) {
+    if (vmKind != ClusterDistributionManager.LONER_DM_TYPE && netMbr.preferredForCoordinator()) {
       sb.append("<ec>");
     }
     int vmViewId = getVmViewId();
@@ -749,7 +748,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     // sb.append(Integer.toString(dcPort));
     // }
 
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       // add some more info that was added in 4.2.1 for loner bridge clients
       // impact on non-bridge loners is ok
       if (this.uniqueTag != null && this.uniqueTag.length() != 0) {
@@ -913,7 +912,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     DataSerializer.writeStringArray(netMbr.getGroups(), out);
 
     DataSerializer.writeString(netMbr.getName(), out);
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       DataSerializer.writeString(this.uniqueTag, out);
     } else { // added in 6.5 for unique identifiers in P2P
       DataSerializer.writeString(String.valueOf(netMbr.getVmViewId()), out);
@@ -961,7 +960,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
 
     DataSerializer.writeString(netMbr.getName(), out);
     int vmKind = netMbr.getVmKind();
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       DataSerializer.writeString(this.uniqueTag, out);
     } else { // added in 6.5 for unique identifiers in P2P
       DataSerializer.writeString(String.valueOf(netMbr.getVmViewId()), out);
@@ -1008,7 +1007,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     int vmViewId = -1;
 
     String name = DataSerializer.readString(in);
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       this.uniqueTag = DataSerializer.readString(in);
     } else {
       String str = DataSerializer.readString(in);
@@ -1053,7 +1052,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     int vmViewId = -1;
 
     String name = DataSerializer.readString(in);
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       this.uniqueTag = DataSerializer.readString(in);
     } else {
       String str = DataSerializer.readString(in);
@@ -1099,7 +1098,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     int vmKind = in.readUnsignedByte();
     int vmViewId = -1;
 
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       this.uniqueTag = DataSerializer.readString(in);
     } else {
       String str = DataSerializer.readString(in);
@@ -1137,7 +1136,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
     byte vmKind = netMbr.getVmKind();
     out.writeByte(vmKind);
 
-    if (vmKind == DistributionManager.LONER_DM_TYPE) {
+    if (vmKind == ClusterDistributionManager.LONER_DM_TYPE) {
       DataSerializer.writeString(this.uniqueTag, out);
     } else { // added in 6.5 for unique identifiers in P2P
       DataSerializer.writeString(String.valueOf(netMbr.getVmViewId()), out);
@@ -1164,7 +1163,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
    * information to help form a unique ID
    */
   public void setPort(int p) {
-    assert netMbr.getVmKind() == DistributionManager.LONER_DM_TYPE;
+    assert netMbr.getVmKind() == ClusterDistributionManager.LONER_DM_TYPE;
     this.netMbr.setPort(p);
     cachedToString = null;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalRole.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalRole.java
index cff6908..00e8de1 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalRole.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalRole.java
@@ -19,7 +19,7 @@ import java.util.*;
 import org.apache.commons.lang.StringUtils;
 
 import org.apache.geode.distributed.Role;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
@@ -143,7 +143,7 @@ public class InternalRole implements Role {
           LocalizedStrings.InternalRole_ISPRESENT_REQUIRES_A_CONNECTION_TO_THE_DISTRIBUTED_SYSTEM
               .toLocalizedString());
     }
-    DM dm = sys.getDistributionManager();
+    DistributionManager dm = sys.getDistributionManager();
     return dm.isRolePresent(this);
   }
 
@@ -154,7 +154,7 @@ public class InternalRole implements Role {
           LocalizedStrings.InternalRole_GETCOUNT_REQUIRES_A_CONNECTION_TO_THE_DISTRIBUTED_SYSTEM
               .toLocalizedString());
     }
-    DM dm = sys.getDistributionManager();
+    DistributionManager dm = sys.getDistributionManager();
     return dm.getRoleCount(this);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberAttributes.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberAttributes.java
index e6d5053..b44b229 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberAttributes.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/MemberAttributes.java
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.StringTokenizer;
 
 import org.apache.geode.distributed.DurableClientAttributes;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 
 /**
  * The attributes of a distributed member. This is largely deprecated as GMSMember holds all of this
@@ -32,7 +32,7 @@ public class MemberAttributes {
   public static final MemberAttributes INVALID =
       new MemberAttributes(-1, -1, -1, -1, null, null, null);
   public static final MemberAttributes DEFAULT =
-      new MemberAttributes(-1, -1, DistributionManager.NORMAL_DM_TYPE, -1, null, null, null);
+      new MemberAttributes(-1, -1, ClusterDistributionManager.NORMAL_DM_TYPE, -1, null, null, null);
 
   private int dcPort;
   private int vmPid;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetView.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetView.java
index 17451a1..c9ed332 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetView.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetView.java
@@ -34,7 +34,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.internal.DataSerializableFixedID;
 import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.Version;
@@ -297,7 +297,7 @@ public class NetView implements DataSerializableFixedID {
 
   public InternalDistributedMember getLeadMember() {
     for (InternalDistributedMember mbr : this.members) {
-      if (mbr.getVmKind() == DistributionManager.NORMAL_DM_TYPE) {
+      if (mbr.getVmKind() == ClusterDistributionManager.NORMAL_DM_TYPE) {
         return mbr;
       }
     }
@@ -417,16 +417,16 @@ public class NetView implements DataSerializableFixedID {
     for (InternalDistributedMember mbr : this.members) {
       result += mbr.getNetMember().getMemberWeight();
       switch (mbr.getVmKind()) {
-        case DistributionManager.NORMAL_DM_TYPE:
+        case ClusterDistributionManager.NORMAL_DM_TYPE:
           result += 10;
           if (lead != null && mbr.equals(lead)) {
             result += 5;
           }
           break;
-        case DistributionManager.LOCATOR_DM_TYPE:
+        case ClusterDistributionManager.LOCATOR_DM_TYPE:
           result += 3;
           break;
-        case DistributionManager.ADMIN_ONLY_DM_TYPE:
+        case ClusterDistributionManager.ADMIN_ONLY_DM_TYPE:
           break;
         default:
           throw new IllegalStateException("Unknown member type: " + mbr.getVmKind());
@@ -448,16 +448,16 @@ public class NetView implements DataSerializableFixedID {
       }
       result += mbr.getNetMember().getMemberWeight();
       switch (mbr.getVmKind()) {
-        case DistributionManager.NORMAL_DM_TYPE:
+        case ClusterDistributionManager.NORMAL_DM_TYPE:
           result += 10;
           if (lead != null && mbr.equals(lead)) {
             result += 5;
           }
           break;
-        case DistributionManager.LOCATOR_DM_TYPE:
+        case ClusterDistributionManager.LOCATOR_DM_TYPE:
           result += 3;
           break;
-        case DistributionManager.ADMIN_ONLY_DM_TYPE:
+        case ClusterDistributionManager.ADMIN_ONLY_DM_TYPE:
           break;
         default:
           throw new IllegalStateException("Unknown member type: " + mbr.getVmKind());
@@ -473,7 +473,7 @@ public class NetView implements DataSerializableFixedID {
   public Set<InternalDistributedMember> getActualCrashedMembers(NetView oldView) {
     Set<InternalDistributedMember> result = new HashSet<>(this.crashedMembers.size());
     result.addAll(this.crashedMembers.stream()
-        .filter(mbr -> (mbr.getVmKind() != DistributionManager.ADMIN_ONLY_DM_TYPE))
+        .filter(mbr -> (mbr.getVmKind() != ClusterDistributionManager.ADMIN_ONLY_DM_TYPE))
         .filter(mbr -> oldView == null || oldView.contains(mbr)).collect(Collectors.toList()));
     return result;
   }
@@ -489,17 +489,17 @@ public class NetView implements DataSerializableFixedID {
       }
       int mbrWeight = mbr.getNetMember().getMemberWeight();
       switch (mbr.getVmKind()) {
-        case DistributionManager.NORMAL_DM_TYPE:
+        case ClusterDistributionManager.NORMAL_DM_TYPE:
           if (lead != null && mbr.equals(lead)) {
             mbrWeight += 15;
           } else {
             mbrWeight += 10;
           }
           break;
-        case DistributionManager.LOCATOR_DM_TYPE:
+        case ClusterDistributionManager.LOCATOR_DM_TYPE:
           mbrWeight += 3;
           break;
-        case DistributionManager.ADMIN_ONLY_DM_TYPE:
+        case ClusterDistributionManager.ADMIN_ONLY_DM_TYPE:
           break;
         default:
           throw new IllegalStateException("Unknown member type: " + mbr.getVmKind());
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorRequest.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorRequest.java
index 781ca63..0ede03e 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorRequest.java
@@ -21,10 +21,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.internal.DataSerializableFixedID;
 import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.Version;
 
@@ -134,7 +133,7 @@ public class FindCoordinatorRequest extends HighPriorityDistributionMessage
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message should not be executed");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorResponse.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorResponse.java
index 550d555..ec4b101 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorResponse.java
@@ -22,7 +22,7 @@ import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.NetView;
@@ -178,7 +178,7 @@ public class FindCoordinatorResponse extends HighPriorityDistributionMessage
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message should not be executed");
   }
 
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 58ee027..cecc4a9 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
@@ -41,7 +41,7 @@ import org.apache.geode.InternalGemFireException;
 import org.apache.geode.cache.GemFireCache;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.ClusterConfigurationService;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.LocatorStats;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -450,7 +450,7 @@ public class GMSLocator implements Locator, NetLocator {
       // GEODE-3052 - remove locators from the view. Since we couldn't recover from an existing
       // locator we know that all of the locators in the view are defunct
       for (InternalDistributedMember member : members) {
-        if (member.getVmKind() == DistributionManager.LOCATOR_DM_TYPE) {
+        if (member.getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE) {
           recoveredView.remove(member);
         }
       }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index f90329c..3378000 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -56,8 +56,8 @@ import org.apache.geode.SystemConnectException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.NetMember;
@@ -1608,7 +1608,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
       boolean preferred = false;
       if (services.getLocator() != null || Locator.hasLocator()
           || !services.getConfig().getDistributionConfig().getStartLocator().isEmpty()
-          || localAddress.getVmKind() == DistributionManager.LOCATOR_DM_TYPE) {
+          || localAddress.getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE) {
         logger
             .info("This member is hosting a locator will be preferred as a membership coordinator");
         preferred = true;
@@ -2484,8 +2484,9 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
             lastConflictingView = conflictingView;
             // if I am not a locator and the conflicting view is from a locator I should
             // let it take control and stop sending membership views
-            if (localAddress.getVmKind() != DistributionManager.LOCATOR_DM_TYPE && conflictingView
-                .getCreator().getVmKind() == DistributionManager.LOCATOR_DM_TYPE) {
+            if (localAddress.getVmKind() != ClusterDistributionManager.LOCATOR_DM_TYPE
+                && conflictingView.getCreator()
+                    .getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE) {
               logger.info("View preparation interrupted - a locator is taking over as "
                   + "membership coordinator in this view: {}", conflictingView);
               abandonedViews++;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/FinalCheckPassedMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/FinalCheckPassedMessage.java
index b64917d..c112c8f 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/FinalCheckPassedMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/FinalCheckPassedMessage.java
@@ -19,7 +19,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -43,7 +43,7 @@ public class FinalCheckPassedMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatMessage.java
index 2ca9eca..21bbd08 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatMessage.java
@@ -18,7 +18,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.internal.Version;
 
@@ -46,7 +46,7 @@ public class HeartbeatMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatRequestMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatRequestMessage.java
index 8a6234d..16218ec 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatRequestMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatRequestMessage.java
@@ -19,7 +19,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -53,7 +53,7 @@ public class HeartbeatRequestMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage.java
index c785a02..7dca4be 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage.java
@@ -17,15 +17,11 @@ package org.apache.geode.distributed.internal.membership.gms.messages;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.NetView;
-import org.apache.geode.internal.InternalDataSerializer;
 
 public class InstallViewMessage extends HighPriorityDistributionMessage {
   enum messageType {
@@ -81,7 +77,7 @@ public class InstallViewMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinRequestMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinRequestMessage.java
index caf15dd..c8e88fc 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinRequestMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinRequestMessage.java
@@ -19,7 +19,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -54,7 +54,7 @@ public class JoinRequestMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinResponseMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinResponseMessage.java
index 4e0bcc8..dd718ab 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinResponseMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/JoinResponseMessage.java
@@ -17,17 +17,13 @@ package org.apache.geode.distributed.internal.membership.gms.messages;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.NetView;
-import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.Version;
 
 // TODO this class has been made unintelligible with different combinations of response values.
@@ -98,7 +94,7 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("JoinResponse is not intended to be executed");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/LeaveRequestMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/LeaveRequestMessage.java
index 8ff0d97..ae4f6ce 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/LeaveRequestMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/LeaveRequestMessage.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.util.Collection;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -55,7 +55,7 @@ public class LeaveRequestMessage extends HighPriorityDistributionMessage impleme
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/NetworkPartitionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/NetworkPartitionMessage.java
index 8dd04b9..64edf73 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/NetworkPartitionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/NetworkPartitionMessage.java
@@ -16,7 +16,7 @@ package org.apache.geode.distributed.internal.membership.gms.messages;
 
 import java.util.Collection;
 
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
@@ -34,7 +34,7 @@ public class NetworkPartitionMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to be executed");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/RemoveMemberMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/RemoveMemberMessage.java
index 8d08d5c..fab8d8e 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/RemoveMemberMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/RemoveMemberMessage.java
@@ -17,11 +17,10 @@ package org.apache.geode.distributed.internal.membership.gms.messages;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -57,7 +56,7 @@ public class RemoveMemberMessage extends HighPriorityDistributionMessage impleme
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/SuspectMembersMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/SuspectMembersMessage.java
index ac1ac15..1782a3f 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/SuspectMembersMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/SuspectMembersMessage.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Version;
@@ -46,7 +46,7 @@ public class SuspectMembersMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/ViewAckMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/ViewAckMessage.java
index 12dd334..63266ba 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/ViewAckMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/ViewAckMessage.java
@@ -19,7 +19,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.NetView;
@@ -72,7 +72,7 @@ public class ViewAckMessage extends HighPriorityDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     throw new IllegalStateException("this message is not intended to execute in a thread pool");
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 46142c4..f524f68 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -72,9 +72,9 @@ import org.apache.geode.SystemConnectException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.DurableClientAttributes;
+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.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionStats;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
@@ -505,9 +505,9 @@ public class JGroupsMessenger implements Messenger {
     myChannel.down(new Event(Event.SET_LOCAL_ADDRESS, this.jgAddress));
 
     DistributionConfig config = services.getConfig().getDistributionConfig();
-    boolean isLocator =
-        (services.getConfig().getTransport().getVmKind() == DistributionManager.LOCATOR_DM_TYPE)
-            || !services.getConfig().getDistributionConfig().getStartLocator().isEmpty();
+    boolean isLocator = (services.getConfig().getTransport()
+        .getVmKind() == ClusterDistributionManager.LOCATOR_DM_TYPE)
+        || !services.getConfig().getDistributionConfig().getStartLocator().isEmpty();
 
     // establish the DistributedSystem's address
     DurableClientAttributes dca = null;
@@ -950,7 +950,7 @@ public class JGroupsMessenger implements Messenger {
     // which is fairly rare
     msg.setFlag(Flag.DONT_BUNDLE);
 
-    if (gfmsg.getProcessorType() == DistributionManager.HIGH_PRIORITY_EXECUTOR
+    if (gfmsg.getProcessorType() == ClusterDistributionManager.HIGH_PRIORITY_EXECUTOR
         || gfmsg instanceof HighPriorityDistributionMessage || AlertAppender.isThreadAlerting()) {
       msg.setFlag(Flag.OOB);
       msg.setFlag(Flag.NO_FC);
@@ -1289,7 +1289,7 @@ public class JGroupsMessenger implements Messenger {
         // multicast to them, avoiding deserialization cost and classpath
         // problems
         if ((services.getConfig().getTransport()
-            .getVmKind() == DistributionManager.ADMIN_ONLY_DM_TYPE)
+            .getVmKind() == ClusterDistributionManager.ADMIN_ONLY_DM_TYPE)
             && (msg instanceof DistributedCacheOperation.CacheOperationMessage)) {
           return;
         }
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 a2fc407..ea747c3 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
@@ -52,10 +52,10 @@ import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.Locator;
 import org.apache.geode.distributed.internal.AdminMessageType;
+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.DistributionException;
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.InternalLocator;
@@ -408,7 +408,7 @@ public class GMSMembershipManager implements MembershipManager, Manager {
       handleOrDeferMessage(msg);
     }
 
-    public DistributionManager getDM() {
+    public ClusterDistributionManager getDM() {
       return upCall.getDM();
     }
 
@@ -1956,7 +1956,7 @@ public class GMSMembershipManager implements MembershipManager, Manager {
   public boolean shutdownInProgress() {
     // Impossible condition (bug36329): make sure that we check DM's
     // view of shutdown here
-    DistributionManager dm = listener.getDM();
+    ClusterDistributionManager dm = listener.getDM();
     return shutdownInProgress || (dm != null && dm.shutdownInProgress());
   }
 
@@ -2521,7 +2521,7 @@ public class GMSMembershipManager implements MembershipManager, Manager {
       }
     }
 
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       // not used
     }
 
@@ -2530,7 +2530,7 @@ public class GMSMembershipManager implements MembershipManager, Manager {
     }
 
     public int getProcessorType() {
-      return DistributionManager.SERIAL_EXECUTOR;
+      return ClusterDistributionManager.SERIAL_EXECUTOR;
     }
   }
 
@@ -2633,7 +2633,7 @@ public class GMSMembershipManager implements MembershipManager, Manager {
 
   @Override
   public boolean isShutdownStarted() {
-    DistributionManager dm = listener.getDM();
+    ClusterDistributionManager dm = listener.getDM();
     return shutdownInProgress || (dm != null && dm.isShutdownStarted());
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/LocalViewMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/LocalViewMessage.java
index 8b4f0f5..8634411 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/LocalViewMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/LocalViewMessage.java
@@ -18,7 +18,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.SerialDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.NetView;
@@ -48,12 +48,12 @@ public class LocalViewMessage extends SerialDistributionMessage {
 
   @Override
   public int getProcessorType() {
-    return DistributionManager.VIEW_EXECUTOR;
+    return ClusterDistributionManager.VIEW_EXECUTOR;
   }
 
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     // dm.getLogger().info("view message processed", new Exception());
     manager.processView(viewId, view);
   }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/streaming/StreamingOperation.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/streaming/StreamingOperation.java
index b33273a..163eaa7 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/streaming/StreamingOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/streaming/StreamingOperation.java
@@ -33,14 +33,13 @@ import org.apache.geode.GemFireRethrowable;
 import org.apache.geode.InternalGemFireError;
 import org.apache.geode.InternalGemFireException;
 import org.apache.geode.SystemFailure;
-import org.apache.geode.cache.query.Struct;
 import org.apache.geode.cache.query.internal.DefaultQuery;
 import org.apache.geode.cache.query.internal.PRQueryTraceInfo;
 import org.apache.geode.cache.query.internal.QueryMonitor;
 import org.apache.geode.cache.query.internal.StructImpl;
 import org.apache.geode.cache.query.internal.types.StructTypeImpl;
 import org.apache.geode.cache.query.types.ObjectType;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -278,7 +277,7 @@ public abstract class StreamingOperation {
     }
 
     @Override
-    protected void process(final DistributionManager dm) {
+    protected void process(final ClusterDistributionManager dm) {
       Throwable thr = null;
       ReplyException rex = null;
       Object nextObject = null;
@@ -381,13 +380,13 @@ public abstract class StreamingOperation {
     // StreamingReplyMessage.send(getSender(), this.processorId, null, dm, null, 0, 0, true);
     // }
 
-    protected void replyWithData(DistributionManager dm, HeapDataOutputStream outStream,
+    protected void replyWithData(ClusterDistributionManager dm, HeapDataOutputStream outStream,
         int numObjects, int msgNum, boolean lastMsg) {
       StreamingReplyMessage.send(getSender(), this.processorId, null, dm, outStream, numObjects,
           msgNum, lastMsg);
     }
 
-    protected void replyWithException(DistributionManager dm, ReplyException rex) {
+    protected void replyWithException(ClusterDistributionManager dm, ReplyException rex) {
       StreamingReplyMessage.send(getSender(), this.processorId, rex, dm, null, 0, 0, true);
     }
 
@@ -444,14 +443,14 @@ public abstract class StreamingOperation {
      * @param lastMsg if this is the last message in this series
      */
     public static void send(InternalDistributedMember recipient, int processorId,
-        ReplyException exception, DM dm, HeapDataOutputStream chunkStream, int numObjects,
-        int msgNum, boolean lastMsg) {
+        ReplyException exception, DistributionManager dm, HeapDataOutputStream chunkStream,
+        int numObjects, int msgNum, boolean lastMsg) {
       send(recipient, processorId, exception, dm, chunkStream, numObjects, msgNum, lastMsg, false);
     }
 
     public static void send(InternalDistributedMember recipient, int processorId,
-        ReplyException exception, DM dm, HeapDataOutputStream chunkStream, int numObjects,
-        int msgNum, boolean lastMsg, boolean pdxReadSerialized) {
+        ReplyException exception, DistributionManager dm, HeapDataOutputStream chunkStream,
+        int numObjects, int msgNum, boolean lastMsg, boolean pdxReadSerialized) {
       StreamingReplyMessage m = new StreamingReplyMessage();
       m.processorId = processorId;
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
index 313cd27..c00430e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
@@ -82,10 +82,10 @@ import org.apache.geode.SystemFailure;
 import org.apache.geode.ToDataException;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.cache.execute.Function;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DistributedSystemService;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.LonerDistributionManager;
 import org.apache.geode.distributed.internal.SerialDistributionMessage;
@@ -3374,7 +3374,7 @@ public abstract class InternalDataSerializer extends DataSerializer implements D
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       if (CacheClientNotifier.getInstance() != null) {
         // This is a server so we need to send the dataserializer to clients
         // right away. For that we need to load the class as the constructor of
diff --git a/geode-core/src/main/java/org/apache/geode/internal/InternalInstantiator.java b/geode-core/src/main/java/org/apache/geode/internal/InternalInstantiator.java
index 6e48681..2731ed5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/InternalInstantiator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/InternalInstantiator.java
@@ -30,7 +30,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.Instantiator;
 import org.apache.geode.cache.Cache;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.SerialDistributionMessage;
 import org.apache.geode.i18n.StringId;
@@ -863,7 +863,7 @@ public class InternalInstantiator {
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       if (this.fromDataProblems != null) {
         if (logger.isDebugEnabled()) {
           logger.debug(this.fromDataProblems);
@@ -979,7 +979,7 @@ public class InternalInstantiator {
     }
 
     @Override
-    protected void process(DistributionManager dm) {
+    protected void process(ClusterDistributionManager dm) {
       if (fromDataProblems != null) {
         if (logger.isDebugEnabled()) {
           logger.debug(fromDataProblems);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
index 98ff92c..76eed16 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientMembershipMessage.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
@@ -61,10 +61,10 @@ public class ClientMembershipMessage extends PooledDistributionMessage {
 
   /**
    *
-   * @see org.apache.geode.distributed.internal.DistributionMessage#process(org.apache.geode.distributed.internal.DistributionManager)
+   * @see org.apache.geode.distributed.internal.DistributionMessage#process(ClusterDistributionManager)
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     AdminDistributedSystemImpl adminDs = AdminDistributedSystemImpl.getConnectedInstance();
 
     /*
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/GfManagerAgent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/GfManagerAgent.java
index c129583..91f4855 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/GfManagerAgent.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/GfManagerAgent.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.internal.admin;
 
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
 /**
@@ -86,7 +86,7 @@ public interface GfManagerAgent {
    *
    * @since GemFire 3.5
    */
-  public DM getDM();
+  public DistributionManager getDM();
 
   /**
    * Sets the alert level for this manager agent.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java b/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
index f1a1164..f2e804a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
@@ -30,7 +30,7 @@ import org.apache.geode.StatisticDescriptor;
 import org.apache.geode.Statistics;
 import org.apache.geode.StatisticsType;
 import org.apache.geode.admin.jmx.internal.StatAlertsAggregator;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.SystemTimer;
 import org.apache.geode.internal.SystemTimer.SystemTimerTask;
@@ -88,9 +88,9 @@ public class StatAlertsManager {
   /**
    * Provides life cycle support
    */
-  protected final DistributionManager dm;
+  protected final ClusterDistributionManager dm;
 
-  private StatAlertsManager(DistributionManager dm) {
+  private StatAlertsManager(ClusterDistributionManager dm) {
     this.dm = dm;
     logger.info(
         LocalizedMessage.create(LocalizedStrings.StatAlertsManager_STATALERTSMANAGER_CREATED));
@@ -99,7 +99,7 @@ public class StatAlertsManager {
   /**
    * @return singleton instance of StatAlertsManager
    */
-  public static synchronized StatAlertsManager getInstance(DistributionManager dm) {
+  public static synchronized StatAlertsManager getInstance(ClusterDistributionManager dm) {
     // As per current implementation set up request will be send only once ,
     // when member joined to Admin distributed system
     // we don't need to care about race condition
@@ -258,7 +258,7 @@ public class StatAlertsManager {
    * Convert {@link StatAlertDefinition }(Created by client like GFMon2.0) with
    * {@link DummyStatisticInfoImpl} to StatAlertDefinition with {@link StatisticInfoImpl}
    */
-  private StatAlertDefinition[] createMemberStatAlertDefinition(DistributionManager dm,
+  private StatAlertDefinition[] createMemberStatAlertDefinition(ClusterDistributionManager dm,
       StatAlertDefinition[] defns) {
     dm.getCancelCriterion().checkCancelInProgress(null);
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerRequest.java
index 4ffe064..795b00c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerRequest.java
@@ -57,7 +57,7 @@ public class AddHealthListenerRequest extends AdminRequest {
    * Must return a proper response to this request.
    */
   @Override
-  protected AdminResponse createResponse(DM dm) {
+  protected AdminResponse createResponse(DistributionManager dm) {
     return AddHealthListenerResponse.create(dm, this.getSender(), this.cfg);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerResponse.java
index 50aed79..3fda3f7 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddHealthListenerResponse.java
@@ -35,8 +35,8 @@ public class AddHealthListenerResponse extends AdminResponse {
    * Returns a <code>AddHealthListenerResponse</code> that will be returned to the specified
    * recipient.
    */
-  public static AddHealthListenerResponse create(DM dm, InternalDistributedMember recipient,
-      GemFireHealthConfig cfg) {
+  public static AddHealthListenerResponse create(DistributionManager dm,
+      InternalDistributedMember recipient, GemFireHealthConfig cfg) {
     AddHealthListenerResponse m = new AddHealthListenerResponse();
     m.setRecipient(recipient);
     dm.createHealthMonitor(recipient, cfg);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerRequest.java
index 37111dc..36e9deb 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerRequest.java
@@ -51,7 +51,7 @@ public class AddStatListenerRequest extends AdminRequest {
    * @param dm
    */
   @Override
-  protected AdminResponse createResponse(DM dm) {
+  protected AdminResponse createResponse(DistributionManager dm) {
     return AddStatListenerResponse.create(dm, this.getSender(), this.resourceId, this.statName);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerResponse.java
index 19b430e..b5f52a9 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AddStatListenerResponse.java
@@ -34,8 +34,8 @@ public class AddStatListenerResponse extends AdminResponse {
    * Returns a <code>AddStatListenerResponse</code> that will be returned to the specified
    * recipient. The message will contains a copy of the local manager's system config.
    */
-  public static AddStatListenerResponse create(DM dm, InternalDistributedMember recipient,
-      long resourceId, String statName) {
+  public static AddStatListenerResponse create(DistributionManager dm,
+      InternalDistributedMember recipient, long resourceId, String statName) {
     AddStatListenerResponse m = new AddStatListenerResponse();
     m.setRecipient(recipient);
     GemFireStatSampler sampler = null;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleDisconnectMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleDisconnectMessage.java
index 0fbcb3c..1baf38c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleDisconnectMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleDisconnectMessage.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -77,7 +77,7 @@ public class AdminConsoleDisconnectMessage extends PooledDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     InternalDistributedSystem sys = dm.getSystem();
     // DistributionConfig config = sys.getConfig();
     if (alertListenerExpected) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleMessage.java
index d8c9665..d4e9532 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminConsoleMessage.java
@@ -20,15 +20,10 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.logging.log4j.Logger;
-
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.internal.admin.Alert;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.ManagerLogWriter;
 import org.apache.geode.internal.logging.log4j.AlertAppender;
-import org.apache.geode.internal.logging.log4j.LogWriterLogger;
 
 /**
  * A message that is sent to a particular distribution manager to let it know that the sender is an
@@ -49,7 +44,7 @@ public class AdminConsoleMessage extends PooledDistributionMessage {
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     if (this.level != Alert.OFF) {
       AlertAppender.getInstance().addAlertListener(this.getSender(), this.level);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminMultipleReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminMultipleReplyProcessor.java
index 3a5cff9..a0fa2c4 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminMultipleReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminMultipleReplyProcessor.java
@@ -16,7 +16,7 @@ package org.apache.geode.internal.admin.remote;
 
 import java.util.Collection;
 
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -28,7 +28,7 @@ import org.apache.geode.distributed.internal.ReplyProcessor21;
  */
 public class AdminMultipleReplyProcessor extends ReplyProcessor21 {
 
-  public AdminMultipleReplyProcessor(DM dm, Collection initMembers) {
+  public AdminMultipleReplyProcessor(DistributionManager dm, Collection initMembers) {
     super(dm, initMembers);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
index 58c078b..d83d6b7 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminRequest.java
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.admin.RuntimeAdminException;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -71,7 +71,7 @@ public abstract class AdminRequest extends PooledDistributionMessage {
   /**
    * Sends this request, waits for the AdminReponse, and returns it
    */
-  public AdminResponse sendAndWait(DistributionManager dm) {
+  public AdminResponse sendAndWait(ClusterDistributionManager dm) {
     InternalDistributedMember recipient = this.getRecipient();
     if (dm.getId().equals(recipient)) {
       // We're sending this message to ourselves, we won't need a
@@ -128,7 +128,7 @@ public abstract class AdminRequest extends PooledDistributionMessage {
    * outgoing queue.
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     AdminResponse response = null;
     InspectionClasspathManager cpMgr = InspectionClasspathManager.getInstance();
     try {
@@ -151,7 +151,7 @@ public abstract class AdminRequest extends PooledDistributionMessage {
   /**
    * Must return a proper response to this request.
    */
-  protected abstract AdminResponse createResponse(DM dm);
+  protected abstract AdminResponse createResponse(DistributionManager dm);
 
   @Override
   public void toData(DataOutput out) throws IOException {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
index adb72b1..750935b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminResponse.java
@@ -51,7 +51,7 @@ public abstract class AdminResponse extends HighPriorityDistributionMessage
    * This method is invoked on the side that sent the original AdminRequest.
    */
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     AdminWaiters.sendResponse(this);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminWaiters.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminWaiters.java
index b964a4e..d19885a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminWaiters.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminWaiters.java
@@ -22,7 +22,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.admin.OperationCancelledException;
 import org.apache.geode.admin.RuntimeAdminException;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -53,7 +53,7 @@ public class AdminWaiters {
    * @throws RuntimeAdminException if this method is interrupted, times out, cancelled
    *         ({@link #cancelWaiters}), or failed with an exception on the server side.
    */
-  public static AdminResponse sendAndWait(AdminRequest msg, DistributionManager dm) {
+  public static AdminResponse sendAndWait(AdminRequest msg, ClusterDistributionManager dm) {
 
     // Prior to GemFire 4.0 admin messages were only sent to other
     // VMs; it was impossible for an admin message to be destined for
@@ -166,7 +166,7 @@ public class AdminWaiters {
     // that depart.
   }
 
-  public static void cancelRequest(int msgId, DistributionManager dm) {
+  public static void cancelRequest(int msgId, ClusterDistributionManager dm) {
     AdminReplyProcessor processor = (AdminReplyProcessor) ReplyProcessor21.getProcessor(msgId);
     if (processor != null) {
       InternalDistributedMember recipient = processor.getResponder();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertLevelChangeMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertLevelChangeMessage.java
index 442b244..3117654 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertLevelChangeMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertLevelChangeMessage.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.admin.AlertLevel;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.SerialDistributionMessage;
 import org.apache.geode.internal.admin.Alert;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -58,7 +58,7 @@ public class AlertLevelChangeMessage extends SerialDistributionMessage {
   ////////////////////// Instance Methods //////////////////////
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     AlertAppender.getInstance().removeAlertListener(this.getSender());
 
     if (this.newLevel != Alert.OFF) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertListenerMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertListenerMessage.java
index 48b3a37..ee5c68b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertListenerMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertListenerMessage.java
@@ -66,7 +66,7 @@ public class AlertListenerMessage extends PooledDistributionMessage implements A
   }
 
   @Override
-  public void process(DistributionManager dm) {
+  public void process(ClusterDistributionManager dm) {
     RemoteGfManagerAgent agent = dm.getAgent();
     if (agent != null) {
       RemoteGemFireVM mgr = agent.getMemberById(this.getSender());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertsNotificationMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertsNotificationMessage.java
index 4a944dc..4d78e0b 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertsNotificationMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AlertsNotificationMessage.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
 import org.apache.geode.admin.jmx.internal.StatAlertsAggregator;
-import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.internal.admin.StatAlert;
 
@@ -57,7 +57,7 @@ public class AlertsNotificationMessage extends PooledDistributionMessage {
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     // TODO add code to invoke process notification of agrregator
     // TODO: need to check whether it's a valid implimentation
     AdminDistributedSystemImpl ds = AdminDistributedSystemImpl.getConnectedInstance();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AppCacheSnapshotMessage.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AppCacheSnapshotMessage.java
index c8770ce..37fafc4 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AppCacheSnapshotMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AppCacheSnapshotMessage.java
@@ -36,7 +36,7 @@ public class AppCacheSnapshotMessage extends RegionAdminMessage {
   }
 
   @Override
-  protected void process(DistributionManager dm) {
+  protected void process(ClusterDistributionManager dm) {
     Region r = getRegion(dm.getSystem());
     if (r != null) {
       try {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerRequest.java
index 853d5bf..04c4233 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerRequest.java
@@ -17,7 +17,7 @@ package org.apache.geode.internal.admin.remote;
 import java.io.*;
 
 import org.apache.geode.DataSerializer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.internal.admin.CacheInfo;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
@@ -132,7 +132,7 @@ public class BridgeServerRequest extends AdminRequest {
    * Creates a <Code>BridgeServerResponse</code> to this request
    */
   @Override
-  protected AdminResponse createResponse(DM dm) {
+  protected AdminResponse createResponse(DistributionManager dm) {
     return BridgeServerResponse.create(dm, this);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerResponse.java
index 6e9b32d..ddc102d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/BridgeServerResponse.java
@@ -22,7 +22,7 @@ import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.server.CacheServer;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.cache.CacheServerImpl;
 import org.apache.geode.internal.cache.InternalCache;
@@ -44,7 +44,7 @@ public class BridgeServerResponse extends AdminResponse {
   /**
    * Creates a {@code BridgeServerResponse} in response to the given request.
    */
-  static BridgeServerResponse create(DM dm, BridgeServerRequest request) {
+  static BridgeServerResponse create(DistributionManager dm, BridgeServerRequest request) {
     BridgeServerResponse m = new BridgeServerResponse();
     m.setRecipient(request.getSender());
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigRequest.java
index d833507..dba5810 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigRequest.java
@@ -53,7 +53,7 @@ public class CacheConfigRequest extends AdminRequest {
    * Must return a proper response to this request.
    */
   @Override
-  protected AdminResponse createResponse(DM dm) {
+  protected AdminResponse createResponse(DistributionManager dm) {
     return CacheConfigResponse.create(dm, this.getSender(), this.cacheId, this.attributeCode,
         this.newValue);
   }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigResponse.java
index 098d3f1..0aae5ff 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheConfigResponse.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.cache.InternalCache;
@@ -45,8 +45,8 @@ public class CacheConfigResponse extends AdminResponse {
   /**
    * Returns a {@code CacheConfigResponse} that will be returned to the specified recipient.
    */
-  public static CacheConfigResponse create(DM dm, InternalDistributedMember recipient, int cacheId,
-      byte attributeCode, int newValue) {
+  public static CacheConfigResponse create(DistributionManager dm,
+      InternalDistributedMember recipient, int cacheId, byte attributeCode, int newValue) {
     CacheConfigResponse m = new CacheConfigResponse();
     m.setRecipient(recipient);
     try {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoRequest.java
index 2692d28..200e18e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoRequest.java
@@ -46,7 +46,7 @@ public class CacheInfoRequest extends AdminRequest {
    * @param dm
    */
   @Override
-  protected AdminResponse createResponse(DM dm) {
+  protected AdminResponse createResponse(DistributionManager dm) {
     return CacheInfoResponse.create(dm, this.getSender());
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoResponse.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoResponse.java
index bc79498..f6191c5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoResponse.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CacheInfoResponse.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InternalCache;
 
@@ -37,7 +37,8 @@ public class CacheInfoResponse extends AdminResponse {
   /**
    * Returns a {@code CacheInfoResponse} that will be returned to the specified recipient.
    */
-  public static CacheInfoResponse create(DM dm, InternalDistributedMember recipient) {
+  public static CacheInfoResponse create(DistributionManager dm,
+      InternalDistributedMember recipient) {
     CacheInfoResponse m = new CacheInfoResponse();
... 13567 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.