You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2019/11/27 22:41:27 UTC

[geode] branch feature/GEODE-7507 created (now 9e65bd9)

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

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


      at 9e65bd9  GEODE-7507 remove GMSMembership's dependency on DistributionMessage

This branch includes the following new commits:

     new 9e65bd9  GEODE-7507 remove GMSMembership's dependency on DistributionMessage

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[geode] 01/01: GEODE-7507 remove GMSMembership's dependency on DistributionMessage

Posted by bs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9e65bd9bc4d5945acfbc0028eac8c43a0c0a32d5
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Wed Nov 27 14:26:58 2019 -0800

    GEODE-7507 remove GMSMembership's dependency on DistributionMessage
    
    Prior to this change-set the membership module wrapped all messages in a
    GMSMessageAdapter.  This is no longer necessary and I've deleted that
    class.  Instead, our messages now implement GMSMessage (now renamed
    DistributionMessage) and the geode-core abstract DistributionMessage
    class (now renamed ClusterMessage) implements the membership module's
    API.
    
    Most of the files in the diff are only affected by the renaming of
    GMSMessage and DistributionMessage.  The primary changes are in GMSManager
    and DistributionMessage (now named ClusterMessage).
---
 .../geode/ClusterCommunicationsDUnitTest.java      |   4 +-
 .../geode/cache30/ClientServerCCEDUnitTest.java    |   4 +-
 .../DistributedLockServiceDUnitTest.java           |   6 +-
 .../distributed/internal/ProduceDateMessages.java  |   3 +-
 .../streaming/StreamingOperationManyDUnitTest.java |   4 +-
 .../streaming/StreamingOperationOneDUnitTest.java  |   4 +-
 .../cache/BucketCreationCrashRegressionTest.java   |  10 +-
 .../cache/BucketCreationGIIHARegressionTest.java   |   4 +-
 ...ntServerTransactionFailoverDistributedTest.java |  10 +-
 ...iskRecoveryWithVersioningGiiRegressionTest.java |   4 +-
 .../geode/internal/cache/GIIDeltaDUnitTest.java    |   8 +-
 .../internal/cache/GIIFlowControlDUnitTest.java    |   4 +-
 .../cache/InterruptClientServerDUnitTest.java      |   4 +-
 .../geode/internal/cache/InterruptsDUnitTest.java  |   4 +-
 .../cache/NetSearchMessagingDUnitTest.java         |   4 +-
 .../cache/OnRequestImageMessageObserver.java       |   4 +-
 ...RQueryWithPdxDuringRebalanceRegressionTest.java |   4 +-
 .../cache/PersistentRegionRecoveryDUnitTest.java   |   4 +-
 .../cache/backup/BackupDistributedTest.java        |  14 +--
 .../cache/locks/TXLockServiceDUnitTest.java        |   6 +-
 ...BucketCreationCrashCompletesRegressionTest.java |   4 +-
 ...sistentColocatedPartitionedRegionDUnitTest.java |   4 +-
 ...tPartitionHangsDuringRestartRegressionTest.java |   4 +-
 ...PersistentPartitionedRegionDistributedTest.java |   4 +-
 .../PersistentPartitionedRegionRegressionTest.java |   8 +-
 .../StreamingPartitionOperationManyDUnitTest.java  |   4 +-
 .../StreamingPartitionOperationOneDUnitTest.java   |   4 +-
 .../PersistentRVVRecoveryDUnitTest.java            |   4 +-
 .../PersistentRecoveryOrderDUnitTest.java          |  16 +--
 .../cache/versions/TombstoneDUnitTest.java         |   6 +-
 .../pdx/ClientsWithVersioningRetryDUnitTest.java   |   8 +-
 .../apache/geode/pdx/PdxSerializableDUnitTest.java |   4 +-
 .../membership/gms/GMSMembershipJUnitTest.java     |   6 +-
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |  20 ++--
 ...ccessExceptionDisablesServerRegressionTest.java |   4 +-
 .../admin/internal/AbstractHealthEvaluator.java    |   2 +-
 .../internal/ClusterDistributionManager.java       |  27 ++---
 ...istributionMessage.java => ClusterMessage.java} |  82 +++++++++-----
 .../internal/ClusterOperationExecutors.java        |   2 +-
 .../internal/CollectingReplyProcessor.java         |   2 +-
 .../geode/distributed/internal/Distribution.java   |   6 +-
 .../distributed/internal/DistributionImpl.java     |  36 ++++--
 .../distributed/internal/DistributionManager.java  |   2 +-
 .../internal/DistributionMessageObserver.java      |  10 +-
 .../internal/HighPriorityDistributionMessage.java  |   7 +-
 .../distributed/internal/IgnoredByManager.java     |   2 +-
 .../internal/LonerDistributionManager.java         |   2 +-
 .../distributed/internal/MessageWithReply.java     |   2 +-
 .../distributed/internal/OperationExecutors.java   |   2 +-
 .../internal/PooledDistributionMessage.java        |   2 +-
 .../geode/distributed/internal/ReplyException.java |   2 +-
 .../distributed/internal/ReplyProcessor21.java     |  12 +-
 .../geode/distributed/internal/ReplySender.java    |   4 +-
 .../internal/SerialDistributionMessage.java        |   2 +-
 .../distributed/internal/ShutdownMessage.java      |   2 +-
 .../geode/distributed/internal/StartupMessage.java |   2 +-
 .../internal/StartupMessageReplyProcessor.java     |   2 +-
 .../internal/StartupResponseMessage.java           |   2 +-
 .../ThrottlingMemLinkedQueueWithDMStats.java       |   2 +-
 .../internal/WaitForViewInstallation.java          |   2 +-
 .../deadlock/MessageDependencyMonitor.java         |   6 +-
 .../distributed/internal/direct/DirectChannel.java |  12 +-
 .../internal/distribution-overview.html            |   2 +-
 .../internal/locks/DLockQueryProcessor.java        |   4 +-
 .../locks/DLockRecoverGrantorProcessor.java        |   4 +-
 .../internal/locks/DLockReleaseProcessor.java      |   4 +-
 .../internal/locks/DLockRequestProcessor.java      |   4 +-
 .../internal/locks/ElderInitProcessor.java         |   4 +-
 .../internal/locks/GrantorRequestProcessor.java    |   4 +-
 .../locks/NonGrantorDestroyedProcessor.java        |   4 +-
 .../membership/adapter/GMSMessageAdapter.java      | 123 ---------------------
 .../internal/membership/gms/GMSMembership.java     |  41 ++-----
 .../membership/gms/api/DistributionMessage.java    | 119 ++++++++++++++++++++
 .../internal/membership/gms/api/Membership.java    |   1 -
 .../membership/gms/api/MessageListener.java        |   2 -
 .../membership/gms/interfaces/GMSMessage.java      |  57 ----------
 .../membership/gms/interfaces/Manager.java         |  19 +---
 .../membership/gms/interfaces/Messenger.java       |   7 +-
 .../gms/messages/AbstractGMSMessage.java           |  26 +++--
 .../membership/gms/messenger/JGroupsMessenger.java |  50 ++++-----
 .../apache/geode/distributed/internal/package.html |   2 +-
 .../internal/streaming/StreamingOperation.java     |   8 +-
 .../internal/admin/ClientMembershipMessage.java    |   3 +-
 .../admin/remote/AdminMultipleReplyProcessor.java  |   4 +-
 .../internal/admin/remote/AdminReplyProcessor.java |   4 +-
 .../geode/internal/admin/remote/AdminRequest.java  |   2 +-
 .../geode/internal/admin/remote/AdminResponse.java |   2 +-
 .../internal/admin/remote/CompactRequest.java      |   6 +-
 .../admin/remote/MissingPersistentIDsRequest.java  |   4 +-
 .../internal/admin/remote/RemoteGemFireVM.java     |   4 +-
 .../admin/remote/RemoteGfManagerAgent.java         |   4 +-
 .../remote/ShutdownAllGatewayHubsRequest.java      |   4 +-
 .../internal/admin/remote/ShutdownAllRequest.java  |   6 +-
 .../internal/cache/CreateRegionProcessor.java      |   4 +-
 .../geode/internal/cache/DirectReplyMessage.java   |   4 +-
 .../geode/internal/cache/DistTXCommitMessage.java  |   6 +-
 .../internal/cache/DistTXPrecommitMessage.java     |   6 +-
 .../internal/cache/DistTXRollbackMessage.java      |   8 +-
 .../internal/cache/DistributedCacheOperation.java  |  12 +-
 .../DistributedRegionFunctionStreamingMessage.java |   4 +-
 .../geode/internal/cache/EntryEventImpl.java       |   8 +-
 .../apache/geode/internal/cache/FilterProfile.java |   2 +-
 .../internal/cache/FindDurableQueueProcessor.java  |   4 +-
 .../geode/internal/cache/FindRemoteTXMessage.java  |   4 +-
 .../internal/cache/FindVersionTagOperation.java    |   4 +-
 .../internal/cache/InitialImageFlowControl.java    |   4 +-
 .../internal/cache/InitialImageOperation.java      |  16 +--
 .../cache/LatestLastAccessTimeReplyProcessor.java  |   4 +-
 .../cache/MemberFunctionStreamingMessage.java      |   4 +-
 .../cache/PartitionedRegionQueryEvaluator.java     |   8 +-
 .../cache/SearchLoadAndWriteProcessor.java         |   4 +-
 .../geode/internal/cache/StateFlushOperation.java  |   6 +-
 .../geode/internal/cache/TXCommitMessage.java      |   6 +-
 .../internal/cache/TXRemoteCommitMessage.java      |   4 +-
 .../geode/internal/cache/TransactionMessage.java   |   4 +-
 .../internal/cache/UpdateAttributesProcessor.java  |   4 +-
 .../internal/cache/backup/AbortBackupStep.java     |   4 +-
 .../cache/backup/BackupReplyProcessor.java         |   4 +-
 .../geode/internal/cache/backup/BackupStep.java    |   4 +-
 .../internal/cache/backup/FinishBackupStep.java    |   4 +-
 .../cache/backup/FlushToDiskProcessor.java         |   4 +-
 .../internal/cache/backup/FlushToDiskStep.java     |   4 +-
 .../internal/cache/backup/PrepareBackupStep.java   |   4 +-
 .../DistributedRegionFunctionResultWaiter.java     |   4 +-
 .../execute/FunctionStreamingResultCollector.java  |   4 +-
 .../cache/execute/MemberFunctionResultWaiter.java  |   4 +-
 .../execute/MultiRegionFunctionResultWaiter.java   |   4 +-
 .../PartitionedRegionFunctionResultWaiter.java     |   4 +-
 .../cache/execute/StreamingFunctionOperation.java  |   6 +-
 .../AllBucketProfilesUpdateMessage.java            |   4 +-
 .../partitioned/BecomePrimaryBucketMessage.java    |   4 +-
 .../partitioned/BucketProfileUpdateMessage.java    |   4 +-
 .../cache/partitioned/BucketSizeMessage.java       |   4 +-
 .../cache/partitioned/ContainsKeyValueMessage.java |   4 +-
 .../cache/partitioned/CreateBucketMessage.java     |   4 +-
 .../partitioned/DeposePrimaryBucketMessage.java    |   4 +-
 .../internal/cache/partitioned/DumpB2NRegion.java  |   4 +-
 .../cache/partitioned/FetchEntriesMessage.java     |   4 +-
 .../cache/partitioned/FetchEntryMessage.java       |   4 +-
 .../partitioned/FetchPartitionDetailsMessage.java  |   4 +-
 .../internal/cache/partitioned/GetMessage.java     |   4 +-
 .../cache/partitioned/IdentityRequestMessage.java  |   6 +-
 .../cache/partitioned/IdentityUpdateMessage.java   |   4 +-
 .../partitioned/ManageBackupBucketMessage.java     |   4 +-
 .../cache/partitioned/ManageBucketMessage.java     |   4 +-
 .../cache/partitioned/MoveBucketMessage.java       |   4 +-
 .../PRFunctionStreamingResultCollector.java        |   4 +-
 .../cache/partitioned/PRTombstoneMessage.java      |   4 +-
 .../cache/partitioned/PartitionMessage.java        |  10 +-
 .../PartitionMessageWithDirectReply.java           |   4 +-
 .../cache/partitioned/PrimaryRequestMessage.java   |   4 +-
 .../internal/cache/partitioned/PutMessage.java     |   6 +-
 .../cache/partitioned/RemoveBucketMessage.java     |   4 +-
 .../internal/cache/partitioned/SizeMessage.java    |   4 +-
 .../partitioned/StreamingPartitionOperation.java   |  10 +-
 .../cache/persistence/MembershipViewRequest.java   |   6 +-
 .../persistence/PersistentStateQueryMessage.java   |   4 +-
 .../internal/cache/snapshot/FlowController.java    |   6 +-
 .../tier/sockets/ClientDenylistProcessor.java      |   4 +-
 .../cache/tx/RemoteContainsKeyValueMessage.java    |   4 +-
 .../internal/cache/tx/RemoteFetchEntryMessage.java |   4 +-
 .../internal/cache/tx/RemoteFetchKeysMessage.java  |   4 +-
 .../cache/tx/RemoteFetchVersionMessage.java        |   4 +-
 .../geode/internal/cache/tx/RemoteGetMessage.java  |   4 +-
 .../internal/cache/tx/RemoteOperationMessage.java  |  10 +-
 .../tx/RemoteOperationMessageWithDirectReply.java  |   4 +-
 .../geode/internal/cache/tx/RemoteSizeMessage.java |   4 +-
 ...aySenderQueueEntrySynchronizationOperation.java |   4 +-
 ...tilParallelGatewaySenderFlushedCoordinator.java |   4 +-
 .../geode/internal/sequencelog/MessageLogger.java  |   4 +-
 .../org/apache/geode/internal/tcp/Connection.java  |  22 ++--
 .../geode/internal/tcp/DirectReplySender.java      |   4 +-
 .../apache/geode/internal/tcp/MsgDestreamer.java   |  10 +-
 .../org/apache/geode/internal/tcp/MsgReader.java   |   6 +-
 .../org/apache/geode/internal/tcp/MsgStreamer.java |  10 +-
 .../apache/geode/internal/tcp/ServerDelegate.java  |   6 +-
 .../org/apache/geode/internal/tcp/TCPConduit.java  |  10 +-
 .../geode/internal/tcp/VersionedMsgStreamer.java   |   4 +-
 .../org/apache/geode/internal/tcp/package.html     |   2 +-
 .../geode/management/internal/MemberMessenger.java |   4 +-
 .../internal/messages/CompactRequest.java          |   6 +-
 .../internal/DistributionMessageTest.java          |   2 +-
 .../distributed/internal/DistributionTest.java     |  11 +-
 .../internal/StartupMessageJUnitTest.java          |  12 +-
 .../MembershipDependenciesJUnitTest.java           |   4 -
 .../gms/api/MembershipAPIArchUnitTest.java         |   4 +-
 .../cache/PartitionedRegionQueryEvaluatorTest.java |   4 +-
 .../cache/backup/BackupReplyProcessorTest.java     |   6 +-
 .../apache/geode/internal/tcp/ConnectionTest.java  |   4 +-
 .../cache/wan/misc/PDXNewWanDUnitTest.java         |   4 +-
 190 files changed, 717 insertions(+), 765 deletions(-)

diff --git a/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
index 492ec3a..2ba1391 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
@@ -67,9 +67,9 @@ import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.Locator;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -363,7 +363,7 @@ public class ClusterCommunicationsDUnitTest implements Serializable {
    * of SERIAL_ACKED_MESSAGE. Don't forget to reset the registration to
    * SerialAckedMessage at the end of the test.
    */
-  private static class SerialAckedMessageWithBigReply extends DistributionMessage
+  private static class SerialAckedMessageWithBigReply extends ClusterMessage
       implements MessageWithReply, DirectReplyMessage {
     static final int DSFID = SERIAL_ACKED_MESSAGE;
 
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientServerCCEDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientServerCCEDUnitTest.java
index 23d4744..3b3c736 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientServerCCEDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientServerCCEDUnitTest.java
@@ -58,7 +58,7 @@ import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.locks.DLockService;
 import org.apache.geode.distributed.internal.locks.DistributedLockStats;
@@ -441,7 +441,7 @@ public class ClientServerCCEDUnitTest extends JUnit4CacheTestCase {
     public String thName;
 
     @Override
-    public void afterProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void afterProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       thName = Thread.currentThread().getName();
 
       if (message instanceof TombstoneMessage) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
index 3d39ea0..bbd78ed 100755
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
@@ -46,7 +46,7 @@ import org.junit.experimental.categories.Category;
 
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.locks.DLockGrantor;
@@ -2088,7 +2088,7 @@ public final class DistributedLockServiceDUnitTest extends JUnit4DistributedTest
     DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
 
       @Override
-      public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof DLockResponseMessage) {
           DistributedLockService.destroy(serviceName);
         }
@@ -2128,7 +2128,7 @@ public final class DistributedLockServiceDUnitTest extends JUnit4DistributedTest
     DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
 
       @Override
-      public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof DLockRequestMessage) {
           DistributedLockService.destroy(serviceName);
         }
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
index 99d414c..2a937a5 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/ProduceDateMessages.java
@@ -18,6 +18,7 @@ import java.util.Date;
 import java.util.Properties;
 
 import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.internal.Assert;
 
 /**
@@ -36,7 +37,7 @@ public class ProduceDateMessages {
 
       // Make sure that message state was reset
       Assert.assertTrue(message.getDate() == null);
-      Assert.assertTrue(message.getRecipients() == null);
+      Assert.assertTrue(message.getRecipientsArray() == null);
       Assert.assertTrue(message.getSender() == null);
 
       message.setRecipient(DistributionMessage.ALL_RECIPIENTS);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationManyDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationManyDUnitTest.java
index 574f90e..1f3968a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationManyDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationManyDUnitTest.java
@@ -32,7 +32,7 @@ import java.util.concurrent.ConcurrentMap;
 import org.junit.Test;
 
 import org.apache.geode.LogWriter;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -78,7 +78,7 @@ public class StreamingOperationManyDUnitTest extends JUnit4DistributedTestCase {
     }
 
     @Override
-    protected DistributionMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
+    protected ClusterMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
       TestRequestStreamingMessageManyProviderNoExceptions msg =
           new TestRequestStreamingMessageManyProviderNoExceptions();
       msg.setRecipients(recipients);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationOneDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationOneDUnitTest.java
index 47377b4..65e0dfe 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationOneDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/internal/streaming/StreamingOperationOneDUnitTest.java
@@ -33,7 +33,7 @@ import java.util.concurrent.ConcurrentMap;
 import org.junit.Test;
 
 import org.apache.geode.LogWriter;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -86,7 +86,7 @@ public class StreamingOperationOneDUnitTest extends JUnit4DistributedTestCase {
     }
 
     @Override
-    protected DistributionMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
+    protected ClusterMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
       TestRequestStreamingMessageOneProviderNoExceptions msg =
           new TestRequestStreamingMessageOneProviderNoExceptions();
       msg.processorId = processor == null ? 0 : processor.getProcessorId();
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationCrashRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationCrashRegressionTest.java
index 762c0b6..dfd520b 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationCrashRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationCrashRegressionTest.java
@@ -49,7 +49,7 @@ import org.apache.geode.cache.Region;
 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.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.partitioned.ManageBucketMessage;
 import org.apache.geode.internal.cache.partitioned.ManageBucketMessage.ManageBucketReplyMessage;
@@ -231,7 +231,7 @@ public class BucketCreationCrashRegressionTest implements Serializable {
     return new TreeSet<>(region.getDataStore().getAllLocalBucketIds());
   }
 
-  private void handleBeforeProcessMessage(final Class<? extends DistributionMessage> messageClass,
+  private void handleBeforeProcessMessage(final Class<? extends ClusterMessage> messageClass,
       final SerializableRunnableIF runnable) {
     DistributionMessageObserver
         .setInstance(new RunnableBeforeProcessMessageObserver(messageClass, runnable));
@@ -243,17 +243,17 @@ public class BucketCreationCrashRegressionTest implements Serializable {
 
   private class RunnableBeforeProcessMessageObserver extends DistributionMessageObserver {
 
-    private final Class<? extends DistributionMessage> messageClass;
+    private final Class<? extends ClusterMessage> messageClass;
     private final SerializableRunnableIF runnable;
 
-    RunnableBeforeProcessMessageObserver(final Class<? extends DistributionMessage> messageClass,
+    RunnableBeforeProcessMessageObserver(final Class<? extends ClusterMessage> messageClass,
         final SerializableRunnableIF runnable) {
       this.messageClass = messageClass;
       this.runnable = runnable;
     }
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (messageClass.isInstance(message)) {
         try {
           runnable.run();
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java
index f8eb949..b05614f 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/BucketCreationGIIHARegressionTest.java
@@ -26,7 +26,7 @@ import org.apache.geode.cache.AttributesFactory;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage;
 import org.apache.geode.test.dunit.VM;
@@ -105,7 +105,7 @@ public class BucketCreationGIIHARegressionTest extends CacheTestCase {
   private class MyDistributionMessageObserver extends DistributionMessageObserver {
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof RequestImageMessage) {
         RequestImageMessage rim = (RequestImageMessage) message;
         Region region = getCache().getRegion(rim.regionPath);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
index 5710612..fec2e56 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverDistributedTest.java
@@ -43,7 +43,7 @@ import org.apache.geode.cache.client.internal.PoolImpl;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.ServerLocation;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -388,9 +388,9 @@ public class ClientServerTransactionFailoverDistributedTest implements Serializa
           new DistributionMessageObserver() {
             @Override
             public void beforeSendMessage(ClusterDistributionManager dm,
-                DistributionMessage message) {
+                ClusterMessage message) {
               if (message instanceof TXCommitMessage.CommitProcessForTXIdMessage) {
-                InternalDistributedMember m = message.getRecipients()[0];
+                InternalDistributedMember m = message.getRecipientsArray()[0];
                 message.resetRecipients();
                 message.setRecipient(m);
               }
@@ -403,7 +403,7 @@ public class ClientServerTransactionFailoverDistributedTest implements Serializa
           new DistributionMessageObserver() {
             @Override
             public void beforeProcessMessage(ClusterDistributionManager dm,
-                DistributionMessage message) {
+                ClusterMessage message) {
               if (message instanceof TXCommitMessage.CommitProcessForTXIdMessage) {
                 getBlackboard().signalGate("bounce");
               }
@@ -416,7 +416,7 @@ public class ClientServerTransactionFailoverDistributedTest implements Serializa
           new DistributionMessageObserver() {
             @Override
             public void beforeProcessMessage(ClusterDistributionManager dm,
-                DistributionMessage message) {
+                ClusterMessage message) {
               if (message instanceof TXCommitMessage.CommitProcessForTXIdMessage) {
                 getBlackboard().signalGate("bounce");
               }
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/DiskRecoveryWithVersioningGiiRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/DiskRecoveryWithVersioningGiiRegressionTest.java
index f668dea..88eccfd 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/DiskRecoveryWithVersioningGiiRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/DiskRecoveryWithVersioningGiiRegressionTest.java
@@ -64,8 +64,8 @@ import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
  *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.internal.cache.InitialImageOperation$ImageReplyMessage.process(InitialImageOperation.java:1683)
  *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:185)
  *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.ReplyMessage.process(ReplyMessage.java:174)
- *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:301)
- *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:364)
+ *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.ClusterMessage.scheduleAction(ClusterMessage.java:301)
+ *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.ClusterMessage$1.run(ClusterMessage.java:364)
  *     at Remote Member 'frodo(30627)<v17>:55972' in java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  *     at Remote Member 'frodo(30627)<v17>:55972' in java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  *     at Remote Member 'frodo(30627)<v17>:55972' in com.gemstone.gemfire.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:684)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
index 93d9c7c..1c0cf61 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
@@ -46,8 +46,8 @@ import org.apache.geode.cache.RegionAttributes;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.HeapDataOutputStream;
@@ -2090,7 +2090,7 @@ public class GIIDeltaDUnitTest extends JUnit4CacheTestCase {
 
           @Override
           public void beforeSendMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof TombstoneMessage
                 && ((TombstoneMessage) message).regionPath.contains(REGION_NAME)) {
               System.err.println("DAN DEBUG  about to send tombstone message, starting up R - "
@@ -2114,7 +2114,7 @@ public class GIIDeltaDUnitTest extends JUnit4CacheTestCase {
         DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
           @Override
           public void afterProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof TombstoneMessage
                 && ((TombstoneMessage) message).regionPath.contains(REGION_NAME)) {
               System.err.println(
@@ -2803,7 +2803,7 @@ public class GIIDeltaDUnitTest extends JUnit4CacheTestCase {
     }
 
     @Override
-    public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
       VersionTag tag = null;
       if (message instanceof UpdateMessage) {
         UpdateMessage um = (UpdateMessage) message;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIFlowControlDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIFlowControlDUnitTest.java
index ba2f284..0c4b792 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIFlowControlDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/GIIFlowControlDUnitTest.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.InitialImageOperation.ImageReplyMessage;
 import org.apache.geode.test.awaitility.GeodeAwaitility;
@@ -470,7 +470,7 @@ public class GIIFlowControlDUnitTest extends JUnit4CacheTestCase {
     private volatile boolean started = false;
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (started && message instanceof ImageReplyMessage) {
         messageCount.incrementAndGet();
         try {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptClientServerDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptClientServerDUnitTest.java
index 47fd9c6..a5e6765 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptClientServerDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptClientServerDUnitTest.java
@@ -31,7 +31,7 @@ import org.apache.geode.cache.client.ClientCacheFactory;
 import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.AvailablePortHelper;
 import org.apache.geode.internal.cache.UpdateOperation.UpdateMessage;
@@ -107,7 +107,7 @@ public class InterruptClientServerDUnitTest extends JUnit4CacheTestCase {
 
           @Override
           public void beforeProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof UpdateMessage
                 && ((UpdateMessage) message).regionPath.contains("region")
                 && doInterrupt.compareAndSet(true, false)) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptsDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptsDUnitTest.java
index 54bc3cd..091ac46 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptsDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/InterruptsDUnitTest.java
@@ -26,7 +26,7 @@ import org.junit.Test;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.UpdateOperation.UpdateMessage;
 import org.apache.geode.test.dunit.AsyncInvocation;
@@ -97,7 +97,7 @@ public class InterruptsDUnitTest extends JUnit4CacheTestCase {
 
           @Override
           public void beforeProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof UpdateMessage
                 && ((UpdateMessage) message).regionPath.contains("region")
                 && doInterrupt.compareAndSet(true, false)) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/NetSearchMessagingDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/NetSearchMessagingDUnitTest.java
index 5d07a8b..e7f89b6 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/NetSearchMessagingDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/NetSearchMessagingDUnitTest.java
@@ -34,7 +34,7 @@ import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.cache.SubscriptionAttributes;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.cache.SearchLoadAndWriteProcessor.NetSearchRequestMessage;
@@ -415,7 +415,7 @@ public class NetSearchMessagingDUnitTest extends JUnit4CacheTestCase {
         DistributionMessageObserver ob = new DistributionMessageObserver() {
           @Override
           public void beforeProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof NetSearchRequestMessage) {
               DistributionMessageObserver.setInstance(null);
               disconnectFromDS();
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/OnRequestImageMessageObserver.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/OnRequestImageMessageObserver.java
index e64cbb1..f17d985 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/OnRequestImageMessageObserver.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/OnRequestImageMessageObserver.java
@@ -15,7 +15,7 @@
 package org.apache.geode.internal.cache;
 
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 
 public abstract class OnRequestImageMessageObserver extends DistributionMessageObserver {
@@ -29,7 +29,7 @@ public abstract class OnRequestImageMessageObserver extends DistributionMessageO
   }
 
   @Override
-  public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+  public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
     if (message instanceof InitialImageOperation.RequestImageMessage) {
       InitialImageOperation.RequestImageMessage rim =
           (InitialImageOperation.RequestImageMessage) message;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PRQueryWithPdxDuringRebalanceRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PRQueryWithPdxDuringRebalanceRegressionTest.java
index e69f466..c9ed8b0 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PRQueryWithPdxDuringRebalanceRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PRQueryWithPdxDuringRebalanceRegressionTest.java
@@ -40,7 +40,7 @@ import org.apache.geode.cache.query.QueryInvocationTargetException;
 import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.TypeMismatchException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.partitioned.QueryMessage;
 import org.apache.geode.test.dunit.VM;
@@ -107,7 +107,7 @@ public class PRQueryWithPdxDuringRebalanceRegressionTest implements Serializable
 
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof QueryMessage) {
             RebalanceOperation rebalance =
                 cacheRule.getCache().getResourceManager().createRebalanceFactory().start();
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PersistentRegionRecoveryDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PersistentRegionRecoveryDUnitTest.java
index 77f2006..3d35322 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PersistentRegionRecoveryDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PersistentRegionRecoveryDUnitTest.java
@@ -35,7 +35,7 @@ import org.apache.geode.cache.DiskStoreFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.backup.BackupOperation;
 import org.apache.geode.logging.internal.log4j.api.LogService;
@@ -420,7 +420,7 @@ public class PersistentRegionRecoveryDUnitTest extends JUnit4DistributedTestCase
           new DistributionMessageObserver() {
             @Override
             public void beforeProcessMessage(ClusterDistributionManager dm,
-                DistributionMessage message) {
+                ClusterMessage message) {
               if (message instanceof InitialImageOperation.RequestImageMessage) {
                 InitialImageOperation.RequestImageMessage rim =
                     (InitialImageOperation.RequestImageMessage) message;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/backup/BackupDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/backup/BackupDistributedTest.java
index 92c792c..dc5f751 100755
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/backup/BackupDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/backup/BackupDistributedTest.java
@@ -69,7 +69,7 @@ import org.apache.geode.cache.control.RebalanceResults;
 import org.apache.geode.cache.persistence.PartitionOfflineException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.distributed.internal.locks.DLockRequestProcessor;
@@ -605,7 +605,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
       private volatile boolean done;
 
       @Override
-      public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
         // the bucket move will send a destroy region message.
         if (message instanceof DestroyRegionMessage && !done) {
           replyId = message.getProcessorId();
@@ -613,7 +613,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
       }
 
       @Override
-      public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof ReplyMessage && replyId != -0xBAD
             && replyId == message.getProcessorId() && !done && count.incrementAndGet() == 2) {
           task.run();
@@ -630,7 +630,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
       private volatile boolean done;
 
       @Override
-      public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
         // the bucket move will send a destroy region message.
         if (message instanceof DestroyRegionMessage && !done) {
           task.run();
@@ -652,7 +652,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
     return new DistributionMessageObserver() {
 
       @Override
-      public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof PrepareBackupRequest) {
           DistributionMessageObserver.setInstance(null);
           IOException exception = new IOException(exceptionMessage);
@@ -669,7 +669,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
     return new DistributionMessageObserver() {
 
       @Override
-      public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof PrepareBackupRequest) {
           DistributionMessageObserver.setInstance(null);
           logger.info("#### After getting into observer to create regionName2 in vm1");
@@ -689,7 +689,7 @@ public class BackupDistributedTest extends JUnit4DistributedTestCase implements
     return new DistributionMessageObserver() {
 
       @Override
-      public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+      public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
         if (message instanceof DLockRequestProcessor.DLockRequestMessage) {
           DistributionMessageObserver.setInstance(null);
           try {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
index 1cb1ce3..0f27b9b 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
@@ -37,8 +37,8 @@ import org.junit.experimental.categories.Category;
 import org.apache.geode.cache.CommitConflictException;
 import org.apache.geode.distributed.DistributedLockService;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -299,7 +299,7 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase {
     }
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof DLockRecoverGrantorMessage) {
         synchronized (preventingMessageProcessing) {
           preventingMessageProcessing[0] = true;
@@ -865,7 +865,7 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       DLockRecoverGrantorProcessor.DLockRecoverGrantorReplyMessage reply =
           (DLockRecoverGrantorProcessor.DLockRecoverGrantorReplyMessage) msg;
       testTXRecoverGrantor_replyCode_PASS =
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/BucketCreationCrashCompletesRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/BucketCreationCrashCompletesRegressionTest.java
index 2f7f46b..24a2c62 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/BucketCreationCrashCompletesRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/BucketCreationCrashCompletesRegressionTest.java
@@ -38,7 +38,7 @@ import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.ForceReattemptException;
@@ -228,7 +228,7 @@ public class BucketCreationCrashCompletesRegressionTest implements Serializable
     }
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof ManageBucketMessage) {
         vm.invoke(() -> crashDistributedSystem(cacheRule.getSystem()));
       }
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
index 97dc68b..a50c1e8 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
@@ -55,8 +55,8 @@ import org.apache.geode.cache.control.RebalanceOperation;
 import org.apache.geode.cache.control.RebalanceResults;
 import org.apache.geode.cache.persistence.PartitionOfflineException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.cache.ColocationLogger;
@@ -1907,7 +1907,7 @@ public class PersistentColocatedPartitionedRegionDUnitTest
         DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
           @Override
           public void beforeProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof RequestImageMessage) {
               if (((RequestImageMessage) message).regionPath.contains("region2")) {
                 DistributionMessageObserver.setInstance(null);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionHangsDuringRestartRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionHangsDuringRestartRegressionTest.java
index 8647e84..eb81874 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionHangsDuringRestartRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionHangsDuringRestartRegressionTest.java
@@ -44,7 +44,7 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.persistence.PartitionOfflineException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage;
 import org.apache.geode.internal.cache.InternalCache;
@@ -237,7 +237,7 @@ public class PersistentPartitionHangsDuringRestartRegressionTest implements Seri
   private class WaitToBounceWhenImageRequested extends DistributionMessageObserver
       implements Serializable {
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof RequestImageMessage) {
         RequestImageMessage requestImageMessage = (RequestImageMessage) message;
         // Don't bounce until we see a bucket
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDistributedTest.java
index af4587f..3db56b1 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDistributedTest.java
@@ -83,7 +83,7 @@ import org.apache.geode.cache.persistence.RevokeFailedException;
 import org.apache.geode.cache.persistence.RevokedPersistentDataException;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -1779,7 +1779,7 @@ public class PersistentPartitionedRegionDistributedTest implements Serializable
 
     @Override
     public void beforeSendMessage(final ClusterDistributionManager dm,
-        final DistributionMessage message) {
+        final ClusterMessage message) {
       if (message instanceof RequestImageMessage) {
         RequestImageMessage requestImageMessage = (RequestImageMessage) message;
         // make sure this is a bucket region doing a GII
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionRegressionTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionRegressionTest.java
index 58df6b2..65c38a9 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionRegressionTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionRegressionTest.java
@@ -46,7 +46,7 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.persistence.PartitionOfflineException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage;
@@ -281,7 +281,7 @@ public class PersistentPartitionedRegionRegressionTest implements Serializable {
     vm0.invoke(() -> {
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
         @Override
-        public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+        public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
           if (message instanceof ManageBucketMessage.ManageBucketReplyMessage) {
             Cache cache = getCache();
             disconnectFromDS();
@@ -347,7 +347,7 @@ public class PersistentPartitionedRegionRegressionTest implements Serializable {
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof RequestImageMessage) {
             RequestImageMessage requestImageMessage = (RequestImageMessage) message;
             if (requestImageMessage.regionPath.contains("_0")) {
@@ -399,7 +399,7 @@ public class PersistentPartitionedRegionRegressionTest implements Serializable {
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof RequestImageMessage) {
             RequestImageMessage requestImageMessage = (RequestImageMessage) message;
             if (requestImageMessage.regionPath.contains("_0")) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationManyDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationManyDUnitTest.java
index 76e8a43..1aa61a4 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationManyDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationManyDUnitTest.java
@@ -39,7 +39,7 @@ import org.apache.geode.cache.PartitionAttributes;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.RegionAttributes;
 import org.apache.geode.cache30.CacheSerializableRunnable;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -129,7 +129,7 @@ public class StreamingPartitionOperationManyDUnitTest extends JUnit4CacheTestCas
     }
 
     @Override
-    protected DistributionMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
+    protected ClusterMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
       TestStreamingPartitionMessageManyProviderNoExceptions msg =
           new TestStreamingPartitionMessageManyProviderNoExceptions(recipients, this.regionId,
               processor);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationOneDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationOneDUnitTest.java
index 51233a6..5e37479 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationOneDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperationOneDUnitTest.java
@@ -42,7 +42,7 @@ import org.apache.geode.cache.PartitionAttributes;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.RegionAttributes;
 import org.apache.geode.cache30.CacheSerializableRunnable;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -137,7 +137,7 @@ public class StreamingPartitionOperationOneDUnitTest extends JUnit4CacheTestCase
     }
 
     @Override
-    protected DistributionMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
+    protected ClusterMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
       TestStreamingPartitionMessageOneProviderNoExceptions msg =
           new TestStreamingPartitionMessageOneProviderNoExceptions(recipients, this.regionId,
               processor);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRVVRecoveryDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRVVRecoveryDUnitTest.java
index 9ccf33b..e8abcb6 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRVVRecoveryDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRVVRecoveryDUnitTest.java
@@ -59,7 +59,7 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.RegionFactory;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.HeapDataOutputStream;
 import org.apache.geode.internal.cache.CacheObserverAdapter;
@@ -533,7 +533,7 @@ public class PersistentRVVRecoveryDUnitTest extends PersistentReplicatedTestBase
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
 
         @Override
-        public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage msg) {
+        public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage msg) {
           if (msg instanceof InitialImageOperation.RequestImageMessage) {
             if (((InitialImageOperation.RequestImageMessage) msg).regionPath.contains(regionName)) {
               createData(vm0, 0, 1, "value4");
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRecoveryOrderDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRecoveryOrderDUnitTest.java
index 9817e11..19642c0 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRecoveryOrderDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/persistence/PersistentRecoveryOrderDUnitTest.java
@@ -68,7 +68,7 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.LockServiceDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.HeapDataOutputStream;
@@ -523,7 +523,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
         @Override
         public void beforeSendMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof PrepareNewPersistentMemberMessage) {
             DistributionMessageObserver.setInstance(null);
             system = dm.getSystem();
@@ -766,7 +766,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof RequestImageMessage) {
             DistributionMessageObserver.setInstance(null);
             system = dm.getSystem();
@@ -833,7 +833,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof DestroyRegionMessage) {
             createPersistentRegionAsync(vm2);
             try {
@@ -885,7 +885,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof PrepareNewPersistentMemberMessage) {
             DistributionMessageObserver.setInstance(null);
             system = dm.getSystem();
@@ -952,7 +952,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
         @Override
         public void beforeProcessMessage(ClusterDistributionManager dm,
-            DistributionMessage message) {
+            ClusterMessage message) {
           if (message instanceof RequestImageMessage) {
             Region<String, String> region = getCache().getRegion(regionName);
 
@@ -1206,7 +1206,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
           @Override
           public void beforeSendMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof AbstractUpdateMessage) {
               try {
                 Thread.sleep(2000);
@@ -1218,7 +1218,7 @@ public class PersistentRecoveryOrderDUnitTest extends PersistentReplicatedTestBa
 
           @Override
           public void afterProcessMessage(ClusterDistributionManager dm,
-              DistributionMessage message) {
+              ClusterMessage message) {
             if (message instanceof AbstractUpdateMessage) {
               DistributionMessageObserver.setInstance(null);
             }
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java
index cf4dcb6..45e6fa5 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java
@@ -26,7 +26,7 @@ import org.junit.Test;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.DestroyOperation;
 import org.apache.geode.internal.cache.DistributedTombstoneOperation;
@@ -139,7 +139,7 @@ public class TombstoneDUnitTest extends JUnit4CacheTestCase {
     CountDownLatch tombstoneGcLatch = new CountDownLatch(1);
 
     @Override
-    public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       // Allow destroy with higher version to complete first.
       if (message instanceof DestroyOperation.DestroyMessage) {
         // wait for tombstoneGC message to complete.
@@ -167,7 +167,7 @@ public class TombstoneDUnitTest extends JUnit4CacheTestCase {
     }
 
     @Override
-    public void afterProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void afterProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof DestroyOperation.DestroyMessage) {
         // Notify the destroy with smaller version to continue.
         synchronized (this) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/pdx/ClientsWithVersioningRetryDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/pdx/ClientsWithVersioningRetryDUnitTest.java
index ada2a68..a29fdd3 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/pdx/ClientsWithVersioningRetryDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/pdx/ClientsWithVersioningRetryDUnitTest.java
@@ -45,8 +45,8 @@ import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.AvailablePortHelper;
 import org.apache.geode.internal.cache.DistributedCacheOperation;
@@ -270,7 +270,7 @@ public class ClientsWithVersioningRetryDUnitTest extends JUnit4CacheTestCase {
 
               @Override
               public void beforeSendMessage(ClusterDistributionManager dm,
-                  DistributionMessage message) {
+                  ClusterMessage message) {
                 if (message instanceof DistributedCacheOperation.CacheOperationMessage) {
                   DistributedCacheOperation.CacheOperationMessage com =
                       (DistributedCacheOperation.CacheOperationMessage) message;
@@ -378,7 +378,7 @@ public class ClientsWithVersioningRetryDUnitTest extends JUnit4CacheTestCase {
 
               @Override
               public void beforeSendMessage(ClusterDistributionManager dm,
-                  DistributionMessage message) {
+                  ClusterMessage message) {
                 if (message instanceof DistributedPutAllOperation.PutAllMessage) {
                   DistributionMessageObserver.setInstance(null);
                   disconnectFromDS(vm1);
@@ -483,7 +483,7 @@ public class ClientsWithVersioningRetryDUnitTest extends JUnit4CacheTestCase {
 
                   @Override
                   public void beforeProcessMessage(ClusterDistributionManager dm,
-                      DistributionMessage msg) {
+                      ClusterMessage msg) {
                     if (msg instanceof DistributedPutAllOperation.PutAllMessage) {
                       DistributionMessageObserver.setInstance(null);
                       Wait.pause(
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java
index 8d748eb..7b5223a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java
@@ -41,7 +41,7 @@ import org.apache.geode.cache.TransactionListener;
 import org.apache.geode.cache.TransactionWriter;
 import org.apache.geode.cache.TransactionWriterException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.DistributedCacheOperation;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
@@ -278,7 +278,7 @@ public class PdxSerializableDUnitTest extends JUnit4CacheTestCase {
       final DUnitBlackboard bb = getBlackboard();
       DistributionMessageObserver.setInstance(new DistributionMessageObserver() {
         @Override
-        public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage msg) {
+        public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage msg) {
           if (msg instanceof DistributedCacheOperation.CacheOperationMessage) {
             try {
               DistributedCacheOperation.CacheOperationMessage cmsg =
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
index cf56c83..a16711f 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMembershipJUnitTest.java
@@ -54,12 +54,12 @@ import org.apache.geode.distributed.internal.HighPriorityAckedMessage;
 import org.apache.geode.distributed.internal.direct.DirectChannel;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
-import org.apache.geode.distributed.internal.membership.adapter.GMSMessageAdapter;
 import org.apache.geode.distributed.internal.membership.adapter.LocalViewMessage;
 import org.apache.geode.distributed.internal.membership.adapter.ServiceConfig;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembership.StartupEvent;
 import org.apache.geode.distributed.internal.membership.gms.Services.Stopper;
 import org.apache.geode.distributed.internal.membership.gms.api.Authenticator;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.LifecycleListener;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.MembershipConfig;
@@ -178,8 +178,8 @@ public class GMSMembershipJUnitTest {
         members.stream().map(x -> ((MemberIdentifier) x)).collect(Collectors.toList());
     manager.getGMSManager().installView(new GMSMembershipView(myGMSMemberId, 1, gmsMembers));
     Set<InternalDistributedMember> failures =
-        manager.send(m.getRecipients(), m);
-    verify(messenger).send(isA(GMSMessageAdapter.class));
+        manager.send(m.getRecipientsArray(), m);
+    verify(messenger).send(isA(DistributionMessage.class));
     if (failures != null) {
       assertEquals(0, failures.size());
     }
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index 27d43a6..7f1f5d5 100755
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@ -80,9 +80,9 @@ import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.MemberIdentifierFactoryImpl;
 import org.apache.geode.distributed.internal.membership.gms.Services;
 import org.apache.geode.distributed.internal.membership.gms.Services.Stopper;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.MembershipConfig;
-import org.apache.geode.distributed.internal.membership.gms.interfaces.GMSMessage;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.HealthMonitor;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.JoinLeave;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.Manager;
@@ -153,10 +153,6 @@ public class JGroupsMessengerJUnitTest {
 
     manager = mock(Manager.class);
     when(manager.isMulticastAllowed()).thenReturn(enableMcast);
-    when(manager.wrapMessage(any(Object.class)))
-        .thenAnswer(invocation -> invocation.getArgument(0));
-    when(manager.unwrapMessage(any(GMSMessage.class)))
-        .thenAnswer(invocation -> invocation.getArgument(0));
 
     healthMonitor = mock(HealthMonitor.class);
 
@@ -249,7 +245,7 @@ public class JGroupsMessengerJUnitTest {
   public void normalMessagesUseFlowControl() throws Exception {
     initMocks(false);
     Message jgmsg = new Message();
-    GMSMessage dmsg = mock(GMSMessage.class);
+    DistributionMessage dmsg = mock(DistributionMessage.class);
     when(dmsg.isHighPriority()).thenReturn(false);
     messenger.setMessageFlags(dmsg, jgmsg);
     assertFalse("expected flow-control to be used: " + jgmsg,
@@ -260,7 +256,7 @@ public class JGroupsMessengerJUnitTest {
   public void highPriorityMessagesBypassFlowControl() throws Exception {
     initMocks(false);
     Message jgmsg = new Message();
-    GMSMessage dmsg = mock(GMSMessage.class);
+    DistributionMessage dmsg = mock(DistributionMessage.class);
     when(dmsg.isHighPriority()).thenReturn(true);
     messenger.setMessageFlags(dmsg, jgmsg);
     assertTrue("expected flow-control to not be used: " + jgmsg,
@@ -869,7 +865,7 @@ public class JGroupsMessengerJUnitTest {
         recipients.get(0), Version.getCurrentVersion().ordinal());
     when(manager.shutdownInProgress()).thenReturn(Boolean.TRUE);
     receiver.receive(msg);
-    verify(manager, never()).processMessage(isA(GMSMessage.class));
+    verify(manager, never()).processMessage(isA(DistributionMessage.class));
     verify(services.getStatistics(), times(3)).startUDPDispatchRequest();
     verify(services.getStatistics(), times(3)).endUDPDispatchRequest(anyLong());
   }
@@ -996,7 +992,7 @@ public class JGroupsMessengerJUnitTest {
 
     DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
 
-    GMSMessage distributionMessage =
+    DistributionMessage distributionMessage =
         messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
 
     assertEquals(gfmsg, distributionMessage);
@@ -1039,7 +1035,7 @@ public class JGroupsMessengerJUnitTest {
 
     messenger.addRequestId(1, messenger.getMemberID());
 
-    GMSMessage distributionMessage =
+    DistributionMessage distributionMessage =
         messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
 
     assertEquals(gfmsg, distributionMessage);
@@ -1074,7 +1070,7 @@ public class JGroupsMessengerJUnitTest {
 
     DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
 
-    GMSMessage distributionMessage =
+    DistributionMessage distributionMessage =
         messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
 
     assertEquals(gfmsg, distributionMessage);
@@ -1113,7 +1109,7 @@ public class JGroupsMessengerJUnitTest {
 
     messenger.addRequestId(1, messenger.getMemberID());
 
-    GMSMessage gfMessageAtOtherMbr =
+    DistributionMessage gfMessageAtOtherMbr =
         messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
 
     assertEquals(gfmsg, gfMessageAtOtherMbr);
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/DiskAccessExceptionDisablesServerRegressionTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/DiskAccessExceptionDisablesServerRegressionTest.java
index f3887e2..e223464 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/DiskAccessExceptionDisablesServerRegressionTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/DiskAccessExceptionDisablesServerRegressionTest.java
@@ -60,8 +60,8 @@ import org.apache.geode.cache.RegionShortcut;
  *     at com.gemstone.gemfire.internal.cache.AbstractUpdateOperation$AbstractUpdateMessage.operateOnRegion(AbstractUpdateOperation.java:154)
  *     at com.gemstone.gemfire.internal.cache.DistributedCacheOperation$CacheOperationMessage.basicProcess(DistributedCacheOperation.java:487)
  *     at com.gemstone.gemfire.internal.cache.DistributedCacheOperation$CacheOperationMessage.process(DistributedCacheOperation.java:404)
- *     at com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:242)
- *     at com.gemstone.gemfire.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:287)
+ *     at com.gemstone.gemfire.distributed.internal.ClusterMessage.scheduleAction(ClusterMessage.java:242)
+ *     at com.gemstone.gemfire.distributed.internal.ClusterMessage.schedule(ClusterMessage.java:287)
  *     at com.gemstone.gemfire.distributed.internal.DistributionManager.scheduleIncomingMessage(DistributionManager.java:2732)
  *     at com.gemstone.gemfire.distributed.internal.DistributionManager.handleIncomingDMsg(DistributionManager.java:2424)
  *     at com.gemstone.gemfire.distributed.internal.DistributionManager$MyListener.messageReceived(DistributionManager.java:3585)
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 f165493..4f047c7 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
@@ -52,7 +52,7 @@ public abstract class AbstractHealthEvaluator {
    * <code>GemFireHealthConfig</code> and <code>DistributionManager</code>.
    *
    * Originally, this method took an <code>InternalDistributedSystem</code>, but we found there were
-   * race conditions during initialization. Namely, that a <code>DistributionMessage</code> can be
+   * race conditions during initialization. Namely, that a <code>ClusterMessage</code> can be
    * processed before the <code>InternalDistributedSystem</code>'s <code>DistributionManager</code>
    * is set.
    */
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 05e22ac..47f37ea 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -62,6 +62,7 @@ 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.MembershipView;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberData;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifierFactory;
@@ -87,19 +88,19 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
 
 /**
  * The <code>DistributionManager</code> uses a {@link Membership} to distribute
- * {@link DistributionMessage messages}. It also reports on who is currently in the distributed
+ * {@link ClusterMessage 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 that wishes to send a {@link ClusterMessage} must get the
  * <code>DistributionManager</code> and invoke {@link #putOutgoing}.
  *
  * <P>
  *
- * @see DistributionMessage#process
+ * @see ClusterMessage#process
  * @see IgnoredByManager
  */
 public class ClusterDistributionManager implements DistributionManager {
@@ -748,7 +749,7 @@ public class ClusterDistributionManager implements DistributionManager {
    *
    * @param msg the messsage that is currently being sent
    */
-  private void waitUntilReadyToSendMsgs(DistributionMessage msg) {
+  private void waitUntilReadyToSendMsgs(ClusterMessage msg) {
     if (readyToSendMsgs) {
       return;
     }
@@ -1060,7 +1061,7 @@ public class ClusterDistributionManager implements DistributionManager {
   }
 
   @Override
-  public Set<InternalDistributedMember> putOutgoing(final DistributionMessage msg) {
+  public Set<InternalDistributedMember> putOutgoing(final ClusterMessage msg) {
     try {
       DistributionMessageObserver observer = DistributionMessageObserver.getInstance();
       if (observer != null) {
@@ -1828,7 +1829,7 @@ public class ClusterDistributionManager implements DistributionManager {
     if (logger.isDebugEnabled()) {
       logger.debug("Received message '{}' from <{}>", message, message.getSender());
     }
-    scheduleIncomingMessage(message);
+    scheduleIncomingMessage((ClusterMessage) message);
   }
 
   /**
@@ -1939,7 +1940,7 @@ public class ClusterDistributionManager implements DistributionManager {
     try {
       // m.resetTimestamp(); // nanotimers across systems don't match
       long startTime = DistributionStats.getStatTime();
-      sendViaMembershipManager(m.getRecipients(), m, this, stats);
+      sendViaMembershipManager(m.getRecipientsArray(), m, this, stats);
       stats.incSentMessages(1L);
       if (DistributionStats.enableClockStats) {
         stats.incSentMessagesTime(DistributionStats.getStatTime() - startTime);
@@ -1963,12 +1964,12 @@ public class ClusterDistributionManager implements DistributionManager {
    *         all received it or it was sent to {@link DistributionMessage#ALL_RECIPIENTS}.
    * @throws NotSerializableException If <code>message</code> cannot be serialized
    */
-  Set<InternalDistributedMember> sendOutgoing(DistributionMessage message)
+  Set<InternalDistributedMember> sendOutgoing(ClusterMessage message)
       throws NotSerializableException {
     long startTime = DistributionStats.getStatTime();
 
     Set<InternalDistributedMember> result =
-        sendViaMembershipManager(message.getRecipients(), message, this, stats);
+        sendViaMembershipManager(message.getRecipientsArray(), message, this, stats);
     long endTime = 0L;
     if (DistributionStats.enableClockStats) {
       endTime = NanoTimer.getTime();
@@ -1996,7 +1997,7 @@ public class ClusterDistributionManager implements DistributionManager {
    * @return recipients who did not receive the message
    * @throws NotSerializableException If <codE>message</code> cannot be serialized
    */
-  private Set<InternalDistributedMember> sendMessage(DistributionMessage message)
+  private Set<InternalDistributedMember> sendMessage(ClusterMessage message)
       throws NotSerializableException {
     try {
       // Verify we're not too far into the shutdown
@@ -2020,7 +2021,7 @@ public class ClusterDistributionManager implements DistributionManager {
       if (message == null || message.forAll()) {
         return null;
       }
-      return new HashSet<>(Arrays.asList(message.getRecipients()));
+      return new HashSet<>(Arrays.asList(message.getRecipientsArray()));
     }
   }
 
@@ -2031,7 +2032,7 @@ public class ClusterDistributionManager implements DistributionManager {
    */
   private Set<InternalDistributedMember> sendViaMembershipManager(
       InternalDistributedMember[] destinations,
-      DistributionMessage content, ClusterDistributionManager dm, DistributionStats stats)
+      ClusterMessage content, ClusterDistributionManager dm, DistributionStats stats)
       throws NotSerializableException {
     if (distribution == null) {
       logger.warn("Attempting a send to a disconnected DistributionManager");
@@ -2048,7 +2049,7 @@ public class ClusterDistributionManager implements DistributionManager {
   /**
    * Schedule a given message appropriately, depending upon its executor kind.
    */
-  private void scheduleIncomingMessage(DistributionMessage message) {
+  private void scheduleIncomingMessage(ClusterMessage 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
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/ClusterMessage.java
similarity index 91%
rename from geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionMessage.java
rename to geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterMessage.java
index 2eabdf7..b6f0a61 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/ClusterMessage.java
@@ -19,6 +19,8 @@ import java.io.DataOutput;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 
@@ -27,15 +29,14 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.InternalGemFireException;
 import org.apache.geode.SystemFailure;
-import org.apache.geode.annotations.Immutable;
-import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.deadlock.MessageDependencyMonitor;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
+import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.cache.EventID;
 import org.apache.geode.internal.logging.log4j.LogMarker;
 import org.apache.geode.internal.sequencelog.MessageLogger;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
 import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.internal.serialization.Version;
@@ -45,7 +46,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
 
 /**
  * <P>
- * A <code>DistributionMessage</code> carries some piece of information to a distribution manager.
+ * A <code>ClusterMessage</code> carries some piece of information to a distribution manager.
  * </P>
  *
  * <P>
@@ -53,11 +54,12 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  * {@link org.apache.geode.distributed.internal.PooledDistributionMessage}. Messages that must be
  * processed serially in the order they were received can extend
  * {@link org.apache.geode.distributed.internal.SerialDistributionMessage}. To customize the
- * sequentialness/thread requirements of a message, extend DistributionMessage and implement
+ * sequentialness/thread requirements of a message, extend ClusterMessage and implement
  * getExecutor().
  * </P>
  */
-public abstract class DistributionMessage implements DataSerializableFixedID, Cloneable {
+public abstract class ClusterMessage
+    implements DistributionMessage, Cloneable {
 
   /**
    * WARNING: setting this to true may break dunit tests.
@@ -69,12 +71,6 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
 
   private static final Logger logger = LogService.getLogger();
 
-  /**
-   * Indicates that a distribution message should be sent to all other distribution managers.
-   */
-  @Immutable
-  public static final InternalDistributedMember ALL_RECIPIENTS = null;
-
   // common flags used by operation messages
   /** Keep this compatible with the other GFE layer PROCESSOR_ID flags. */
   protected static final short HAS_PROCESSOR_ID = 0x1;
@@ -92,6 +88,12 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   /** the unreserved flags start for child classes */
   protected static final short UNRESERVED_FLAGS_START = (HAS_PROCESSOR_TYPE << 1);
 
+  public static final InternalDistributedMember[] EMPTY_RECIPIENTS_ARRAY =
+      new InternalDistributedMember[0];
+
+  public static final List<MemberIdentifier> ALL_RECIPIENTS_LIST =
+      Collections.singletonList(null);
+
   //////////////////// Instance Fields ////////////////////
 
   /** The sender of this message */
@@ -124,7 +126,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
 
   ////////////////////// Constructors //////////////////////
 
-  protected DistributionMessage() {
+  protected ClusterMessage() {
     this.timeStamp = DistributionStats.getStatTime();
   }
 
@@ -206,7 +208,8 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   }
 
   /**
-   * Sets the intended recipient of the message. If recipient is {@link #ALL_RECIPIENTS} then the
+   * Sets the intended recipient of the message. If recipient is DistributionMessage.ALL_RECIPIENTS
+   * then the
    * message will be sent to all distribution managers.
    */
   public void setRecipient(InternalDistributedMember recipient) {
@@ -244,18 +247,42 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   }
 
   /**
-   * Sets the intended recipient of the message. If recipient set contains {@link #ALL_RECIPIENTS}
+   * Sets the intended recipient of the message. If recipient set contains
+   * DistributionMessage.ALL_RECIPIENTS
    * then the message will be sent to all distribution managers.
    */
-  public void setRecipients(Collection<? extends DistributedMember> recipients) {
-    if (this.recipients != null) {
-      throw new IllegalStateException(
-          "Recipients can only be set once");
+  @Override
+  public void setRecipients(Collection recipients) {
+    this.recipients = (InternalDistributedMember[]) recipients
+        .toArray(EMPTY_RECIPIENTS_ARRAY);
+  }
+
+  @Override
+  public void setRecipient(MemberIdentifier recipient) {
+    this.recipients = new InternalDistributedMember[] {(InternalDistributedMember) recipient};
+  }
+
+  @Override
+  public void registerProcessor() {
+    // override if direct-ack is supported
+  }
+
+  @Override
+  public boolean isHighPriority() {
+    return false;
+  }
+
+  @Override
+  public List<MemberIdentifier> getRecipients() {
+    InternalDistributedMember[] recipients = getRecipientsArray();
+    if (recipients == null
+        || recipients.length == 1 && recipients[0] == ClusterMessage.ALL_RECIPIENTS) {
+      return ALL_RECIPIENTS_LIST;
     }
-    this.recipients = recipients
-        .toArray(new InternalDistributedMember[0]);
+    return Arrays.asList(recipients);
   }
 
+
   public void resetRecipients() {
     this.recipients = null;
     this.multicast = false;
@@ -267,7 +294,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
    * all distribution managers, then the array will contain ALL_RECIPIENTS. If the recipients have
    * not been set null is returned.
    */
-  public InternalDistributedMember[] getRecipients() {
+  public InternalDistributedMember[] getRecipientsArray() {
     if (this.multicast) {
       return new InternalDistributedMember[] {ALL_RECIPIENTS};
     } else if (this.recipients != null) {
@@ -318,8 +345,9 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
    * Sets the sender of this message. This method is only invoked when the message is
    * <B>received</B> by a <code>DistributionManager</code>.
    */
-  public void setSender(InternalDistributedMember _sender) {
-    this.sender = _sender;
+  @Override
+  public void setSender(MemberIdentifier _sender) {
+    this.sender = (InternalDistributedMember) _sender;
   }
 
   /**
@@ -438,7 +466,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
 
           @Override
           public String toString() {
-            return "Processing {" + DistributionMessage.this.toString() + "}";
+            return "Processing {" + ClusterMessage.this.toString() + "}";
           }
         });
       } catch (RejectedExecutionException ex) {
@@ -552,7 +580,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   }
 
   /**
-   * Writes the contents of this <code>DistributionMessage</code> to the given output. Note that
+   * Writes the contents of this <code>ClusterMessage</code> to the given output. Note that
    * classes that override this method should always invoke the inherited method
    * (<code>super.toData()</code>).
    */
@@ -566,7 +594,7 @@ public abstract class DistributionMessage implements DataSerializableFixedID, Cl
   }
 
   /**
-   * Reads the contents of this <code>DistributionMessage</code> from the given input. Note that
+   * Reads the contents of this <code>ClusterMessage</code> from the given input. Note that
    * classes that override this method should always invoke the inherited method
    * (<code>super.fromData()</code>).
    */
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
index 587ebf2..879a974 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
@@ -784,7 +784,7 @@ public class ClusterOperationExecutors implements OperationExecutors {
       // UDP readers are throttled in the FC protocol, which queries
       // the queue to see if it should throttle
       if (stats.getInternalSerialQueueBytes() > TOTAL_SERIAL_QUEUE_THROTTLE
-          && !DistributionMessage.isPreciousThread()) {
+          && !ClusterMessage.isPreciousThread()) {
         do {
           boolean interrupted = Thread.interrupted();
           try {
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 ef79581..aaaf8b4 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
@@ -34,7 +34,7 @@ public class CollectingReplyProcessor<T> extends ReplyProcessor21 {
   }
 
   @Override
-  protected void process(DistributionMessage msg, boolean warn) {
+  protected void process(ClusterMessage msg, boolean warn) {
     if (msg instanceof ReplyMessage) {
       InternalDistributedSystem.getLogger().info(String.format("%s",
           "processing message with return value " + ((ReplyMessage) msg).getReturnValue()));
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
index 7ea074c..5257790 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/Distribution.java
@@ -37,11 +37,11 @@ public interface Distribution {
   InternalDistributedMember getLocalMember();
 
   Set<InternalDistributedMember> send(InternalDistributedMember[] destinations,
-      DistributionMessage msg) throws NotSerializableException;
+      ClusterMessage msg) throws NotSerializableException;
 
   Set<InternalDistributedMember> directChannelSend(
       InternalDistributedMember[] destinations,
-      DistributionMessage content)
+      ClusterMessage content)
       throws NotSerializableException;
 
   Map<String, Long> getMessageState(
@@ -131,7 +131,7 @@ public interface Distribution {
 
   // TODO - this method is only used by tests
   @VisibleForTesting
-  void replacePartialIdentifierInMessage(DistributionMessage message);
+  void replacePartialIdentifierInMessage(ClusterMessage message);
 
   // TODO - this method is only used by tests
   @VisibleForTesting
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
index 6b7c092..6b31d00 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java
@@ -16,6 +16,9 @@ package org.apache.geode.distributed.internal;
 
 import static org.apache.geode.distributed.internal.membership.adapter.SocketCreatorAdapter.asTcpSocketCreator;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.NotSerializableException;
 import java.util.Arrays;
 import java.util.Collections;
@@ -48,6 +51,7 @@ import org.apache.geode.distributed.internal.membership.adapter.auth.GMSAuthenti
 import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.LifecycleListener;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.Membership;
@@ -59,11 +63,15 @@ import org.apache.geode.distributed.internal.membership.gms.api.MessageListener;
 import org.apache.geode.distributed.internal.membership.gms.api.QuorumChecker;
 import org.apache.geode.distributed.internal.membership.gms.fd.GMSHealthMonitor;
 import org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave;
+import org.apache.geode.distributed.internal.membership.gms.messages.AbstractGMSMessage;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
 import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
 import org.apache.geode.internal.net.SocketCreatorFactory;
 import org.apache.geode.internal.security.SecurableCommunicationChannel;
+import org.apache.geode.internal.serialization.DeserializationContext;
+import org.apache.geode.internal.serialization.SerializationContext;
+import org.apache.geode.internal.serialization.Version;
 import org.apache.geode.internal.tcp.ConnectExceptions;
 import org.apache.geode.internal.util.Breadcrumbs;
 import org.apache.geode.logging.internal.executors.LoggingThread;
@@ -211,7 +219,7 @@ public class DistributionImpl implements Distribution {
 
   @Override
   public Set<InternalDistributedMember> send(InternalDistributedMember[] destinations,
-      DistributionMessage msg) throws NotSerializableException {
+      ClusterMessage msg) throws NotSerializableException {
     Set<InternalDistributedMember> result;
     boolean allDestinations = msg.forAll();
 
@@ -232,7 +240,7 @@ public class DistributionImpl implements Distribution {
 
     if (msg instanceof AdminMessageType && shutdownInProgress()) {
       // no admin messages while shutting down - this can cause threads to hang
-      return new HashSet<>(Arrays.asList(msg.getRecipients()));
+      return new HashSet<>(Arrays.asList(msg.getRecipientsArray()));
     }
 
     // Handle trivial cases
@@ -287,7 +295,7 @@ public class DistributionImpl implements Distribution {
   @Override
   public Set<InternalDistributedMember> directChannelSend(
       InternalDistributedMember[] destinations,
-      DistributionMessage content)
+      ClusterMessage content)
       throws NotSerializableException {
     MembershipStatistics theStats = clusterDistributionManager.getStats();
     boolean allDestinations;
@@ -581,7 +589,7 @@ public class DistributionImpl implements Distribution {
   // TODO - this method is only used by tests
   @Override
   @VisibleForTesting
-  public void replacePartialIdentifierInMessage(DistributionMessage message) {
+  public void replacePartialIdentifierInMessage(ClusterMessage message) {
     ((GMSMembership) membership).replacePartialIdentifierInMessage(message);
 
   }
@@ -834,7 +842,7 @@ public class DistributionImpl implements Distribution {
   }
 
   /** this is a fake message class that is used to flush the serial execution queue */
-  static class FlushingMessage extends DistributionMessage {
+  static class FlushingMessage extends AbstractGMSMessage {
     final boolean[] done;
 
     FlushingMessage(boolean[] done) {
@@ -849,18 +857,24 @@ public class DistributionImpl implements Distribution {
     }
 
     @Override
-    protected void process(ClusterDistributionManager dm) {
-      // not used
+    public int getDSFID() {
+      return 0;
     }
 
     @Override
-    public int getDSFID() {
-      return 0;
+    public void toData(DataOutput out, SerializationContext context) throws IOException {
+      throw new UnsupportedOperationException();
     }
 
     @Override
-    public int getProcessorType() {
-      return OperationExecutors.SERIAL_EXECUTOR;
+    public void fromData(DataInput in, DeserializationContext context)
+        throws IOException, ClassNotFoundException {
+      throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Version[] getSerializationVersions() {
+      return null;
     }
   }
 
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 dbb3c72..e7a4aac 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
@@ -171,7 +171,7 @@ public interface DistributionManager extends ReplySender {
    * @return recipients who did not receive the message
    */
   @Override
-  Set<InternalDistributedMember> putOutgoing(DistributionMessage msg);
+  Set<InternalDistributedMember> putOutgoing(ClusterMessage msg);
 
   /**
    * Returns the distributed system to which this distribution manager is connected.
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 585881a..97d93ee 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
@@ -40,22 +40,22 @@ public abstract class DistributionMessageObserver {
   }
 
   /**
-   * Called before a the process method of the DistributionMessage is called
+   * Called before a the process method of the ClusterMessage is called
    *
    * @param dm the distribution manager that received the message
    * @param message The message itself
    */
-  public void beforeProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+  public void beforeProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
     // override as needed
   }
 
   /**
-   * Called after the process method of the DistributionMessage is called
+   * Called after the process method of the ClusterMessage is called
    *
    * @param dm the distribution manager that received the message
    * @param message The message itself
    */
-  public void afterProcessMessage(ClusterDistributionManager dm, DistributionMessage message) {
+  public void afterProcessMessage(ClusterDistributionManager dm, ClusterMessage message) {
     // override as needed
   }
 
@@ -65,7 +65,7 @@ public abstract class DistributionMessageObserver {
    * @param dm the distribution manager that's sending the message
    * @param message the message itself
    */
-  public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+  public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
     // override as needed
   }
 }
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 6123a4b..fd092a2 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
@@ -15,11 +15,16 @@
 
 package org.apache.geode.distributed.internal;
 
-public abstract class HighPriorityDistributionMessage extends DistributionMessage {
+public abstract class HighPriorityDistributionMessage extends ClusterMessage {
 
   @Override
   public int getProcessorType() {
     return OperationExecutors.HIGH_PRIORITY_EXECUTOR;
   }
 
+  @Override
+  public boolean isHighPriority() {
+    return true;
+  }
+
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/IgnoredByManager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/IgnoredByManager.java
index c526b44..ef06a3c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/IgnoredByManager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/IgnoredByManager.java
@@ -15,7 +15,7 @@
 package org.apache.geode.distributed.internal;
 
 /**
- * This marker indicates messages (usually {@link DistributionMessage}s) that may be received by a
+ * This marker indicates messages (usually {@link ClusterMessage}s) that may be received by a
  * distribution manager, but should ignored.
  */
 public interface IgnoredByManager {
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 69077a4..207174f 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
@@ -1245,7 +1245,7 @@ public class LonerDistributionManager implements DistributionManager {
   }
 
   @Override
-  public Set<InternalDistributedMember> putOutgoing(DistributionMessage msg) {
+  public Set<InternalDistributedMember> putOutgoing(ClusterMessage msg) {
     return null;
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/MessageWithReply.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/MessageWithReply.java
index 3f1c32d..f256981 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/MessageWithReply.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/MessageWithReply.java
@@ -17,7 +17,7 @@ package org.apache.geode.distributed.internal;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
 /**
- * A marker interface that denotes {@link DistributionMessage}s that require a reply. Messages that
+ * A marker interface that denotes {@link ClusterMessage}s that require a reply. Messages that
  * do not implement this interface can be sent asynchronously through the transport layer.
  *
  *
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/OperationExecutors.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/OperationExecutors.java
index c4bc0c8..846e3e5 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/OperationExecutors.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/OperationExecutors.java
@@ -21,7 +21,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 
 /**
  * OperationExecutors holds the thread pools used to execute cache operations. There
- * are a number of different thread pools available. Each DistributionMessage has
+ * are a number of different thread pools available. Each ClusterMessage has
  * a processor-type that determines which pool will be used to execute the message.
  */
 public interface OperationExecutors {
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 ff4e8ff..b6f7539 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
@@ -20,7 +20,7 @@ package org.apache.geode.distributed.internal;
  * DistributionManager's getThreadPool(). This is sufficient for messages that don't need to be
  * processed serially with respect to any other message.
  */
-public abstract class PooledDistributionMessage extends DistributionMessage {
+public abstract class PooledDistributionMessage extends ClusterMessage {
 
   @Override
   public int getProcessorType() {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyException.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyException.java
index 06a7641..d18f6e8 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyException.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyException.java
@@ -21,7 +21,7 @@ import org.apache.geode.SerializationException;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
 /**
- * Exception thrown when a DistributionMessage is processed to be propagated back to the sender of
+ * Exception thrown when a ClusterMessage is processed to be propagated back to the sender of
  * the message.
  *
  */
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 5b7c0ee..1a7e060 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
@@ -42,7 +42,7 @@ import org.apache.geode.internal.util.concurrent.StoppableCountDownLatch;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
 /**
- * This class processes responses to {@link DistributionMessage}s. It handles a the generic case of
+ * This class processes responses to {@link ClusterMessage}s. It handles a the generic case of
  * simply waiting for responses from all members. It is intended to be subclassed for special cases.
  *
  * <P>
@@ -56,7 +56,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * <pre>
  *
- * public void process(DistributionMessage msg) {
+ * public void process(ClusterMessage msg) {
  *   try {
  *     ...custom code for subclass goes here...
  *   }
@@ -404,11 +404,11 @@ public class ReplyProcessor21 implements MembershipListener {
    * signaled. This method can be overridden to provide customized functionality, however the
    * overriden method should always invoke <code>super.process()</code>.
    */
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     process(msg, true);
   }
 
-  protected void process(DistributionMessage msg, boolean warn) {
+  protected void process(ClusterMessage msg, boolean warn) {
     if (logger.isDebugEnabled()) {
       logger.debug("{} got process({}) from {}", this, msg, msg.getSender());
     }
@@ -443,7 +443,7 @@ public class ReplyProcessor21 implements MembershipListener {
   }
 
 
-  protected synchronized void processException(DistributionMessage msg, ReplyException ex) {
+  protected synchronized void processException(ClusterMessage msg, ReplyException ex) {
     processException(ex);
   }
 
@@ -470,7 +470,7 @@ public class ReplyProcessor21 implements MembershipListener {
    * scenarios. It will be upto individual messages to handle differently by overriding the above
    * method.
    */
-  protected synchronized void processException(DistributionMessage msg, DSFIDNotFoundException ex) {
+  protected synchronized void processException(ClusterMessage msg, DSFIDNotFoundException ex) {
     final short versionOrdinal = ex.getProductVersionOrdinal();
     String versionStr = null;
     try {
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 a245164..d6dfbe4 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
@@ -23,7 +23,7 @@ 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(DistributionManager)}
+ * {@link ClusterMessage#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.
@@ -31,6 +31,6 @@ import org.apache.geode.internal.cache.DirectReplyMessage;
  */
 public interface ReplySender {
 
-  Set<InternalDistributedMember> putOutgoing(DistributionMessage msg);
+  Set<InternalDistributedMember> putOutgoing(ClusterMessage msg);
 
 }
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 452f471..fd032a8 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
@@ -19,7 +19,7 @@ package org.apache.geode.distributed.internal;
  * A SerialDistributionMessage is processed in the order it is generated from a single thread's
  * point of view.
  */
-public abstract class SerialDistributionMessage extends DistributionMessage {
+public abstract class SerialDistributionMessage extends ClusterMessage {
 
   // not "final" because it's overridden in ViewMessage
   @Override
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 66cadc4..bfdc5e7 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
@@ -79,7 +79,7 @@ public class ShutdownMessage extends HighPriorityDistributionMessage
     // reply.setRecipient(getSender());
     // can't send a response in a UDP receiver thread or we might miss
     // the other side going away due to blocking receipt of views
-    // if (DistributionMessage.isPreciousThread()) {
+    // if (ClusterMessage.isPreciousThread()) {
     // dm.getWaitingThreadPool().execute(new Runnable() {
     // public void run() {
     // dm.putOutgoing(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 9c14bb3..5f52452 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
@@ -42,7 +42,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
 /**
  * A message that is sent to all other distribution manager when a distribution manager starts up.
  */
-public class StartupMessage extends DistributionMessage implements AdminMessageType {
+public class StartupMessage extends ClusterMessage implements AdminMessageType {
   private static final Logger logger = LogService.getLogger();
 
   private String version = GemFireVersion.getGemFireVersion(); // added for bug 29005
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 788dd38..267b21f 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
@@ -75,7 +75,7 @@ public class StartupMessageReplyProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     final LogWriter log = this.system.getLogWriter();
     super.process(msg);
     if (log.fineEnabled()) {
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 27fe837..c608d59 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
@@ -37,7 +37,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
 /**
  * A message that is sent to all other distribution manager when a distribution manager starts up.
  */
-public class StartupResponseMessage extends DistributionMessage
+public class StartupResponseMessage extends ClusterMessage
     implements AdminMessageType {
   private static final Logger logger = LogService.getLogger();
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats.java
index a7a8c21..d93b8df 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats.java
@@ -102,7 +102,7 @@ public class ThrottlingMemLinkedQueueWithDMStats<E> extends OverflowQueueWithDMS
       throw new InterruptedException();
     // only block threads reading from tcp stream sockets. blocking udp
     // will cause retransmission storms
-    if (!DistributionMessage.isPreciousThread()) {
+    if (!ClusterMessage.isPreciousThread()) {
       long startTime = DistributionStats.getStatTime();
       do {
         try {
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 4fb3460..8acd412 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
@@ -107,7 +107,7 @@ public class WaitForViewInstallation extends HighPriorityDistributionMessage
    * (non-Javadoc)
    *
    * @see
-   * org.apache.geode.distributed.internal.DistributionMessage#process(org.apache.geode.distributed.
+   * org.apache.geode.distributed.internal.ClusterMessage#process(org.apache.geode.distributed.
    * internal.DistributionManager)
    */
   @Override
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/MessageDependencyMonitor.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/MessageDependencyMonitor.java
index 2e09abe..47d2bbc 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/MessageDependencyMonitor.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/MessageDependencyMonitor.java
@@ -20,7 +20,7 @@ import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.geode.annotations.internal.MakeNotStatic;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -56,13 +56,13 @@ public class MessageDependencyMonitor implements DependencyMonitor {
     INSTANCE.waitingProcessors.set(null);
   }
 
-  public static void processingMessage(DistributionMessage message) {
+  public static void processingMessage(ClusterMessage message) {
     if (message instanceof MessageWithReply) {
       INSTANCE.processingMessages.set((MessageWithReply) message);
     }
   }
 
-  public static void doneProcessing(DistributionMessage message) {
+  public static void doneProcessing(ClusterMessage message) {
     if (message instanceof MessageWithReply) {
       INSTANCE.processingMessages.set(null);
     }
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 55d808e..5d713b5 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
@@ -38,11 +38,11 @@ import org.apache.geode.cache.TimeoutException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.gms.api.Membership;
@@ -242,7 +242,7 @@ public class DirectChannel {
    */
   private int sendToOne(final Membership mgr,
       InternalDistributedMember[] p_destinations,
-      final DistributionMessage msg, long ackWaitThreshold, long ackSAThreshold)
+      final ClusterMessage msg, long ackWaitThreshold, long ackSAThreshold)
       throws ConnectExceptions, NotSerializableException {
     return sendToMany(mgr, p_destinations, msg, ackWaitThreshold, ackSAThreshold);
   }
@@ -262,7 +262,7 @@ public class DirectChannel {
    */
   private int sendToMany(final Membership mgr,
       InternalDistributedMember[] p_destinations,
-      final DistributionMessage msg, long ackWaitThreshold, long ackSAThreshold)
+      final ClusterMessage msg, long ackWaitThreshold, long ackSAThreshold)
       throws ConnectExceptions, NotSerializableException {
     InternalDistributedMember destinations[] = p_destinations;
 
@@ -510,7 +510,7 @@ public class DirectChannel {
    * @return null if everything went okay, or a ConnectExceptions object if some connections
    *         couldn't be obtained
    */
-  private ConnectExceptions getConnections(Membership mgr, DistributionMessage msg,
+  private ConnectExceptions getConnections(Membership mgr, ClusterMessage msg,
       InternalDistributedMember[] destinations, boolean preserveOrder, boolean retry,
       long ackTimeout, long ackSDTimeout, List cons) {
     ConnectExceptions ce = null;
@@ -575,7 +575,7 @@ public class DirectChannel {
    * @throws ConnectionException if the conduit has stopped
    */
   public int send(Membership mgr, InternalDistributedMember[] destinations,
-      DistributionMessage msg, long ackWaitThreshold, long ackSAThreshold)
+      ClusterMessage msg, long ackWaitThreshold, long ackSAThreshold)
       throws ConnectExceptions, NotSerializableException {
 
     if (disconnected) {
@@ -698,7 +698,7 @@ public class DirectChannel {
     }
   }
 
-  public void receive(DistributionMessage msg, int bytesRead) {
+  public void receive(ClusterMessage msg, int bytesRead) {
     if (disconnected) {
       return;
     }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/distribution-overview.html b/geode-core/src/main/java/org/apache/geode/distributed/internal/distribution-overview.html
index d151c1c..4806782 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/distribution-overview.html
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/distribution-overview.html
@@ -21,7 +21,7 @@ limitations under the License.
 
 Distributed GemFire moves information between physical machines in a
 number of different ways.  The JCache implementation uses {@link
-org.apache.geode.distributed.internal.DistributionMessage}s
+org.apache.geode.distributed.internal.ClusterMessage}s
 to send information back and forth between VMs.  The distributed
 collections use the remote method invocation built on top of a {@link
 org.apache.geode.tcp.TCPConuit} to access elements in remote
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 cb3f039..0ddeb63 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
@@ -26,8 +26,8 @@ import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.LockServiceDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -112,7 +112,7 @@ public class DLockQueryProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     try {
       DLockQueryReplyMessage myReply = (DLockQueryReplyMessage) msg;
       if (logger.isTraceEnabled(LogMarker.DLS_VERBOSE)) {
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 633a7b1..a9b7f7c 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
@@ -27,8 +27,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.annotations.Immutable;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -133,7 +133,7 @@ public class DLockRecoverGrantorProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     try {
       Assert.assertTrue(msg instanceof DLockRecoverGrantorReplyMessage,
           "DLockRecoverGrantorProcessor is unable to process message of type " + msg.getClass());
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 408a9b1..c500bc9 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
@@ -25,8 +25,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.LockServiceDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -98,7 +98,7 @@ public class DLockReleaseProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     try {
       Assert.assertTrue(msg instanceof DLockReleaseReplyMessage,
           "DLockReleaseProcessor is unable to process message of type " + msg.getClass());
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 39a6aff..0407e59 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
@@ -29,8 +29,8 @@ import org.apache.geode.SystemFailure;
 import org.apache.geode.annotations.internal.MutableForTesting;
 import org.apache.geode.distributed.LockServiceDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ProcessorKeeper21;
@@ -274,7 +274,7 @@ public class DLockRequestProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     final boolean isDebugEnabled_DLS = logger.isTraceEnabled(LogMarker.DLS_VERBOSE);
     try {
       Assert.assertTrue(msg instanceof DLockResponseMessage,
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 14315fd..dd061ec 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
@@ -28,8 +28,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -126,7 +126,7 @@ public class ElderInitProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     if (msg instanceof ElderInitReplyMessage) {
       ElderInitReplyMessage eiMsg = (ElderInitReplyMessage) msg;
       processData(eiMsg.getGrantors(), eiMsg.getGrantorVersions(), eiMsg.getGrantorSerialNumbers(),
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 d254f1f..ee49c7e 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
@@ -26,8 +26,8 @@ import org.apache.geode.CancelCriterion;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.annotations.Immutable;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
@@ -429,7 +429,7 @@ public class GrantorRequestProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     if (msg instanceof GrantorInfoReplyMessage) {
       GrantorInfoReplyMessage giMsg = (GrantorInfoReplyMessage) msg;
       this.result = giMsg.getGrantorInfo();
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 fd97d69..dea2b05 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
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.LockServiceDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -79,7 +79,7 @@ public class NonGrantorDestroyedProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     try {
       Assert.assertTrue(msg instanceof NonGrantorDestroyedReplyMessage,
           "NonGrantorDestroyedProcessor is unable to process message of type " + msg.getClass());
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSMessageAdapter.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSMessageAdapter.java
deleted file mode 100644
index bc958e9..0000000
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/adapter/GMSMessageAdapter.java
+++ /dev/null
@@ -1,123 +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.membership.adapter;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.geode.distributed.internal.DistributionMessage;
-import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
-import org.apache.geode.distributed.internal.OperationExecutors;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
-import org.apache.geode.distributed.internal.membership.gms.interfaces.GMSMessage;
-import org.apache.geode.internal.cache.DirectReplyMessage;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
-
-/**
- * GMSMessageAdapter wraps a Geode DistributionMessage to be sent via the GMS Messenger (JGroups)
- */
-
-public class GMSMessageAdapter implements GMSMessage {
-  DistributionMessage geodeMessage;
-
-  public GMSMessageAdapter(DistributionMessage geodeMessage) {
-    this.geodeMessage = geodeMessage;
-  }
-
-  @Override
-  public void setRecipient(MemberIdentifier member) {
-    geodeMessage.setRecipient((InternalDistributedMember) member);
-  }
-
-  @Override
-  public void setRecipients(List<MemberIdentifier> recipients) {
-    throw new UnsupportedOperationException(
-        "setting recipients is not allowed on a message wrapper");
-  }
-
-  @Override
-  public boolean isHighPriority() {
-    return geodeMessage instanceof HighPriorityDistributionMessage ||
-        geodeMessage.getProcessorType() == OperationExecutors.HIGH_PRIORITY_EXECUTOR;
-  }
-
-  @Override
-  public void registerProcessor() {
-    if (geodeMessage instanceof DirectReplyMessage) {
-      ((DirectReplyMessage) geodeMessage).registerProcessor();
-    }
-  }
-
-  @Override
-  public List<MemberIdentifier> getRecipients() {
-    InternalDistributedMember[] recipients = geodeMessage.getRecipients();
-    if (recipients == null
-        || recipients.length == 1 && recipients[0] == DistributionMessage.ALL_RECIPIENTS) {
-      return Collections.singletonList(null);
-    }
-    return Arrays.asList(recipients);
-  }
-
-  @Override
-  public int getDSFID() {
-    return geodeMessage.getDSFID();
-  }
-
-  @Override
-  public boolean forAll() {
-    return geodeMessage.forAll();
-  }
-
-  @Override
-  public boolean getMulticast() {
-    return geodeMessage.getMulticast();
-  }
-
-  @Override
-  public void setMulticast(boolean useMulticast) {
-    geodeMessage.setMulticast(useMulticast);
-  }
-
-  @Override
-  public void setSender(MemberIdentifier sender) {
-    geodeMessage.setSender((InternalDistributedMember) sender);
-  }
-
-  @Override
-  public MemberIdentifier getSender() {
-    return geodeMessage.getSender();
-  }
-
-  @Override
-  public void resetTimestamp() {
-    geodeMessage.resetTimestamp();
-  }
-
-  @Override
-  public void setBytesRead(int amount) {
-    geodeMessage.setBytesRead(amount);
-  }
-
-  @Override
-  public String toString() {
-    return geodeMessage.toString();
-  }
-
-  public DataSerializableFixedID getGeodeMessage() {
-    return geodeMessage;
-  }
-}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
index 53f2e4d..b71c964 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
@@ -53,12 +53,11 @@ import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionException;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.StartupMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
-import org.apache.geode.distributed.internal.membership.adapter.GMSMessageAdapter;
 import org.apache.geode.distributed.internal.membership.adapter.LocalViewMessage;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.LifecycleListener;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.Membership;
@@ -67,9 +66,7 @@ import org.apache.geode.distributed.internal.membership.gms.api.MembershipListen
 import org.apache.geode.distributed.internal.membership.gms.api.MembershipTestHook;
 import org.apache.geode.distributed.internal.membership.gms.api.MessageListener;
 import org.apache.geode.distributed.internal.membership.gms.api.QuorumChecker;
-import org.apache.geode.distributed.internal.membership.gms.interfaces.GMSMessage;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.Manager;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
 import org.apache.geode.internal.serialization.Version;
 import org.apache.geode.internal.tcp.ConnectionException;
 import org.apache.geode.internal.tcp.MemberShunnedException;
@@ -934,7 +931,7 @@ public class GMSMembership implements Membership {
    * @param msg the message
    */
   private void dispatchMessage(DistributionMessage msg) {
-    InternalDistributedMember m = msg.getSender();
+    InternalDistributedMember m = (InternalDistributedMember) msg.getSender();
     boolean shunned = false;
 
     // If this member is shunned or new, grab the latestViewWriteLock: update the appropriate data
@@ -982,7 +979,7 @@ public class GMSMembership implements Membership {
    * @param msg the message holding the sender ID
    */
   public void replacePartialIdentifierInMessage(DistributionMessage msg) {
-    InternalDistributedMember sender = msg.getSender();
+    InternalDistributedMember sender = (InternalDistributedMember) msg.getSender();
     MemberIdentifier oldID = sender;
     MemberIdentifier newID = this.services.getJoinLeave().getMemberID(oldID);
     if (newID != null && newID != oldID) {
@@ -1083,7 +1080,7 @@ public class GMSMembership implements Membership {
 
     if (o.isDistributionMessage()) { // normal message
       try {
-        o.dmsg.setSender(latestView.getCanonicalID(o.dmsg.getSender()));
+        o.dmsg.setSender(latestView.getCanonicalID((InternalDistributedMember) o.dmsg.getSender()));
         dispatchMessage(o.dmsg);
       } catch (MemberShunnedException e) {
         // message from non-member - ignore
@@ -1495,7 +1492,7 @@ public class GMSMembership implements Membership {
       final DistributionMessage content)
       throws NotSerializableException {
     checkAddressesForUUIDs(destinations);
-    Set<MemberIdentifier> failures = services.getMessenger().send(new GMSMessageAdapter(content));
+    Set<MemberIdentifier> failures = services.getMessenger().send(content);
     if (failures == null || failures.size() == 0) {
       return Collections.emptySet();
     }
@@ -2181,16 +2178,14 @@ public class GMSMembership implements Membership {
     }
 
     @Override
-    public void processMessage(GMSMessage msg) {
-      DistributionMessage distributionMessage =
-          (DistributionMessage) ((GMSMessageAdapter) msg).getGeodeMessage();
+    public void processMessage(DistributionMessage msg) {
       // UDP messages received from surprise members will have partial IDs.
       // Attempt to replace these with full IDs from the Membership's view.
-      if (distributionMessage.getSender().isPartial()) {
-        replacePartialIdentifierInMessage(distributionMessage);
+      if (((InternalDistributedMember) msg.getSender()).isPartial()) {
+        replacePartialIdentifierInMessage(msg);
       }
 
-      handleOrDeferMessage(distributionMessage);
+      handleOrDeferMessage(msg);
     }
 
     @Override
@@ -2214,24 +2209,6 @@ public class GMSMembership implements Membership {
     public boolean isShutdownStarted() {
       return shutdownInProgress || (dm != null && dm.isCloseInProgress());
     }
-
-    @Override
-    public GMSMessage wrapMessage(Object receivedMessage) {
-      if (receivedMessage instanceof GMSMessage) {
-        return (GMSMessage) receivedMessage;
-      }
-      // Geode's DistributionMessage class isn't known by GMS classes
-      return new GMSMessageAdapter((DistributionMessage) receivedMessage);
-    }
-
-    @Override
-    public DataSerializableFixedID unwrapMessage(GMSMessage messageToSend) {
-      if (messageToSend instanceof GMSMessageAdapter) {
-        return ((GMSMessageAdapter) messageToSend).getGeodeMessage();
-      }
-      return (DataSerializableFixedID) messageToSend;
-    }
-
   }
 
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/DistributionMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/DistributionMessage.java
new file mode 100644
index 0000000..669f170
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/DistributionMessage.java
@@ -0,0 +1,119 @@
+/*
+ * 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.membership.gms.api;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.geode.annotations.Immutable;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.internal.serialization.DataSerializableFixedID;
+
+/**
+ * The membership module is capable of sending messages to other members of the
+ * cluster. Those messages must implement this interface and must be serializable
+ * using DataSerializableFixedID from the geode-serialization module.
+ * <p>
+ * There are currently two implemementation hierarchies of DistributionMessage.
+ * One is AbstractGMSMessage, which is used in the membership-module for membership-
+ * related messages. The other is ClusterMessage, which is the base class for
+ * messages in geode-core and other higher-level modules.
+ */
+
+public interface DistributionMessage extends DataSerializableFixedID {
+
+  /**
+   * Indicates that a distribution message should be sent to all other distribution managers.
+   */
+  @Immutable
+  InternalDistributedMember ALL_RECIPIENTS = null;
+
+  /**
+   * Establishes the destination of a message
+   */
+  void setRecipient(MemberIdentifier member);
+
+  /**
+   * Establishes one or more destinations of a message
+   */
+  void setRecipients(Collection recipients);
+
+  /**
+   * is this a high priority message that should be sent out-of-band?
+   */
+  boolean isHighPriority();
+
+
+  /**
+   * Register any reply processor prior to transmission, if necessary. The "processor"
+   * is a ReplyProcessor that has an identifier that is serialized with the message being
+   * sent. The identifier is used to match up any reply message with the ReplyProcessor
+   * that is waiting for the response.
+   */
+  void registerProcessor();
+
+  /**
+   * Returns the recipients of a message
+   */
+  List<MemberIdentifier> getRecipients();
+
+  /**
+   * is this message intended for all members of the cluster? (note: this does not send
+   * the message to the node initiating the message)
+   */
+  boolean forAll();
+
+  /**
+   * If multicast is enabled, should this message be sent to all members using multicast?
+   * The default implementation returns false.
+   */
+  default boolean getMulticast() {
+    return false;
+  }
+
+  /**
+   * If multicast is enabled and the message implementation allows it, send this message
+   * over multicast to all members of the cluster.
+   */
+  default void setMulticast(boolean useMulticast) {
+    // no-op by default
+  }
+
+  /** establishes the sender of a message on the receiving side of a communications channel */
+  void setSender(MemberIdentifier sender);
+
+  /**
+   * Returns the sender of this message. Note that this may be null in the member that
+   * constructs a message to be sent to other members
+   */
+  MemberIdentifier getSender();
+
+  /**
+   * In messages supporting it, this resets the message's millisecond-clock timestamp
+   */
+  long resetTimestamp();
+
+  /**
+   * In messages supporting it, this establishes the number of bytes read from the
+   * communications transport when receiving a message.
+   */
+  void setBytesRead(int amount);
+
+  /**
+   * In messages supporting it, this returns the number of bytes read from the
+   * communications transport when receiving a message.
+   */
+  int getBytesRead();
+}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
index c78c7c5..3997504 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/Membership.java
@@ -21,7 +21,6 @@ import java.util.function.Supplier;
 
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
 import org.apache.geode.distributed.internal.membership.gms.Services;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/MessageListener.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/MessageListener.java
index 2bb540f..d9dbd76 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/MessageListener.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/api/MessageListener.java
@@ -14,8 +14,6 @@
  */
 package org.apache.geode.distributed.internal.membership.gms.api;
 
-import org.apache.geode.distributed.internal.DistributionMessage;
-
 public interface MessageListener {
 
   /**
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/GMSMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/GMSMessage.java
deleted file mode 100644
index 8dae914..0000000
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/GMSMessage.java
+++ /dev/null
@@ -1,57 +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.membership.gms.interfaces;
-
-import java.util.List;
-
-import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
-
-public interface GMSMessage {
-
-  void setRecipient(MemberIdentifier member);
-
-  void setRecipients(List<MemberIdentifier> recipients);
-
-  /** is this a high priority message that should be sent out-of-band? */
-  boolean isHighPriority();
-
-
-  /** register any reply processor prior to transmission, if necessary */
-  void registerProcessor();
-
-  List<MemberIdentifier> getRecipients();
-
-  /** from DataSerializableFixedID */
-  int getDSFID();
-
-  boolean forAll();
-
-  default boolean getMulticast() {
-    return false;
-  }
-
-  default void setMulticast(boolean useMulticast) {
-    // no-op by default
-  }
-
-  /** establishes the sender of a message on the receiving side of a communications channel */
-  void setSender(MemberIdentifier sender);
-
-  MemberIdentifier getSender();
-
-  void resetTimestamp();
-
-  void setBytesRead(int amount);
-}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Manager.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Manager.java
index 45f1b48..0c00bfc 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Manager.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Manager.java
@@ -18,14 +18,14 @@ import java.util.Collection;
 
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
 
 /**
  * Manager presents the GMS services to the outside world and handles startup/shutdown race
  * conditions. It is also the default MessageHandler
  */
-public interface Manager extends Service, MessageHandler<GMSMessage> {
+public interface Manager extends Service, MessageHandler<DistributionMessage> {
 
   /**
    * After all services have been started this is used to join the distributed system
@@ -68,21 +68,6 @@ public interface Manager extends Service, MessageHandler<GMSMessage> {
   boolean isReconnectingDS();
 
   /**
-   * When Messenger receives a message from another node it may be in a form that
-   * Messenger can't deal with, depending on what payload was serialized. It may
-   * be a GMSMessage already or it may be a message wrapped in an adapter class
-   * that serializes a non-GMSMessage payload. (See GMSMessageAdapter, which
-   * wraps Geode DistributionMessages)
-   */
-  GMSMessage wrapMessage(Object receivedMessage);
-
-  /**
-   * When Messenger is going to transmit a message it gets the actual payload to serialize
-   * from this method
-   */
-  DataSerializableFixedID unwrapMessage(GMSMessage messageToSend);
-
-  /**
    * Return the Services object owning this Manager service
    */
   Services getServices();
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
index 89e3700..4af2910 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/interfaces/Messenger.java
@@ -18,6 +18,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.messenger.GMSQuorumChecker;
 
@@ -31,19 +32,19 @@ public interface Messenger extends Service {
    * sends an asynchronous message when the membership view may not have been established. Returns
    * destinations that did not receive the message due to no longer being in the view
    */
-  Set<MemberIdentifier> send(GMSMessage m, GMSMembershipView alternateView);
+  Set<MemberIdentifier> send(DistributionMessage m, GMSMembershipView alternateView);
 
   /**
    * sends an asynchronous message. Returns destinations that did not receive the message due to no
    * longer being in the view
    */
-  Set<MemberIdentifier> send(GMSMessage m);
+  Set<MemberIdentifier> send(DistributionMessage m);
 
   /**
    * sends an asynchronous message. Returns destinations that did not receive the message due to no
    * longer being in the view. Does not guarantee delivery of the message (no retransmissions)
    */
-  Set<MemberIdentifier> sendUnreliably(GMSMessage m);
+  Set<MemberIdentifier> sendUnreliably(DistributionMessage m);
 
   /**
    * returns the endpoint ID for this member
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/AbstractGMSMessage.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/AbstractGMSMessage.java
index 59cb11c..f86f64e 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/AbstractGMSMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messages/AbstractGMSMessage.java
@@ -14,15 +14,16 @@
  */
 package org.apache.geode.distributed.internal.membership.gms.messages;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
 import org.apache.geode.annotations.Immutable;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
-import org.apache.geode.distributed.internal.membership.gms.interfaces.GMSMessage;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
 
-public abstract class AbstractGMSMessage implements DataSerializableFixedID, GMSMessage {
+public abstract class AbstractGMSMessage implements DistributionMessage {
   @Immutable
   public static final MemberIdentifier ALL_RECIPIENTS = null;
   private List<MemberIdentifier> recipients;
@@ -44,8 +45,12 @@ public abstract class AbstractGMSMessage implements DataSerializableFixedID, GMS
   }
 
   @Override
-  public void setRecipients(List<MemberIdentifier> recipients) {
-    this.recipients = recipients;
+  public void setRecipients(Collection recipients) {
+    if (recipients instanceof List) {
+      this.recipients = (List) recipients;
+    } else {
+      this.recipients = new ArrayList<>(recipients);
+    }
   }
 
   @Override
@@ -84,12 +89,17 @@ public abstract class AbstractGMSMessage implements DataSerializableFixedID, GMS
   }
 
   @Override
-  public void resetTimestamp() {
-    // no-op
+  public long resetTimestamp() {
+    return 0;
+  }
+
+  @Override
+  public int getBytesRead() {
+    return 0;
   }
 
   @Override
   public void setBytesRead(int amount) {
-    // no-op
+    // no-op in GMS messages
   }
 }
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 e7d87e2..14f790a 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
@@ -81,11 +81,11 @@ import org.apache.geode.distributed.internal.membership.gms.GMSMemberData;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView;
 import org.apache.geode.distributed.internal.membership.gms.GMSUtil;
 import org.apache.geode.distributed.internal.membership.gms.Services;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberData;
 import org.apache.geode.distributed.internal.membership.gms.api.MemberIdentifier;
 import org.apache.geode.distributed.internal.membership.gms.api.MembershipConfig;
 import org.apache.geode.distributed.internal.membership.gms.api.MembershipStatistics;
-import org.apache.geode.distributed.internal.membership.gms.interfaces.GMSMessage;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.HealthMonitor;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.MessageHandler;
 import org.apache.geode.distributed.internal.membership.gms.interfaces.Messenger;
@@ -665,16 +665,16 @@ public class JGroupsMessenger implements Messenger {
   }
 
   @Override
-  public Set<MemberIdentifier> sendUnreliably(GMSMessage msg) {
+  public Set<MemberIdentifier> sendUnreliably(DistributionMessage msg) {
     return send(msg, false);
   }
 
   @Override
-  public Set<MemberIdentifier> send(GMSMessage msg) {
+  public Set<MemberIdentifier> send(DistributionMessage msg) {
     return send(msg, true);
   }
 
-  private Set<MemberIdentifier> send(GMSMessage msg, boolean reliably) {
+  private Set<MemberIdentifier> send(DistributionMessage msg, boolean reliably) {
 
     // perform the same jgroups messaging as in 8.2's GMSMembershipManager.send() method
 
@@ -852,15 +852,16 @@ public class JGroupsMessenger implements Messenger {
 
   /**
    * This is the constructor to use to create a JGroups message holding a GemFire
-   * DistributionMessage. It sets the appropriate flags in the Message and properly serializes the
-   * DistributionMessage for the recipient's product version
+   * ClusterMessage. It sets the appropriate flags in the Message and properly serializes the
+   * ClusterMessage for the recipient's product version
    *
-   * @param gfmsg the DistributionMessage
+   * @param gfmsg the ClusterMessage
    * @param src the sender address
    * @param version the version of the recipient
    * @return the new message
    */
-  Message createJGMessage(GMSMessage gfmsg, JGAddress src, MemberIdentifier dst, short version) {
+  Message createJGMessage(DistributionMessage gfmsg, JGAddress src, MemberIdentifier dst,
+      short version) {
     gfmsg.registerProcessor();
     Message msg = new Message();
     msg.setDest(null);
@@ -900,7 +901,7 @@ public class JGroupsMessenger implements Messenger {
     return msg;
   }
 
-  void writeEncryptedMessage(GMSMessage gfmsg, MemberIdentifier recipient, short version,
+  void writeEncryptedMessage(DistributionMessage gfmsg, MemberIdentifier recipient, short version,
       BufferDataOutputStream out)
       throws Exception {
     long start = services.getStatistics().startUDPMsgEncryption();
@@ -950,7 +951,7 @@ public class JGroupsMessenger implements Messenger {
     }
   }
 
-  int getRequestId(GMSMessage gfmsg, MemberIdentifier destination, boolean add) {
+  int getRequestId(DistributionMessage gfmsg, MemberIdentifier destination, boolean add) {
     int requestId = 0;
     if (gfmsg instanceof FindCoordinatorRequest) {
       requestId = ((FindCoordinatorRequest) gfmsg).getRequestId();
@@ -969,18 +970,18 @@ public class JGroupsMessenger implements Messenger {
     return requestId;
   }
 
-  byte[] serializeMessage(GMSMessage gfmsg, BufferDataOutputStream out_stream)
+  byte[] serializeMessage(DistributionMessage gfmsg, BufferDataOutputStream out_stream)
       throws IOException {
     MemberIdentifier m = this.localAddress;
     m.getMemberData().writeEssentialData(out_stream,
         services.getSerializer().createSerializationContext(out_stream));
     services.getSerializer().getObjectSerializer()
-        .writeObject(services.getManager().unwrapMessage(gfmsg), out_stream);
+        .writeObject(gfmsg, out_stream);
 
     return out_stream.toByteArray();
   }
 
-  void setMessageFlags(GMSMessage gfmsg, Message msg) {
+  void setMessageFlags(DistributionMessage gfmsg, Message msg) {
     // Bundling is mostly only useful if we're doing no-ack work,
     // which is fairly rare
     msg.setFlag(Flag.DONT_BUNDLE);
@@ -996,7 +997,7 @@ public class JGroupsMessenger implements Messenger {
 
 
   /**
-   * deserialize a jgroups payload. If it's a DistributionMessage find the ID of the sender and
+   * deserialize a jgroups payload. If it's a ClusterMessage find the ID of the sender and
    * establish it as the message's sender
    */
   Object readJGMessage(Message jgmsg) {
@@ -1059,7 +1060,7 @@ public class JGroupsMessenger implements Messenger {
     return result;
   }
 
-  void setSender(GMSMessage dm, MemberIdentifier m, short ordinal) {
+  void setSender(DistributionMessage dm, MemberIdentifier m, short ordinal) {
     MemberIdentifier sender = null;
     // JoinRequestMessages are sent with an ID that may have been
     // reused from a previous life by way of auto-reconnect,
@@ -1074,7 +1075,7 @@ public class JGroupsMessenger implements Messenger {
   }
 
   @SuppressWarnings("resource")
-  GMSMessage readEncryptedMessage(DataInputStream dis, short ordinal,
+  DistributionMessage readEncryptedMessage(DataInputStream dis, short ordinal,
       GMSEncrypt encryptLocal) throws Exception {
     int dfsid = services.getSerializer().readDSFIDHeader(dis);
     int requestId = dis.readInt();
@@ -1127,7 +1128,7 @@ public class JGroupsMessenger implements Messenger {
               Version.fromOrdinalNoThrow((short) ordinal, false));
         }
 
-        GMSMessage result = deserializeMessage(in, ordinal);
+        DistributionMessage result = deserializeMessage(in, ordinal);
 
         if (pk != null) {
           logger.info("Setting public key for " + result.getSender() + " len " + pk.length);
@@ -1144,13 +1145,12 @@ public class JGroupsMessenger implements Messenger {
 
   }
 
-  GMSMessage deserializeMessage(DataInputStream in, short ordinal)
+  DistributionMessage deserializeMessage(DataInputStream in, short ordinal)
       throws ClassNotFoundException, IOException {
     GMSMemberData info = new GMSMemberData();
     info.readEssentialData(in, services.getSerializer().createDeserializationContext(in));
     MemberIdentifier m = services.getMemberFactory().create(info);
-    GMSMessage result = services.getManager()
-        .wrapMessage(services.getSerializer().getObjectDeserializer().readObject(in));
+    DistributionMessage result = services.getSerializer().getObjectDeserializer().readObject(in);
 
     setSender(result, m, ordinal);
 
@@ -1158,7 +1158,7 @@ public class JGroupsMessenger implements Messenger {
   }
 
   /** look for certain messages that may need to be altered before being sent */
-  void filterOutgoingMessage(GMSMessage m) {
+  void filterOutgoingMessage(DistributionMessage m) {
     switch (m.getDSFID()) {
       case JOIN_RESPONSE:
         JoinResponseMessage jrsp = (JoinResponseMessage) m;
@@ -1182,7 +1182,7 @@ public class JGroupsMessenger implements Messenger {
     }
   }
 
-  void filterIncomingMessage(GMSMessage m) {
+  void filterIncomingMessage(DistributionMessage m) {
     switch (m.getDSFID()) {
       case JOIN_RESPONSE:
         JoinResponseMessage jrsp = (JoinResponseMessage) m;
@@ -1302,7 +1302,7 @@ public class JGroupsMessenger implements Messenger {
           return;
         }
 
-        GMSMessage msg = services.getManager().wrapMessage(o);
+        DistributionMessage msg = (DistributionMessage) o;
 
         // admin-only VMs don't have caches, so we ignore cache operations
         // multicast to them, avoiding deserialization cost and classpath
@@ -1360,7 +1360,7 @@ public class JGroupsMessenger implements Messenger {
      * returns the handler that should process the given message. The default handler is the
      * membership manager
      */
-    private MessageHandler getMessageHandler(GMSMessage msg) {
+    private MessageHandler getMessageHandler(DistributionMessage msg) {
       Class<?> msgClazz = msg.getClass();
       MessageHandler h = handlers.get(msgClazz);
       if (h == null) {
@@ -1380,7 +1380,7 @@ public class JGroupsMessenger implements Messenger {
   }
 
   @Override
-  public Set<MemberIdentifier> send(GMSMessage msg, GMSMembershipView alternateView) {
+  public Set<MemberIdentifier> send(DistributionMessage msg, GMSMembershipView alternateView) {
     if (this.encrypt != null) {
       this.encrypt.installView(alternateView);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/package.html b/geode-core/src/main/java/org/apache/geode/distributed/internal/package.html
index 32cdf7e..29b750b 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/package.html
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/package.html
@@ -23,7 +23,7 @@ VMs, the GemFire console) has an
 instance of {@link
 org.apache.geode.distributed.internal.DistributionManager}
 that is responsible for sending and receiving {@link
-org.apache.geode.distributed.internal.DistributionMessage}s.
+org.apache.geode.distributed.internal.ClusterMessage}s.
 A <code>DistributionManager</code> has a unique {@link
 org.apache.geode.distributed.internal.DistributionManager#getId
 id} and uses a MembershipManager to discover the other members of the distributed system.  It
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 2c58893..4cac368 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
@@ -42,8 +42,8 @@ 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.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
@@ -101,7 +101,7 @@ public abstract class StreamingOperation {
     }
 
     StreamingProcessor processor = new StreamingProcessor(this.sys, recipients);
-    DistributionMessage m = createRequestMessage(recipients, processor);
+    ClusterMessage m = createRequestMessage(recipients, processor);
     this.sys.getDistributionManager().putOutgoing(m);
     // while() loop removed for bug 36983 - you can't loop on waitForReplies()
     try {
@@ -122,7 +122,7 @@ public abstract class StreamingOperation {
   /**
    * Override in subclass to instantiate request message
    */
-  protected abstract DistributionMessage createRequestMessage(Set recipients,
+  protected abstract ClusterMessage createRequestMessage(Set recipients,
       ReplyProcessor21 processor);
 
   /**
@@ -189,7 +189,7 @@ public abstract class StreamingOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // ignore messages from members not in the wait list
       if (!waitingOnMember(msg.getSender())) {
         return;
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 772d7fa..6594e61 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
@@ -21,6 +21,7 @@ import java.io.IOException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.serialization.DataSerializableFixedID;
@@ -64,7 +65,7 @@ public class ClientMembershipMessage extends PooledDistributionMessage {
 
   /**
    *
-   * @see org.apache.geode.distributed.internal.DistributionMessage#process(ClusterDistributionManager)
+   * @see ClusterMessage#process(ClusterDistributionManager)
    */
   @Override
   protected void process(ClusterDistributionManager dm) {
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 a0fa2c4..73971ad 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,8 +16,8 @@ package org.apache.geode.internal.admin.remote;
 
 import java.util.Collection;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 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;
 
@@ -33,7 +33,7 @@ public class AdminMultipleReplyProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  protected void process(DistributionMessage message, boolean warn) {
+  protected void process(ClusterMessage message, boolean warn) {
     if (message instanceof AdminFailureResponse) {
       Exception ex = ((AdminFailureResponse) message).getCause();
       if (ex != null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminReplyProcessor.java
index c930842..f021023 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/AdminReplyProcessor.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.internal.admin.remote;
 
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -69,7 +69,7 @@ class AdminReplyProcessor extends ReplyProcessor21 {
    * Keep track of the <code>AdminResponse</code> we received.
    */
   @Override
-  public void process(DistributionMessage message) {
+  public void process(ClusterMessage message) {
     try {
       this.response = (AdminResponse) message;
 
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 9e335bf..4a0ea32 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
@@ -176,7 +176,7 @@ public abstract class AdminRequest extends PooledDistributionMessage {
   }
 
   public InternalDistributedMember getRecipient() {
-    InternalDistributedMember[] recipients = getRecipients();
+    InternalDistributedMember[] recipients = getRecipientsArray();
     int size = recipients.length;
     if (size == 0) {
       return null;
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 a332937..8fda507 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
@@ -77,7 +77,7 @@ public abstract class AdminResponse extends HighPriorityDistributionMessage
   }
 
   public InternalDistributedMember getRecipient() {
-    InternalDistributedMember[] recipients = getRecipients();
+    InternalDistributedMember[] recipients = getRecipientsArray();
     int size = recipients.length;
     if (size == 0) {
       return null;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
index e812589..69a3a3c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/CompactRequest.java
@@ -31,8 +31,8 @@ import org.apache.geode.cache.DiskStore;
 import org.apache.geode.cache.persistence.PersistentID;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.cache.InternalCache;
@@ -115,7 +115,7 @@ public class CompactRequest extends CliLegacyMessage {
 
   @Override
   public String toString() {
-    return "Compact request sent to " + ArrayUtils.toString((Object[]) this.getRecipients())
+    return "Compact request sent to " + ArrayUtils.toString((Object[]) this.getRecipientsArray())
         + " from " + this.getSender();
   }
 
@@ -138,7 +138,7 @@ public class CompactRequest extends CliLegacyMessage {
     }
 
     @Override
-    protected void process(DistributionMessage message, boolean warn) {
+    protected void process(ClusterMessage message, boolean warn) {
       if (message instanceof CompactResponse) {
         final Set<PersistentID> persistentIds = ((CompactResponse) message).getPersistentIds();
         if (persistentIds != null && !persistentIds.isEmpty()) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/MissingPersistentIDsRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/MissingPersistentIDsRequest.java
index a92d4e6..b1fd10a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/MissingPersistentIDsRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/MissingPersistentIDsRequest.java
@@ -27,8 +27,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.cache.DiskStore;
 import org.apache.geode.cache.persistence.PersistentID;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.cache.InternalCache;
@@ -127,7 +127,7 @@ public class MissingPersistentIDsRequest extends CliLegacyMessage {
     }
 
     @Override
-    protected void process(DistributionMessage message, boolean warn) {
+    protected void process(ClusterMessage message, boolean warn) {
       if (message instanceof MissingPersistentIDsResponse) {
         this.missing.addAll(((MissingPersistentIDsResponse) message).getMissingIds());
         this.existing.addAll(((MissingPersistentIDsResponse) message).getLocalIds());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
index 0c73c64..9a547dd 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
@@ -32,7 +32,7 @@ import org.apache.geode.admin.OperationCancelledException;
 import org.apache.geode.admin.RegionSubRegionSnapshot;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionAttributes;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Config;
 import org.apache.geode.internal.admin.AdminBridgeServer;
@@ -936,7 +936,7 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    * Sends a message to this dm (that is, to member of the distributed system represented by this
    * <code>RemoteGemFireVM</code>) and does not wait for a response
    */
-  void sendAsync(DistributionMessage msg) {
+  void sendAsync(ClusterMessage msg) {
     msg.setRecipient(id);
     if (msg instanceof AdminRequest) {
       ((AdminRequest) msg).setModifiedClasspath(inspectionClasspath);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java
index 864925b..78c3307 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java
@@ -42,9 +42,9 @@ import org.apache.geode.admin.RuntimeAdminException;
 import org.apache.geode.annotations.internal.MakeNotStatic;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem.DisconnectListener;
 import org.apache.geode.distributed.internal.InternalDistributedSystem.ReconnectListener;
@@ -583,7 +583,7 @@ class RemoteGfManagerAgent implements GfManagerAgent {
   /**
    * Sends a message and does not wait for a response
    */
-  void sendAsync(DistributionMessage msg) {
+  void sendAsync(ClusterMessage msg) {
     if (system != null) {
       system.getDistributionManager().putOutgoing(msg);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllGatewayHubsRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllGatewayHubsRequest.java
index d7e8d21..62b98a6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllGatewayHubsRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllGatewayHubsRequest.java
@@ -19,7 +19,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.internal.serialization.DeserializationContext;
@@ -37,7 +37,7 @@ import org.apache.geode.internal.serialization.SerializationContext;
  * @since Geode 1.0
  *
  */
-public class ShutdownAllGatewayHubsRequest extends DistributionMessage {
+public class ShutdownAllGatewayHubsRequest extends ClusterMessage {
 
   protected int rpid;
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
index db7622a..e2aa8d6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/ShutdownAllRequest.java
@@ -31,9 +31,9 @@ import org.apache.geode.InternalGemFireError;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.InternalLocator;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -236,7 +236,7 @@ public class ShutdownAllRequest extends AdminRequest {
 
   @Override
   public String toString() {
-    return "ShutdownAllRequest sent to " + Arrays.toString(this.getRecipients()) + " from "
+    return "ShutdownAllRequest sent to " + Arrays.toString(this.getRecipientsArray()) + " from "
         + this.getSender();
   }
 
@@ -257,7 +257,7 @@ public class ShutdownAllRequest extends AdminRequest {
      * member is departed before sent response, no wait for its response
      */
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (logger.isDebugEnabled()) {
         logger.debug("shutdownAll reply processor is processing {}", msg);
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/CreateRegionProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/CreateRegionProcessor.java
index 2e8c45e..d715945 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/CreateRegionProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/CreateRegionProcessor.java
@@ -36,9 +36,9 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionAdvisee;
 import org.apache.geode.distributed.internal.DistributionAdvisor;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -224,7 +224,7 @@ public class CreateRegionProcessor implements ProfileExchangeProcessor {
 
     @SuppressWarnings("unchecked")
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       Assert.assertTrue(msg instanceof CreateRegionReplyMessage,
           "CreateRegionProcessor is unable to process message of type " + msg.getClass());
       CreateRegionReplyMessage reply = (CreateRegionReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DirectReplyMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DirectReplyMessage.java
index c0ef026..8ebd463 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DirectReplyMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DirectReplyMessage.java
@@ -14,9 +14,9 @@
  */
 package org.apache.geode.internal.cache;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 
 /**
  * A message that can reply directly to the sender
@@ -35,7 +35,7 @@ public interface DirectReplyMessage {
    * was sent on. This flag only takes effect when
    * {@link org.apache.geode.distributed.DistributedSystem#setThreadsSocketPolicy(boolean)} is set
    * to <code>false</code> If this flag is set to true, the process method <b> must </b> reply by
-   * calling {@link DistributionMessage#getReplySender(DistributionManager)} and using the result to
+   * calling {@link ClusterMessage#getReplySender(DistributionManager)} and using the result to
    * send the reply. the ReplySender determines whether to reply directly or through the shared
    * channel.
    *
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXCommitMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXCommitMessage.java
index 8cd7c7f..bcc9f7e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXCommitMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXCommitMessage.java
@@ -35,8 +35,8 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.UnsupportedOperationInTransactionException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -297,7 +297,7 @@ public class DistTXCommitMessage extends TXMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof DistTXCommitReplyMessage) {
         DistTXCommitReplyMessage reply = (DistTXCommitReplyMessage) msg;
         this.commitResponseMap.put(reply.getSender(), reply.getCommitMessage());
@@ -314,7 +314,7 @@ public class DistTXCommitMessage extends TXMessage {
     }
 
     @Override
-    protected void processException(DistributionMessage msg, ReplyException ex) {
+    protected void processException(ClusterMessage msg, ReplyException ex) {
       if (msg instanceof ReplyMessage) {
         synchronized (this) {
           if (this.exception == null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXPrecommitMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXPrecommitMessage.java
index 29341c6..c6c340f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXPrecommitMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXPrecommitMessage.java
@@ -36,8 +36,8 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.UnsupportedOperationInTransactionException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -300,7 +300,7 @@ public class DistTXPrecommitMessage extends TXMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof DistTXPrecommitReplyMessage) {
         DistTXPrecommitReplyMessage reply = (DistTXPrecommitReplyMessage) msg;
         this.commitResponseMap.put(reply.getSender(), reply.getCommitResponse());
@@ -317,7 +317,7 @@ public class DistTXPrecommitMessage extends TXMessage {
     }
 
     @Override
-    protected void processException(DistributionMessage msg, ReplyException ex) {
+    protected void processException(ClusterMessage msg, ReplyException ex) {
       if (msg instanceof ReplyMessage) {
         synchronized (this) {
           if (this.exception == null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
index b4b56d1..ad04920 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
@@ -34,8 +34,8 @@ import org.apache.geode.cache.CommitIncompleteException;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -246,7 +246,7 @@ public class DistTXRollbackMessage extends TXMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (DistributionStats.enableClockStats) {
         this.start = DistributionStats.getStatTime();
       }
@@ -296,7 +296,7 @@ public class DistTXRollbackMessage extends TXMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof DistTXRollbackReplyMessage) {
         DistTXRollbackReplyMessage reply = (DistTXRollbackReplyMessage) msg;
         this.rollbackResponseMap.put(reply.getSender(), reply.getRollbackState());
@@ -313,7 +313,7 @@ public class DistTXRollbackMessage extends TXMessage {
     }
 
     @Override
-    protected void processException(DistributionMessage msg, ReplyException ex) {
+    protected void processException(ClusterMessage msg, ReplyException ex) {
       if (msg instanceof ReplyMessage) {
         synchronized (this) {
           if (this.exception == null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedCacheOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedCacheOperation.java
index 1010288..6914244 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedCacheOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedCacheOperation.java
@@ -47,9 +47,9 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.query.internal.cq.CqService;
 import org.apache.geode.cache.query.internal.cq.ServerCQ;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -153,7 +153,7 @@ public abstract class DistributedCacheOperation {
 
 
   public static final byte DESERIALIZATION_POLICY_NUMBITS =
-      DistributionMessage.getNumBits(DESERIALIZATION_POLICY_LAZY);
+      ClusterMessage.getNumBits(DESERIALIZATION_POLICY_LAZY);
 
   public static final short DESERIALIZATION_POLICY_END =
       (short) (1 << DESERIALIZATION_POLICY_NUMBITS);
@@ -904,7 +904,7 @@ public abstract class DistributedCacheOperation {
       implements MessageWithReply, DirectReplyMessage, OldValueImporter {
 
     protected static final short POSSIBLE_DUPLICATE_MASK = POS_DUP;
-    protected static final short OLD_VALUE_MASK = DistributionMessage.UNRESERVED_FLAGS_START;
+    protected static final short OLD_VALUE_MASK = ClusterMessage.UNRESERVED_FLAGS_START;
     protected static final short DIRECT_ACK_MASK = (OLD_VALUE_MASK << 1);
     protected static final short FILTER_INFO_MASK = (DIRECT_ACK_MASK << 1);
     protected static final short CALLBACK_ARG_MASK = (FILTER_INFO_MASK << 1);
@@ -1568,7 +1568,7 @@ public abstract class DistributedCacheOperation {
     }
 
     @Override
-    protected synchronized void processException(DistributionMessage dmsg, ReplyException ex) {
+    protected synchronized void processException(ClusterMessage dmsg, ReplyException ex) {
       Throwable cause = ex.getCause();
       // only interested in CacheClosedException and RegionDestroyedException
       if (cause instanceof CancelException || cause instanceof RegionDestroyedException) {
@@ -1581,7 +1581,7 @@ public abstract class DistributedCacheOperation {
     }
 
     @Override
-    protected void process(DistributionMessage dmsg, boolean warn) {
+    protected void process(ClusterMessage dmsg, boolean warn) {
       if (dmsg instanceof ReplyMessage && ((ReplyMessage) dmsg).getIgnored()) {
         if (logger.isDebugEnabled()) {
           logger.debug("{} replied with ignored true", dmsg.getSender());
@@ -1602,7 +1602,7 @@ public abstract class DistributedCacheOperation {
     }
 
     @Override
-    protected void process(final DistributionMessage dmsg, boolean warn) {
+    protected void process(final ClusterMessage dmsg, boolean warn) {
       if (dmsg instanceof ReplyMessage) {
         ReplyMessage replyMessage = (ReplyMessage) dmsg;
         if (msg != null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegionFunctionStreamingMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegionFunctionStreamingMessage.java
index 1376818..a79a07b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegionFunctionStreamingMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistributedRegionFunctionStreamingMessage.java
@@ -34,8 +34,8 @@ import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionException;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -47,7 +47,7 @@ import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
-public class DistributedRegionFunctionStreamingMessage extends DistributionMessage
+public class DistributedRegionFunctionStreamingMessage extends ClusterMessage
     implements TransactionMessage {
 
   private static final Logger logger = LogService.getLogger();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java
index a71dce8..3a7c05c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/EntryEventImpl.java
@@ -45,8 +45,8 @@ import org.apache.geode.cache.query.internal.index.IndexUtils;
 import org.apache.geode.cache.util.TimestampedEntryEvent;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.Assert;
@@ -150,7 +150,7 @@ public class EntryEventImpl implements InternalEntryEvent, InternalCacheEvent,
   /**
    * transient storage for the message that caused the event
    */
-  transient DistributionMessage causedByMessage;
+  transient ClusterMessage causedByMessage;
 
   /**
    * The originating membershipId of this event.
@@ -580,8 +580,8 @@ public class EntryEventImpl implements InternalEntryEvent, InternalCacheEvent,
     return testEventFlag(EventFlags.FLAG_CONCURRENCY_CONFLICT);
   }
 
-  /** set the DistributionMessage that caused this event */
-  public void setCausedByMessage(DistributionMessage msg) {
+  /** set the ClusterMessage that caused this event */
+  public void setCausedByMessage(ClusterMessage msg) {
     this.causedByMessage = msg;
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/FilterProfile.java b/geode-core/src/main/java/org/apache/geode/internal/cache/FilterProfile.java
index 158f185..88b5eb2 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/FilterProfile.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/FilterProfile.java
@@ -1850,7 +1850,7 @@ public class FilterProfile implements DataSerializableFixedID {
     /*
      * (non-Javadoc)
      *
-     * @see org.apache.geode.distributed.internal.DistributionMessage#process(org.apache.geode.
+     * @see org.apache.geode.distributed.internal.ClusterMessage#process(org.apache.geode.
      * distributed.internal.DistributionManager)
      */
     @Override
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/FindDurableQueueProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/FindDurableQueueProcessor.java
index 79d9e58..ba78690 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/FindDurableQueueProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/FindDurableQueueProcessor.java
@@ -27,8 +27,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -94,7 +94,7 @@ public class FindDurableQueueProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     // TODO Auto-generated method stub
     if (msg instanceof FindDurableQueueReply) {
       FindDurableQueueReply reply = (FindDurableQueueReply) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/FindRemoteTXMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/FindRemoteTXMessage.java
index 1e787ba..99b19d5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/FindRemoteTXMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/FindRemoteTXMessage.java
@@ -27,8 +27,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -192,7 +192,7 @@ public class FindRemoteTXMessage extends HighPriorityDistributionMessage
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof FindRemoteTXMessageReply) {
         FindRemoteTXMessageReply reply = (FindRemoteTXMessageReply) msg;
         if (reply.isHostingTx) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/FindVersionTagOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/FindVersionTagOperation.java
index 433c4ae..2b669b5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/FindVersionTagOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/FindVersionTagOperation.java
@@ -25,8 +25,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -71,7 +71,7 @@ public class FindVersionTagOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof VersionTagReply) {
         VersionTagReply reply = (VersionTagReply) msg;
         if (reply.versionTag != null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageFlowControl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageFlowControl.java
index 264f5c8..a137e9b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageFlowControl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageFlowControl.java
@@ -27,8 +27,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.annotations.internal.MakeNotStatic;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MembershipListener;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ProcessorKeeper21;
@@ -199,7 +199,7 @@ public class InitialImageFlowControl implements MembershipListener {
   }
 
 
-  public static class FlowControlPermitMessage extends DistributionMessage
+  public static class FlowControlPermitMessage extends ClusterMessage
       implements DataSerializableFixedID {
     private int keeperId;
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java
index 82d93d6..e0dc756 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java
@@ -56,9 +56,9 @@ import org.apache.geode.cache.query.internal.cq.CqService;
 import org.apache.geode.cache.query.internal.cq.ServerCQ;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -1288,10 +1288,10 @@ public class InitialImageOperation {
      *
      * @see
      * org.apache.geode.distributed.internal.ReplyProcessor21#process(org.apache.geode.distributed.
-     * internal.DistributionMessage)
+     * internal.ClusterMessage)
      */
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // ignore messages from members not in the wait list
       if (!waitingOnMember(msg.getSender())) {
         return;
@@ -1529,7 +1529,7 @@ public class InitialImageOperation {
   /**
    * This is the message that initiates a request for an image
    */
-  public static class RequestImageMessage extends DistributionMessage implements MessageWithReply {
+  public static class RequestImageMessage extends ClusterMessage implements MessageWithReply {
 
     /**
      * a version vector is transmitted with the request if we are merely synchronizing with an
@@ -2207,7 +2207,7 @@ public class InitialImageOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // ignore messages from members not in the wait list
       if (!waitingOnMember(msg.getSender())) {
         return;
@@ -2264,7 +2264,7 @@ public class InitialImageOperation {
   /**
    * This is the message thats sent to get Filter information.
    */
-  public static class RequestFilterInfoMessage extends DistributionMessage
+  public static class RequestFilterInfoMessage extends ClusterMessage
       implements MessageWithReply {
 
     /**
@@ -2404,7 +2404,7 @@ public class InitialImageOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       final boolean isGiiDebugEnabled = logger.isTraceEnabled(LogMarker.INITIAL_IMAGE_VERBOSE);
 
       ReplyMessage reply = (ReplyMessage) msg;
@@ -2536,7 +2536,7 @@ public class InitialImageOperation {
   /**
    * This is the message thats sent to get RVV from GII provider.
    */
-  public static class RequestRVVMessage extends DistributionMessage implements MessageWithReply {
+  public static class RequestRVVMessage extends ClusterMessage implements MessageWithReply {
 
     /**
      * Name of the region.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeReplyProcessor.java
index 408079f..f054385 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeReplyProcessor.java
@@ -18,8 +18,8 @@ import java.util.Set;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -43,7 +43,7 @@ public class LatestLastAccessTimeReplyProcessor extends ReplyProcessor21 {
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     try {
       ReplyMessage reply = (ReplyMessage) msg;
       long replyTime = (long) reply.getReturnValue();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/MemberFunctionStreamingMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/MemberFunctionStreamingMessage.java
index 2168649..7b242c8 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/MemberFunctionStreamingMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/MemberFunctionStreamingMessage.java
@@ -35,8 +35,8 @@ import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultSender;
 import org.apache.geode.cache.query.QueryException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -54,7 +54,7 @@ import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
-public class MemberFunctionStreamingMessage extends DistributionMessage
+public class MemberFunctionStreamingMessage extends ClusterMessage
     implements TransactionMessage, MessageWithReply {
 
   private static final Logger logger = LogService.getLogger();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluator.java b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluator.java
index 71731c5..f9ccb14 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluator.java
@@ -63,8 +63,8 @@ import org.apache.geode.cache.query.internal.utils.PDXUtils;
 import org.apache.geode.cache.query.types.ObjectType;
 import org.apache.geode.cache.query.types.StructType;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -165,7 +165,7 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
   }
 
   @Override
-  protected DistributionMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
+  protected ClusterMessage createRequestMessage(Set recipients, ReplyProcessor21 processor) {
     throw new UnsupportedOperationException();
   }
 
@@ -445,7 +445,7 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
     return requiresRetry | localNeedsRetry;
   }
 
-  protected Set sendMessage(DistributionMessage m) {
+  protected Set sendMessage(ClusterMessage m) {
     return this.sys.getDistributionManager().putOutgoing(m);
   }
 
@@ -1093,7 +1093,7 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // ignore messages from members not in the wait list
       if (!waitingOnMember(msg.getSender())) {
         return;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/SearchLoadAndWriteProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/SearchLoadAndWriteProcessor.java
index 8164ef8..9cd0c9a 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/SearchLoadAndWriteProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/SearchLoadAndWriteProcessor.java
@@ -978,7 +978,7 @@ public class SearchLoadAndWriteProcessor implements MembershipListener {
       ClusterDistributionManager dm, VersionTag versionTag) {
     // NOTE: keep this method efficient since it is optimized
     // by executing it in the p2p reader.
-    // This is done with this line in DistributionMessage.java:
+    // This is done with this line in ClusterMessage.java:
     // || c.equals(SearchLoadAndWriteProcessor.ResponseMessage.class)
 
     // bug 35266 - don't pay attention to late breaking "get" responses
@@ -1666,7 +1666,7 @@ public class SearchLoadAndWriteProcessor implements MembershipListener {
     protected void process(ClusterDistributionManager dm) {
       // NOTE: keep this method efficient since it is optimized
       // by executing it in the p2p reader.
-      // This is done with this line in DistributionMessage.java:
+      // This is done with this line in ClusterMessage.java:
       // || c.equals(SearchLoadAndWriteProcessor.ResponseMessage.class)
       SearchLoadAndWriteProcessor processor = null;
       processor = (SearchLoadAndWriteProcessor) getProcessorKeeper().retrieve(this.processorId);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
index b4d5d80..29e856f 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/StateFlushOperation.java
@@ -34,8 +34,8 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -271,7 +271,7 @@ public class StateFlushOperation {
    * @see StateFlushOperation.StateStabilizedMessage
    *
    */
-  public static class StateMarkerMessage extends DistributionMessage implements MessageWithReply {
+  public static class StateMarkerMessage extends ClusterMessage implements MessageWithReply {
     /** roll the membership version to force flushing of new ops */
     public boolean flushNewOps;
     /** the member acting as the relay point */
@@ -721,7 +721,7 @@ public class StateFlushOperation {
         sb.append(" from ");
         sb.append(super.getSender());
       }
-      if (getRecipients().length > 0) {
+      if (getRecipientsArray().length > 0) {
         String recip = getRecipientsDescription();
         sb.append(" to ");
         sb.append(recip);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java
index 893c117..122c365 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java
@@ -49,8 +49,8 @@ import org.apache.geode.cache.TransactionId;
 import org.apache.geode.cache.TransactionListener;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MembershipListener;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
@@ -1961,7 +1961,7 @@ public class TXCommitMessage extends PooledDistributionMessage
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       CommitProcessQueryReplyMessage ccMess = (CommitProcessQueryReplyMessage) msg;
       if (ccMess.wasReceived()) {
         this.receivedOnePositive = true;
@@ -2169,7 +2169,7 @@ public class TXCommitMessage extends PooledDistributionMessage
     }
 
     @Override
-    protected void processException(DistributionMessage msg, ReplyException ex) {
+    protected void processException(ClusterMessage msg, ReplyException ex) {
       if (msg instanceof ReplyMessage) {
         synchronized (this) {
           if (this.exception == null) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TXRemoteCommitMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TXRemoteCommitMessage.java
index 6a427ae..d86df18 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/TXRemoteCommitMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TXRemoteCommitMessage.java
@@ -26,8 +26,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -260,7 +260,7 @@ public class TXRemoteCommitMessage extends TXMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (DistributionStats.enableClockStats) {
         this.start = DistributionStats.getStatTime();
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TransactionMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TransactionMessage.java
index c4ae22b..34f947e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/TransactionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TransactionMessage.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode.internal.cache;
 
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
 /**
@@ -46,7 +46,7 @@ public interface TransactionMessage {
   boolean canStartRemoteTransaction();
 
   /**
-   * @see DistributionMessage#getSender()
+   * @see ClusterMessage#getSender()
    * @return the sender of this message
    */
   InternalDistributedMember getSender();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/UpdateAttributesProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/UpdateAttributesProcessor.java
index ef106d2..6251b0d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/UpdateAttributesProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/UpdateAttributesProcessor.java
@@ -29,11 +29,11 @@ import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionAdvisee;
 import org.apache.geode.distributed.internal.DistributionAdvisor;
 import org.apache.geode.distributed.internal.DistributionAdvisor.Profile;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
@@ -233,7 +233,7 @@ public class UpdateAttributesProcessor {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof ProfilesReplyMessage) {
           ProfilesReplyMessage reply = (ProfilesReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/AbortBackupStep.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/AbortBackupStep.java
index cc0eccc..fd9a78d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/AbortBackupStep.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/AbortBackupStep.java
@@ -18,8 +18,8 @@ import java.util.Collections;
 import java.util.Set;
 
 import org.apache.geode.cache.persistence.PersistentID;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InternalCache;
@@ -58,7 +58,7 @@ class AbortBackupStep extends BackupStep {
   }
 
   @Override
-  DistributionMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
+  ClusterMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
     return abortBackupFactory.createRequest(member, recipients, replyProcessor.getProcessorId());
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupReplyProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupReplyProcessor.java
index ed30321..05326ea 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupReplyProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupReplyProcessor.java
@@ -16,8 +16,8 @@ package org.apache.geode.internal.cache.backup;
 
 import java.util.Set;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.internal.admin.remote.AdminMultipleReplyProcessor;
 
@@ -49,7 +49,7 @@ class BackupReplyProcessor extends AdminMultipleReplyProcessor {
   }
 
   @Override
-  protected void process(DistributionMessage message, boolean warn) {
+  protected void process(ClusterMessage message, boolean warn) {
     if (message instanceof BackupResponse) {
       BackupResponse response = (BackupResponse) message;
       resultCollector.addToResults(response.getSender(), response.getPersistentIds());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupStep.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupStep.java
index 9ca120c..fcacb9f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupStep.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupStep.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.cache.persistence.PersistentID;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -44,7 +44,7 @@ abstract class BackupStep implements BackupResultCollector {
 
   abstract ReplyProcessor21 createReplyProcessor();
 
-  abstract DistributionMessage createDistributionMessage(ReplyProcessor21 replyProcessor);
+  abstract ClusterMessage createDistributionMessage(ReplyProcessor21 replyProcessor);
 
   abstract void processLocally();
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupStep.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupStep.java
index 7a07afe..d0753f7 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupStep.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupStep.java
@@ -19,8 +19,8 @@ import java.util.Set;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InternalCache;
@@ -50,7 +50,7 @@ class FinishBackupStep extends BackupStep {
   }
 
   @Override
-  DistributionMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
+  ClusterMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
     return finishBackupFactory.createRequest(member, recipients, replyProcessor.getProcessorId());
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskProcessor.java
index 254e0ab..683cf81 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskProcessor.java
@@ -16,8 +16,8 @@ package org.apache.geode.internal.cache.backup;
 
 import java.util.Collection;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.internal.admin.remote.AdminMultipleReplyProcessor;
 
 class FlushToDiskProcessor extends AdminMultipleReplyProcessor {
@@ -32,7 +32,7 @@ class FlushToDiskProcessor extends AdminMultipleReplyProcessor {
   }
 
   @Override
-  protected void process(DistributionMessage message, boolean warn) {
+  protected void process(ClusterMessage message, boolean warn) {
     super.process(message, warn);
   }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskStep.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskStep.java
index 57cd1d5..c471455 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskStep.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskStep.java
@@ -16,8 +16,8 @@ package org.apache.geode.internal.cache.backup;
 
 import java.util.Set;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InternalCache;
@@ -45,7 +45,7 @@ class FlushToDiskStep extends BackupStep {
   }
 
   @Override
-  DistributionMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
+  ClusterMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
     return flushToDiskFactory.createRequest(member, recipients,
         replyProcessor.getProcessorId());
   }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupStep.java b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupStep.java
index 6a868a9..497e1e6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupStep.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupStep.java
@@ -20,8 +20,8 @@ import java.util.Set;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.InternalCache;
@@ -53,7 +53,7 @@ class PrepareBackupStep extends BackupStep {
   }
 
   @Override
-  DistributionMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
+  ClusterMessage createDistributionMessage(ReplyProcessor21 replyProcessor) {
     return prepareBackupFactory.createRequest(member, recipients, replyProcessor.getProcessorId(),
         properties);
   }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionResultWaiter.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionResultWaiter.java
index 9817e02..7f67ad1 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionResultWaiter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionResultWaiter.java
@@ -20,7 +20,7 @@ import java.util.Set;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.execute.ResultSender;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.DistributedRegionFunctionStreamingMessage;
@@ -40,7 +40,7 @@ public class DistributedRegionFunctionResultWaiter extends StreamingFunctionOper
   }
 
   @Override
-  protected DistributionMessage createRequestMessage(Set recipients,
+  protected ClusterMessage createRequestMessage(Set recipients,
       FunctionStreamingResultCollector processor, boolean isReExecute,
       boolean isFnSerializationReqd) {
     DistributedRegionFunctionStreamingMessage msg = new DistributedRegionFunctionStreamingMessage(
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionStreamingResultCollector.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionStreamingResultCollector.java
index 1664a7f..c315494 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionStreamingResultCollector.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionStreamingResultCollector.java
@@ -36,8 +36,8 @@ import org.apache.geode.cache.execute.FunctionInvocationTargetException;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -500,7 +500,7 @@ public class FunctionStreamingResultCollector extends ReplyProcessor21
   }
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     if (!waitingOnMember(msg.getSender())) {
       return;
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultWaiter.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultWaiter.java
index f7d66c1..bd38bce 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultWaiter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultWaiter.java
@@ -20,7 +20,7 @@ import java.util.Set;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.execute.ResultSender;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.MemberFunctionStreamingMessage;
@@ -34,7 +34,7 @@ public class MemberFunctionResultWaiter extends StreamingFunctionOperation {
   }
 
   @Override
-  protected DistributionMessage createRequestMessage(Set recipients,
+  protected ClusterMessage createRequestMessage(Set recipients,
       FunctionStreamingResultCollector processor, boolean isReExecute,
       boolean isFnSerializationReqd) {
     MemberFunctionStreamingMessage msg =
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionResultWaiter.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionResultWaiter.java
index f29aba5..dad65c8 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionResultWaiter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionResultWaiter.java
@@ -21,7 +21,7 @@ import java.util.Set;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.execute.ResultSender;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.MemberFunctionStreamingMessage;
@@ -39,7 +39,7 @@ public class MultiRegionFunctionResultWaiter extends StreamingFunctionOperation
   }
 
   @Override
-  protected DistributionMessage createRequestMessage(Set recipients,
+  protected ClusterMessage createRequestMessage(Set recipients,
       FunctionStreamingResultCollector processor, boolean isReExecute,
       boolean isFnSerializationReqd) {
     InternalDistributedMember target = (InternalDistributedMember) recipients.toArray()[0];
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultWaiter.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultWaiter.java
index e340168..3fe047f 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultWaiter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultWaiter.java
@@ -21,7 +21,7 @@ import java.util.Set;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -54,7 +54,7 @@ public class PartitionedRegionFunctionResultWaiter extends StreamingFunctionOper
 
 
   @Override
-  public DistributionMessage createRequestMessage(Set<InternalDistributedMember> singleton,
+  public ClusterMessage createRequestMessage(Set<InternalDistributedMember> singleton,
       FunctionStreamingResultCollector processor, boolean isReExecute,
       boolean isFnSerializationReqd) {
     return null;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/StreamingFunctionOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/StreamingFunctionOperation.java
index b419f52..2930ac0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/StreamingFunctionOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/StreamingFunctionOperation.java
@@ -22,7 +22,7 @@ import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.execute.ResultSender;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
@@ -95,7 +95,7 @@ public abstract class StreamingFunctionOperation {
         new FunctionStreamingResultCollector(this, this.sys, recipients, rc, function, execution);
     this.reply = processor;
     for (InternalDistributedMember recip : this.memberArgs.keySet()) {
-      DistributionMessage m = null;
+      ClusterMessage m = null;
       if (execution instanceof DistributedRegionFunctionExecutor
           || execution instanceof MultiRegionFunctionExecutor) {
         m = createRequestMessage(Collections.singleton(recip), processor, execution.isReExecute(),
@@ -109,7 +109,7 @@ public abstract class StreamingFunctionOperation {
     return processor;
   }
 
-  protected abstract DistributionMessage createRequestMessage(
+  protected abstract ClusterMessage createRequestMessage(
       Set<InternalDistributedMember> singleton, FunctionStreamingResultCollector processor,
       boolean isReExecute, boolean isFnSerializationReqd);
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/AllBucketProfilesUpdateMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/AllBucketProfilesUpdateMessage.java
index fd14a9a..0cef14b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/AllBucketProfilesUpdateMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/AllBucketProfilesUpdateMessage.java
@@ -27,8 +27,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -45,7 +45,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * @since GemFire 6.6
  */
-public class AllBucketProfilesUpdateMessage extends DistributionMessage
+public class AllBucketProfilesUpdateMessage extends ClusterMessage
     implements MessageWithReply {
   private static final Logger logger = LogService.getLogger();
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BecomePrimaryBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BecomePrimaryBucketMessage.java
index 9b8ff5a..b993a47 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BecomePrimaryBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BecomePrimaryBucketMessage.java
@@ -23,8 +23,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -268,7 +268,7 @@ public class BecomePrimaryBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof BecomePrimaryBucketReplyMessage) {
           BecomePrimaryBucketReplyMessage reply = (BecomePrimaryBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketProfileUpdateMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketProfileUpdateMessage.java
index 6482157..ea85d35 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketProfileUpdateMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketProfileUpdateMessage.java
@@ -26,8 +26,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -45,7 +45,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * @since GemFire 5.1
  */
-public class BucketProfileUpdateMessage extends DistributionMessage implements MessageWithReply {
+public class BucketProfileUpdateMessage extends ClusterMessage implements MessageWithReply {
   private static final Logger logger = LogService.getLogger();
 
   private static final long serialVersionUID = 1L;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketSizeMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketSizeMessage.java
index 4a59172..e27b2cf 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketSizeMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/BucketSizeMessage.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -245,7 +245,7 @@ public class BucketSizeMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof BucketSizeReplyMessage) {
           BucketSizeReplyMessage reply = (BucketSizeReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ContainsKeyValueMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ContainsKeyValueMessage.java
index 7da9092..67c5080 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ContainsKeyValueMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ContainsKeyValueMessage.java
@@ -25,9 +25,9 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -268,7 +268,7 @@ public class ContainsKeyValueMessage extends PartitionMessageWithDirectReply {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof ContainsKeyValueReplyMessage) {
           ContainsKeyValueReplyMessage reply = (ContainsKeyValueReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/CreateBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/CreateBucketMessage.java
index e71715d..f6147e9 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/CreateBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/CreateBucketMessage.java
@@ -25,8 +25,8 @@ import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.PartitionedRegionStorageException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -311,7 +311,7 @@ public class CreateBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof CreateBucketReplyMessage) {
           CreateBucketReplyMessage reply = (CreateBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DeposePrimaryBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DeposePrimaryBucketMessage.java
index 59c7bf5..75baf5d 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DeposePrimaryBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DeposePrimaryBucketMessage.java
@@ -23,8 +23,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -231,7 +231,7 @@ public class DeposePrimaryBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof DeposePrimaryBucketReplyMessage) {
           DeposePrimaryBucketReplyMessage reply = (DeposePrimaryBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DumpB2NRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DumpB2NRegion.java
index 52cdf06..f08de3c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DumpB2NRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/DumpB2NRegion.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.CacheException;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.TimeoutException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -261,7 +261,7 @@ public class DumpB2NRegion extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof DumpB2NReplyMessage) {
         DumpB2NReplyMessage reply = (DumpB2NReplyMessage) msg;
         if (reply.getPrimaryInfo() != null && reply.getPrimaryInfo().isHosting) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntriesMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntriesMessage.java
index 5f7b991..598660b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntriesMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntriesMessage.java
@@ -33,8 +33,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.annotations.Immutable;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -481,7 +481,7 @@ public class FetchEntriesMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // If the reply is a region version vector, store it in our RVV field.
       if (msg instanceof ReplyMessage) {
         ReplyMessage reply = (ReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntryMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntryMessage.java
index 2bdca50..bb198fc 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntryMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchEntryMessage.java
@@ -29,8 +29,8 @@ import org.apache.geode.cache.CacheException;
 import org.apache.geode.cache.EntryNotFoundException;
 import org.apache.geode.cache.TransactionException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -337,7 +337,7 @@ public class FetchEntryMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof FetchEntryReplyMessage) {
           FetchEntryReplyMessage reply = (FetchEntryReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchPartitionDetailsMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchPartitionDetailsMessage.java
index feea874..485e631 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchPartitionDetailsMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/FetchPartitionDetailsMessage.java
@@ -25,8 +25,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -323,7 +323,7 @@ public class FetchPartitionDetailsMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof FetchPartitionDetailsReplyMessage) {
           FetchPartitionDetailsReplyMessage reply = (FetchPartitionDetailsReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/GetMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/GetMessage.java
index bf9650f..1dfad2f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/GetMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/GetMessage.java
@@ -27,10 +27,10 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.InternalGemFireError;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -510,7 +510,7 @@ public class GetMessage extends PartitionMessageWithDirectReply {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (DistributionStats.enableClockStats) {
         this.start = DistributionStats.getStatTime();
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityRequestMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityRequestMessage.java
index 3504771..b29214d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityRequestMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityRequestMessage.java
@@ -25,8 +25,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.annotations.internal.MakeNotStatic;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -46,7 +46,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * @since GemFire 5.0
  */
-public class IdentityRequestMessage extends DistributionMessage implements MessageWithReply {
+public class IdentityRequestMessage extends ClusterMessage implements MessageWithReply {
   private static final Logger logger = LogService.getLogger();
 
   private static final int UNINITIALIZED = -1;
@@ -282,7 +282,7 @@ public class IdentityRequestMessage extends DistributionMessage implements Messa
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof IdentityReplyMessage) {
           IdentityReplyMessage reply = (IdentityReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityUpdateMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityUpdateMessage.java
index 8161e46..10fc9f6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityUpdateMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/IdentityUpdateMessage.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -37,7 +37,7 @@ import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
 
-public class IdentityUpdateMessage extends DistributionMessage implements MessageWithReply {
+public class IdentityUpdateMessage extends ClusterMessage implements MessageWithReply {
   private static final Logger logger = LogService.getLogger();
 
   private int processorId;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBackupBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBackupBucketMessage.java
index c785df3..c759164 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBackupBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBackupBucketMessage.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -396,7 +396,7 @@ public class ManageBackupBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage m) {
+    public void process(ClusterMessage m) {
       try {
         if (m instanceof ManageBackupBucketReplyMessage) {
           ManageBackupBucketReplyMessage reply = (ManageBackupBucketReplyMessage) m;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBucketMessage.java
index 7afd97c..544eb1e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBucketMessage.java
@@ -25,8 +25,8 @@ import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.persistence.PartitionOfflineException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -358,7 +358,7 @@ public class ManageBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof ManageBucketReplyMessage) {
           ManageBucketReplyMessage reply = (ManageBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/MoveBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/MoveBucketMessage.java
index 86e55b0..3525c3b 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/MoveBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/MoveBucketMessage.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -246,7 +246,7 @@ public class MoveBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof MoveBucketReplyMessage) {
           MoveBucketReplyMessage reply = (MoveBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRFunctionStreamingResultCollector.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRFunctionStreamingResultCollector.java
index 713e119..565e140 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRFunctionStreamingResultCollector.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRFunctionStreamingResultCollector.java
@@ -26,8 +26,8 @@ import org.apache.geode.cache.execute.FunctionException;
 import org.apache.geode.cache.execute.FunctionInvocationTargetException;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -393,7 +393,7 @@ public class PRFunctionStreamingResultCollector extends FunctionStreamingResultC
 
 
   @Override
-  protected synchronized void processException(DistributionMessage msg, ReplyException ex) {
+  protected synchronized void processException(ClusterMessage msg, ReplyException ex) {
     logger.debug(
         "StreamingPartitionResponseWithResultCollector received exception {} from member {}",
         ex.getCause(), msg.getSender());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRTombstoneMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRTombstoneMessage.java
index aa85eb6..3f489f2 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRTombstoneMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PRTombstoneMessage.java
@@ -28,7 +28,7 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.annotations.Immutable;
 import org.apache.geode.cache.Operation;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -165,7 +165,7 @@ public class PRTombstoneMessage extends PartitionMessageWithDirectReply
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       ReplyMessage reply = (ReplyMessage) msg;
       if (reply.getException() != null) {
         Throwable cause = reply.getException().getCause();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
index 5ca5b0f..cd06535 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessage.java
@@ -37,9 +37,9 @@ import org.apache.geode.cache.query.QueryException;
 import org.apache.geode.cache.query.RegionNotFoundException;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -73,7 +73,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * @since GemFire 5.0
  */
-public abstract class PartitionMessage extends DistributionMessage
+public abstract class PartitionMessage extends ClusterMessage
     implements MessageWithReply, TransactionMessage {
   private static final Logger logger = LogService.getLogger();
 
@@ -102,7 +102,7 @@ public abstract class PartitionMessage extends DistributionMessage
    *
    */
   /** flag to indicate notification message */
-  protected static final short NOTIFICATION_ONLY = DistributionMessage.UNRESERVED_FLAGS_START;
+  protected static final short NOTIFICATION_ONLY = ClusterMessage.UNRESERVED_FLAGS_START;
   /** flag to indicate ifNew in PutMessages */
   protected static final short IF_NEW = (NOTIFICATION_ONLY << 1);
   /** flag to indicate ifOld in PutMessages */
@@ -663,7 +663,7 @@ public abstract class PartitionMessage extends DistributionMessage
   }
 
   public InternalDistributedMember getRecipient() {
-    return getRecipients()[0];
+    return getRecipientsArray()[0];
   }
 
   public void setOperation(Operation op) {
@@ -855,7 +855,7 @@ public abstract class PartitionMessage extends DistributionMessage
 
     /* overridden from ReplyProcessor21 */
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       this.responseReceived = true;
       super.process(msg);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessageWithDirectReply.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessageWithDirectReply.java
index 41a157b..18731e2 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessageWithDirectReply.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionMessageWithDirectReply.java
@@ -19,9 +19,9 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.Set;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.internal.cache.DirectReplyMessage;
 import org.apache.geode.internal.cache.EntryEventImpl;
@@ -34,7 +34,7 @@ import org.apache.geode.internal.serialization.DeserializationContext;
  * used for message with a response from a single member, or responses which are small.
  *
  * Messages that extend this class *must* reply using the ReplySender returned by
- * {@link DistributionMessage#getReplySender(DistributionManager)}
+ * {@link ClusterMessage#getReplySender(DistributionManager)}
  *
  * Additionally, if the ReplyProcessor used for this message extends PartitionResponse, it should
  * pass false for the register parameter of the PartitionResponse.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PrimaryRequestMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PrimaryRequestMessage.java
index dda6050..17354c8 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PrimaryRequestMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PrimaryRequestMessage.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -195,7 +195,7 @@ public class PrimaryRequestMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof PrimaryRequestReplyMessage) {
           PrimaryRequestReplyMessage reply = (PrimaryRequestReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
index 6a14366..4280346 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutMessage.java
@@ -34,9 +34,9 @@ import org.apache.geode.cache.EntryExistsException;
 import org.apache.geode.cache.Operation;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -1059,7 +1059,7 @@ public class PutMessage extends PartitionMessageWithDirectReply implements NewVa
     }
 
     @Override
-    public void process(final DistributionMessage msg) {
+    public void process(final ClusterMessage msg) {
 
       if (msg instanceof ReplyMessage) {
         ReplyException ex = ((ReplyMessage) msg).getException();
@@ -1076,7 +1076,7 @@ public class PutMessage extends PartitionMessageWithDirectReply implements NewVa
               putMsg.setSendDelta(false);
               if (logger.isDebugEnabled()) {
                 logger.debug("Sending full object({}) to {}", putMsg,
-                    Arrays.toString(putMsg.getRecipients()));
+                    Arrays.toString(putMsg.getRecipientsArray()));
               }
               dm.putOutgoing(putMsg);
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/RemoveBucketMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/RemoveBucketMessage.java
index ef6e0ec..79c1e1a 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/RemoveBucketMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/RemoveBucketMessage.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.CancelException;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -241,7 +241,7 @@ public class RemoveBucketMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof RemoveBucketReplyMessage) {
           RemoveBucketReplyMessage reply = (RemoveBucketReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/SizeMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/SizeMessage.java
index 1b854cc..9a73446 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/SizeMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/SizeMessage.java
@@ -27,8 +27,8 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -317,7 +317,7 @@ public class SizeMessage extends PartitionMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof SizeReplyMessage) {
           SizeReplyMessage reply = (SizeReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperation.java
index 250989a..1cb21a8 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/StreamingPartitionOperation.java
@@ -34,8 +34,8 @@ import org.apache.geode.cache.CacheException;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.query.QueryException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
@@ -87,7 +87,7 @@ public abstract class StreamingPartitionOperation extends StreamingOperation {
       return Collections.emptySet();
 
     StreamingPartitionResponse processor = new StreamingPartitionResponse(this.sys, recipients);
-    DistributionMessage m = createRequestMessage(recipients, processor);
+    ClusterMessage m = createRequestMessage(recipients, processor);
     this.sys.getDistributionManager().putOutgoing(m);
     // should we allow this to timeout?
     Set<InternalDistributedMember> failedMembers = processor.waitForCacheOrQueryException();
@@ -96,7 +96,7 @@ public abstract class StreamingPartitionOperation extends StreamingOperation {
 
   /** Override in subclass to instantiate request message */
   @Override
-  protected abstract DistributionMessage createRequestMessage(Set recipients,
+  protected abstract ClusterMessage createRequestMessage(Set recipients,
       ReplyProcessor21 processor);
 
   protected class StreamingPartitionResponse extends ReplyProcessor21 {
@@ -145,7 +145,7 @@ public abstract class StreamingPartitionOperation extends StreamingOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       // ignore messages from members not in the wait list
       if (!waitingOnMember(msg.getSender())) {
         return;
@@ -187,7 +187,7 @@ public abstract class StreamingPartitionOperation extends StreamingOperation {
     }
 
     @Override
-    protected synchronized void processException(DistributionMessage msg, ReplyException ex) {
+    protected synchronized void processException(ClusterMessage msg, ReplyException ex) {
       Throwable t = ex.getCause();
       if (t instanceof ForceReattemptException || t instanceof CacheClosedException) {
         if (logger.isDebugEnabled()) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/MembershipViewRequest.java b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/MembershipViewRequest.java
index 56f9526..1383672 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/MembershipViewRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/MembershipViewRequest.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -50,7 +50,7 @@ import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
-public class MembershipViewRequest extends DistributionMessage implements MessageWithReply {
+public class MembershipViewRequest extends ClusterMessage implements MessageWithReply {
 
   private static final Logger logger = LogService.getLogger();
 
@@ -206,7 +206,7 @@ public class MembershipViewRequest extends DistributionMessage implements Messag
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof MembershipViewReplyMessage) {
         PersistentMembershipView view = ((MembershipViewReplyMessage) msg).view;
         if (logger.isDebugEnabled()) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistentStateQueryMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistentStateQueryMessage.java
index 177f7d2..2b96377 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistentStateQueryMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistentStateQueryMessage.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -211,7 +211,7 @@ public class PersistentStateQueryMessage extends HighPriorityDistributionMessage
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (msg instanceof PersistentStateQueryReplyMessage) {
         PersistentStateQueryReplyMessage reply = (PersistentStateQueryReplyMessage) msg;
         results.addResult(reply.persistedStateOfPeer, reply.getSender(), reply.myId,
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/FlowController.java b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/FlowController.java
index a08b7e3..a9d0690 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/FlowController.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/FlowController.java
@@ -29,8 +29,8 @@ import org.apache.geode.cache.RegionMembershipListener;
 import org.apache.geode.cache.util.RegionMembershipListenerAdapter;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.OperationExecutors;
 import org.apache.geode.distributed.internal.ProcessorKeeper21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -251,7 +251,7 @@ public class FlowController {
    * @see Window#isAborted()
    * @see FlowController#sendAbort(DistributionManager, int, DistributedMember)
    */
-  public static class FlowControlAbortMessage extends DistributionMessage {
+  public static class FlowControlAbortMessage extends ClusterMessage {
     /** the window id */
     private int windowId;
 
@@ -305,7 +305,7 @@ public class FlowController {
    *
    * @see FlowController#sendAck(DistributionManager, DistributedMember, int, String)
    */
-  public static class FlowControlAckMessage extends DistributionMessage {
+  public static class FlowControlAckMessage extends ClusterMessage {
     /** the window id */
     private int windowId;
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientDenylistProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientDenylistProcessor.java
index be8fe4d..2e4f36e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientDenylistProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientDenylistProcessor.java
@@ -24,8 +24,8 @@ import java.util.Set;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -59,7 +59,7 @@ public class ClientDenylistProcessor extends ReplyProcessor21 {
   ////////////// Instance methods //////////////
 
   @Override
-  public void process(DistributionMessage msg) {
+  public void process(ClusterMessage msg) {
     super.process(msg);
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteContainsKeyValueMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteContainsKeyValueMessage.java
index 6f904be..5389552 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteContainsKeyValueMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteContainsKeyValueMessage.java
@@ -24,9 +24,9 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -257,7 +257,7 @@ public class RemoteContainsKeyValueMessage extends RemoteOperationMessageWithDir
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof RemoteContainsKeyValueReplyMessage) {
           RemoteContainsKeyValueReplyMessage reply = (RemoteContainsKeyValueReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchEntryMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchEntryMessage.java
index eec30af..fdac25e 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchEntryMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchEntryMessage.java
@@ -28,8 +28,8 @@ import org.apache.geode.cache.EntryNotFoundException;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.TransactionException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -272,7 +272,7 @@ public class RemoteFetchEntryMessage extends RemoteOperationMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof FetchEntryReplyMessage) {
           FetchEntryReplyMessage reply = (FetchEntryReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchKeysMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchKeysMessage.java
index 83fb741..c6d3c3e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchKeysMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchKeysMessage.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.TransactionDataNodeHasDepartedException;
 import org.apache.geode.cache.TransactionException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -356,7 +356,7 @@ public class RemoteFetchKeysMessage extends RemoteOperationMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       boolean doneProcessing = false;
       try {
         if (msg instanceof RemoteFetchKeysReplyMessage) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchVersionMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchVersionMessage.java
index b5cd794..ceda04f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchVersionMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteFetchVersionMessage.java
@@ -26,8 +26,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.CacheException;
 import org.apache.geode.cache.EntryNotFoundException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -210,7 +210,7 @@ public class RemoteFetchVersionMessage extends RemoteOperationMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof FetchVersionReplyMessage) {
           FetchVersionReplyMessage reply = (FetchVersionReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteGetMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteGetMessage.java
index e38a674..b54c81c 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteGetMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteGetMessage.java
@@ -25,9 +25,9 @@ import org.apache.logging.log4j.Logger;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -337,7 +337,7 @@ public class RemoteGetMessage extends RemoteOperationMessageWithDirectReply {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       if (DistributionStats.enableClockStats) {
         this.start = DistributionStats.getStatTime();
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
index f3f8e33..0da9f3d 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessage.java
@@ -30,9 +30,9 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.cache.TransactionException;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.MessageWithReply;
 import org.apache.geode.distributed.internal.OperationExecutors;
@@ -61,7 +61,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * @since GemFire 6.5
  */
-public abstract class RemoteOperationMessage extends DistributionMessage
+public abstract class RemoteOperationMessage extends ClusterMessage
     implements MessageWithReply, TransactionMessage {
   private static final Logger logger = LogService.getLogger();
 
@@ -417,7 +417,7 @@ public abstract class RemoteOperationMessage extends DistributionMessage
    */
   protected void appendFields(StringBuffer buff) {
     buff.append("; sender=").append(getSender()).append("; recipients=[");
-    InternalDistributedMember[] recips = getRecipients();
+    InternalDistributedMember[] recips = getRecipientsArray();
     for (int i = 0; i < recips.length - 1; i++) {
       buff.append(recips[i]).append(',');
     }
@@ -428,7 +428,7 @@ public abstract class RemoteOperationMessage extends DistributionMessage
   }
 
   public InternalDistributedMember getRecipient() {
-    return getRecipients()[0];
+    return getRecipientsArray()[0];
   }
 
   public void setOperation(Operation op) {
@@ -577,7 +577,7 @@ public abstract class RemoteOperationMessage extends DistributionMessage
 
     /* overridden from ReplyProcessor21 */
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       this.responseReceived = true;
       super.process(msg);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessageWithDirectReply.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessageWithDirectReply.java
index 0a7f653..e9872fd 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessageWithDirectReply.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteOperationMessageWithDirectReply.java
@@ -14,9 +14,9 @@
  */
 package org.apache.geode.internal.cache.tx;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 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.internal.cache.DirectReplyMessage;
 
@@ -25,7 +25,7 @@ import org.apache.geode.internal.cache.DirectReplyMessage;
  * for message with a response from a single member, or responses which are small.
  *
  * Messages that extend this class *must* reply using the ReplySender returned by
- * {@link DistributionMessage#getReplySender(DistributionManager)}
+ * {@link ClusterMessage#getReplySender(DistributionManager)}
  *
  */
 public abstract class RemoteOperationMessageWithDirectReply extends RemoteOperationMessage
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
index f2dd676..60a28b0 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
@@ -24,8 +24,8 @@ import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -230,7 +230,7 @@ public class RemoteSizeMessage extends RemoteOperationMessage {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof SizeReplyMessage) {
           SizeReplyMessage reply = (SizeReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderQueueEntrySynchronizationOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderQueueEntrySynchronizationOperation.java
index 08d1e5b..f9d46c4 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderQueueEntrySynchronizationOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderQueueEntrySynchronizationOperation.java
@@ -31,8 +31,8 @@ import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.wan.GatewayQueueEvent;
 import org.apache.geode.cache.wan.GatewaySender;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.MessageWithReply;
 import org.apache.geode.distributed.internal.PooledDistributionMessage;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -120,7 +120,7 @@ public class GatewaySenderQueueEntrySynchronizationOperation {
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof ReplyMessage) {
           ReplyMessage reply = (ReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/WaitUntilParallelGatewaySenderFlushedCoordinator.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/WaitUntilParallelGatewaySenderFlushedCoordinator.java
index c2a3dbd..31d8bef 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/WaitUntilParallelGatewaySenderFlushedCoordinator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/WaitUntilParallelGatewaySenderFlushedCoordinator.java
@@ -28,8 +28,8 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -168,7 +168,7 @@ public class WaitUntilParallelGatewaySenderFlushedCoordinator
     }
 
     @Override
-    public void process(DistributionMessage msg) {
+    public void process(ClusterMessage msg) {
       try {
         if (msg instanceof ReplyMessage) {
           ReplyMessage reply = (ReplyMessage) msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/sequencelog/MessageLogger.java b/geode-core/src/main/java/org/apache/geode/internal/sequencelog/MessageLogger.java
index 10be99e..c6668af 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/sequencelog/MessageLogger.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/sequencelog/MessageLogger.java
@@ -15,7 +15,7 @@
 package org.apache.geode.internal.sequencelog;
 
 import org.apache.geode.annotations.Immutable;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
 public class MessageLogger {
@@ -27,7 +27,7 @@ public class MessageLogger {
     return LOGGER.isEnabled(GraphType.MESSAGE);
   }
 
-  public static void logMessage(DistributionMessage message, InternalDistributedMember source,
+  public static void logMessage(ClusterMessage message, InternalDistributedMember source,
       InternalDistributedMember dest) {
     if (isEnabled()) {
       LOGGER.logTransition(GraphType.MESSAGE, message.getClass().getSimpleName(), "", "received",
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
index 5c95d0d..878e00b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
@@ -53,13 +53,13 @@ import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.ConflationKey;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DirectReplyProcessor;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionConfigImpl;
 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.OperationExecutors;
 import org.apache.geode.distributed.internal.ReplyException;
@@ -1970,7 +1970,7 @@ public class Connection implements Runnable {
    * @throws ConnectionException if the conduit has stopped
    */
   void sendPreserialized(ByteBuffer buffer, boolean cacheContentChanges,
-      DistributionMessage msg) throws IOException, ConnectionException {
+      ClusterMessage msg) throws IOException, ConnectionException {
     if (!connected) {
       throw new ConnectionException(
           String.format("Not connected to %s", this.remoteAddr));
@@ -2138,7 +2138,7 @@ public class Connection implements Runnable {
     return false;
   }
 
-  private boolean addToQueue(ByteBuffer buffer, DistributionMessage msg, boolean force)
+  private boolean addToQueue(ByteBuffer buffer, ClusterMessage msg, boolean force)
       throws ConnectionException {
     final DMStats stats = this.owner.getConduit().getStats();
     long start = DistributionStats.getStatTime();
@@ -2256,7 +2256,7 @@ public class Connection implements Runnable {
    *
    * @throws ConnectionException if the conduit has stopped
    */
-  private boolean handleBlockedWrite(ByteBuffer buffer, DistributionMessage msg)
+  private boolean handleBlockedWrite(ByteBuffer buffer, ClusterMessage msg)
       throws ConnectionException {
     if (!addToQueue(buffer, msg, true)) {
       return false;
@@ -2548,8 +2548,8 @@ public class Connection implements Runnable {
   private static final int MAX_WAIT_TIME = (1 << 5); // ms (must be a power of 2)
 
   private void writeAsync(SocketChannel channel, ByteBuffer buffer, boolean forceAsync,
-      DistributionMessage p_msg, final DMStats stats) throws IOException {
-    DistributionMessage msg = p_msg;
+      ClusterMessage p_msg, final DMStats stats) throws IOException {
+    ClusterMessage msg = p_msg;
     // async/non-blocking
     boolean socketWriteStarted = false;
     long startSocketWrite = 0;
@@ -2710,7 +2710,7 @@ public class Connection implements Runnable {
    * @throws ConnectionException if the conduit has stopped
    */
   void writeFully(SocketChannel channel, ByteBuffer buffer, boolean forceAsync,
-      DistributionMessage msg) throws IOException, ConnectionException {
+      ClusterMessage msg) throws IOException, ConnectionException {
     final DMStats stats = this.owner.getConduit().getStats();
     if (!this.sharedResource) {
       stats.incTOSentMsg();
@@ -3108,14 +3108,14 @@ public class Connection implements Runnable {
       ByteBufferInputStream bbis =
           remoteVersion == null ? new ByteBufferInputStream(peerDataBuffer)
               : new VersionedByteBufferInputStream(peerDataBuffer, remoteVersion);
-      DistributionMessage msg;
+      ClusterMessage msg;
       try {
         ReplyProcessor21.initMessageRPId();
         // add serialization stats
         long startSer = this.owner.getConduit().getStats().startMsgDeserialization();
         int startingPosition = peerDataBuffer.position();
         try {
-          msg = (DistributionMessage) InternalDataSerializer.readDSFID(bbis);
+          msg = (ClusterMessage) InternalDataSerializer.readDSFID(bbis);
         } catch (SerializationException e) {
           logger.info("input buffer starting position {} "
               + " current position {} limit {} capacity {} message length {}",
@@ -3199,7 +3199,7 @@ public class Connection implements Runnable {
       } catch (IOException ex) {
         logger.fatal("Failed handling end chunk message", ex);
       }
-      DistributionMessage msg = null;
+      ClusterMessage msg = null;
       int msgLength;
       String failureMsg = null;
       Throwable failureEx = null;
@@ -3382,7 +3382,7 @@ public class Connection implements Runnable {
     }
   }
 
-  private boolean dispatchMessage(DistributionMessage msg, int bytesRead, boolean directAck) {
+  private boolean dispatchMessage(ClusterMessage msg, int bytesRead, boolean directAck) {
     try {
       msg.setDoDecMessagesBeingReceived(true);
       if (directAck) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/DirectReplySender.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/DirectReplySender.java
index 78f53f7..f33887a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/DirectReplySender.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/DirectReplySender.java
@@ -24,8 +24,8 @@ import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.InternalGemFireException;
 import org.apache.geode.annotations.Immutable;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.LonerDistributionManager.DummyDMStats;
 import org.apache.geode.distributed.internal.ReplySender;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -51,7 +51,7 @@ class DirectReplySender implements ReplySender {
   }
 
   @Override
-  public Set<InternalDistributedMember> putOutgoing(DistributionMessage msg) {
+  public Set<InternalDistributedMember> putOutgoing(ClusterMessage msg) {
     Assert.assertTrue(!this.sentReply, "Trying to reply twice to a message");
     // Using an ArrayList, rather than Collections.singletonList here, because the MsgStreamer
     // mutates the list when it has exceptions.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgDestreamer.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgDestreamer.java
index 95d201e..61d7539 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgDestreamer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgDestreamer.java
@@ -24,8 +24,8 @@ import org.apache.geode.InternalGemFireError;
 import org.apache.geode.LogWriter;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.internal.InternalDataSerializer;
@@ -50,7 +50,7 @@ public class MsgDestreamer {
   /**
    * Used to store the deserialized message on success.
    */
-  private DistributionMessage result;
+  private ClusterMessage result;
   /**
    * The current failed messages reply processor id if it has one
    */
@@ -156,7 +156,7 @@ public class MsgDestreamer {
    * @throws ClassNotFoundException The class of an object read from <code>in</code> could not be
    *         found
    */
-  public DistributionMessage getMessage()
+  public ClusterMessage getMessage()
       throws InterruptedException, IOException, ClassNotFoundException {
     // if (Thread.interrupted()) throw new InterruptedException(); not necessary done in
     // waitUntilDone
@@ -196,7 +196,7 @@ public class MsgDestreamer {
     }
   }
 
-  protected void setResult(DistributionMessage msg) {
+  protected void setResult(ClusterMessage msg) {
     synchronized (this) {
       this.result = msg;
       this.RPid = 0;
@@ -242,7 +242,7 @@ public class MsgDestreamer {
               v == null ? new DataInputStream(this.is)
                   : new VersionedDataInputStream(this.is, v);
           long startSer = this.stats.startMsgDeserialization();
-          setResult((DistributionMessage) InternalDataSerializer.readDSFID(dis));
+          setResult((ClusterMessage) InternalDataSerializer.readDSFID(dis));
           this.stats.endMsgDeserialization(startSer);
         } catch (VirtualMachineError err) {
           SystemFailure.initiateFailure(err);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
index 4561562..d343622 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
@@ -20,8 +20,8 @@ import java.nio.ByteBuffer;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.ReplyProcessor21;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.InternalDataSerializer;
@@ -85,7 +85,7 @@ public class MsgReader {
    *
    * @return the message, or null if we only received a chunk of the message
    */
-  DistributionMessage readMessage(Header header)
+  ClusterMessage readMessage(Header header)
       throws IOException, ClassNotFoundException {
     ByteBuffer nioInputBuffer = readAtLeast(header.messageLength);
     Assert.assertTrue(nioInputBuffer.remaining() >= header.messageLength);
@@ -94,7 +94,7 @@ public class MsgReader {
     try {
       byteBufferInputStream.setBuffer(nioInputBuffer);
       ReplyProcessor21.initMessageRPId();
-      return (DistributionMessage) InternalDataSerializer.readDSFID(byteBufferInputStream);
+      return (ClusterMessage) InternalDataSerializer.readDSFID(byteBufferInputStream);
     } catch (RuntimeException e) {
       throw e;
     } catch (IOException e) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgStreamer.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgStreamer.java
index 0e44325..6e5bf21 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgStreamer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgStreamer.java
@@ -27,9 +27,9 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectIterator;
 
 import org.apache.geode.DataSerializer;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.ByteBufferWriter;
 import org.apache.geode.internal.HeapDataOutputStream;
@@ -69,7 +69,7 @@ public class MsgStreamer extends OutputStream
   private final ByteBuffer buffer;
   private int flushedBytes = 0;
   // the message this streamer is to send
-  private final DistributionMessage msg;
+  private final ClusterMessage msg;
   /**
    * True if this message went out as a normal one (it fit it one chunk) False if this message
    * needed to be chunked.
@@ -124,7 +124,7 @@ public class MsgStreamer extends OutputStream
    * Note: This is no longer supposed to be called directly rather the {@link #create} method should
    * now be used.
    */
-  MsgStreamer(List<?> cons, DistributionMessage msg, boolean directReply, DMStats stats,
+  MsgStreamer(List<?> cons, ClusterMessage msg, boolean directReply, DMStats stats,
       int sendBufferSize, BufferPool bufferPool) {
     this.stats = stats;
     this.msg = msg;
@@ -143,7 +143,7 @@ public class MsgStreamer extends OutputStream
    * connections to remote nodes. This method can either return a single MsgStreamer object or a
    * List of MsgStreamer objects.
    */
-  public static BaseMsgStreamer create(List<?> cons, final DistributionMessage msg,
+  public static BaseMsgStreamer create(List<?> cons, final ClusterMessage msg,
       final boolean directReply, final DMStats stats, BufferPool bufferPool) {
     final Connection firstCon = (Connection) cons.get(0);
     // split into different versions if required
@@ -312,7 +312,7 @@ public class MsgStreamer extends OutputStream
     setMessageHeader();
     final int serializedBytes = this.buffer.limit();
     this.flushedBytes += serializedBytes;
-    DistributionMessage conflationMsg = null;
+    ClusterMessage conflationMsg = null;
     if (this.normalMsg) {
       // we can't conflate chunked messages; this fixes bug 36633
       conflationMsg = this.msg;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/ServerDelegate.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/ServerDelegate.java
index 715fd71..5c6b19a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/ServerDelegate.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/ServerDelegate.java
@@ -16,14 +16,14 @@ package org.apache.geode.internal.tcp;
 
 import org.apache.geode.LogWriter;
 import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
 
 /**
  * <p>
  * ServerDelegate is a conduit plugin that receives
- * {@link org.apache.geode.distributed.internal.DistributionMessage} objects received from other
+ * {@link ClusterMessage} objects received from other
  * conduits.
  * </p>
  *
@@ -34,7 +34,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
  */
 public interface ServerDelegate {
 
-  void receive(DistributionMessage message, int bytesRead, DistributedMember connId);
+  void receive(ClusterMessage message, int bytesRead, DistributedMember connId);
 
   LogWriter getLogger();
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
index 365bf35..655f874 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
@@ -36,10 +36,10 @@ import org.apache.geode.alerting.internal.spi.AlertingAction;
 import org.apache.geode.annotations.internal.MakeNotStatic;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.LonerDistributionManager;
 import org.apache.geode.distributed.internal.direct.DirectChannel;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -60,7 +60,7 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
  *
  * <pre>
  * <p>
- * DistributionMessage - message is delivered to the server's
+ * ClusterMessage - message is delivered to the server's
  * ServerDelegate
  * <p>
  * </pre>
@@ -170,7 +170,7 @@ public class TCPConduit implements Runnable {
   private final boolean isBindAddress;
 
   /**
-   * the object that receives DistributionMessage messages received by this conduit.
+   * the object that receives ClusterMessage messages received by this conduit.
    */
   private final DirectChannel directChannel;
 
@@ -690,13 +690,13 @@ public class TCPConduit implements Runnable {
    *
    * @param bytesRead number of bytes read off of network to get this message
    */
-  protected void messageReceived(Connection receiver, DistributionMessage message, int bytesRead) {
+  protected void messageReceived(Connection receiver, ClusterMessage message, int bytesRead) {
     if (logger.isTraceEnabled()) {
       logger.trace("{} received {} from {}", id, message, receiver);
     }
 
     if (directChannel != null) {
-      DistributionMessage msg = message;
+      ClusterMessage msg = message;
       msg.setBytesRead(bytesRead);
       msg.setSender(receiver.getRemoteAddress());
       msg.setSharedReceiver(receiver.isSharedResource());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/VersionedMsgStreamer.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/VersionedMsgStreamer.java
index 0f5639e..1c2bf65 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/VersionedMsgStreamer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/VersionedMsgStreamer.java
@@ -17,8 +17,8 @@ package org.apache.geode.internal.tcp;
 
 import java.util.List;
 
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DMStats;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.internal.net.BufferPool;
 import org.apache.geode.internal.serialization.Version;
 import org.apache.geode.internal.serialization.VersionedDataStream;
@@ -32,7 +32,7 @@ class VersionedMsgStreamer extends MsgStreamer implements VersionedDataStream {
 
   private final Version version;
 
-  VersionedMsgStreamer(List<?> cons, DistributionMessage msg, boolean directReply, DMStats stats,
+  VersionedMsgStreamer(List<?> cons, ClusterMessage msg, boolean directReply, DMStats stats,
       BufferPool bufferPool, int sendBufferSize, Version version) {
     super(cons, msg, directReply, stats, sendBufferSize, bufferPool);
     this.version = version;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/package.html b/geode-core/src/main/java/org/apache/geode/internal/tcp/package.html
index 13da90c..29dc3fb 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/package.html
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/package.html
@@ -27,7 +27,7 @@ Contains TCP/IP communications conduit
 when true multicast messaging is not needed and disable-tcp is not
 set to true, which is the default setting.  When used in this way, the
 conduit manages the serialization and transmission of
-{@link org.apache.geode.distributed.internal.DistributionMessage}
+{@link org.apache.geode.distributed.internal.ClusterMessage}
 objects from one system to another.  The
 {@link org.apache.geode.distributed.internal.Distribution}
 routes outgoing messages to TCPConduit and handles receipt of messages
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/MemberMessenger.java b/geode-core/src/main/java/org/apache/geode/management/internal/MemberMessenger.java
index 64af0ea..a9b5927 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/MemberMessenger.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/MemberMessenger.java
@@ -18,8 +18,8 @@ import java.util.Set;
 
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.membership.InternalDistributedMember;
 import org.apache.geode.internal.admin.remote.AlertLevelChangeMessage;
@@ -116,7 +116,7 @@ public class MemberMessenger {
    * <p>
    * Actually, it's the message implementation that determines if it's sync or async, not this call.
    */
-  private void sendAsync(DistributionMessage msg) {
+  private void sendAsync(ClusterMessage msg) {
     if (system != null) {
       system.getDistributionManager().putOutgoing(msg);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java b/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
index 698200d..82a61f7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/messages/CompactRequest.java
@@ -32,8 +32,8 @@ import org.apache.geode.annotations.internal.MakeNotStatic;
 import org.apache.geode.cache.persistence.PersistentID;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.internal.admin.remote.AdminMultipleReplyProcessor;
 import org.apache.geode.internal.admin.remote.AdminRequest;
@@ -143,7 +143,7 @@ public class CompactRequest extends AdminRequest {
 
   @Override
   public String toString() {
-    return "Compact request sent to " + Arrays.toString(this.getRecipients()) + " from "
+    return "Compact request sent to " + Arrays.toString(this.getRecipientsArray()) + " from "
         + this.getSender() + " for " + this.diskStoreName;
   }
 
@@ -166,7 +166,7 @@ public class CompactRequest extends AdminRequest {
     }
 
     @Override
-    protected void process(DistributionMessage message, boolean warn) {
+    protected void process(ClusterMessage message, boolean warn) {
       if (message instanceof CompactResponse) {
         final PersistentID persistentId = ((CompactResponse) message).getPersistentId();
         if (persistentId != null) {
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionMessageTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionMessageTest.java
index 91027e1..e88cda8 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionMessageTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionMessageTest.java
@@ -28,7 +28,7 @@ public class DistributionMessageTest {
 
   @Test
   public void shouldBeMockable() throws Exception {
-    DistributionMessage mockDistributionMessage = mock(DistributionMessage.class);
+    ClusterMessage mockDistributionMessage = mock(ClusterMessage.class);
     ReplySender mockReplySender = mock(ReplySender.class);
 
     mockDistributionMessage.setReplySender(mockReplySender);
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
index 446d59fc..2fb6129 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionTest.java
@@ -43,6 +43,7 @@ import org.apache.geode.distributed.internal.direct.DirectChannel;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.gms.GMSMemberData;
 import org.apache.geode.distributed.internal.membership.gms.GMSMembership;
+import org.apache.geode.distributed.internal.membership.gms.api.DistributionMessage;
 import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 import org.apache.geode.internal.admin.remote.AlertListenerMessage;
 import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
@@ -92,7 +93,7 @@ public class DistributionTest {
 
     distribution.setDirectChannel(dc);
     when(dc.send(any(GMSMembership.class), any(mockMembers.getClass()),
-        any(DistributionMessage.class), anyInt(), anyInt())).thenReturn(100);
+        any(ClusterMessage.class), anyInt(), anyInt())).thenReturn(100);
 
   }
 
@@ -120,7 +121,7 @@ public class DistributionTest {
     ConnectExceptions exception = new ConnectExceptions();
     exception.addFailure(recipients[0], new Exception("testing"));
     when(dc.send(any(), any(mockMembers.getClass()),
-        any(DistributionMessage.class), anyLong(), anyLong())).thenThrow(exception);
+        any(ClusterMessage.class), anyLong(), anyLong())).thenThrow(exception);
     failures = distribution.directChannelSend(recipients, m);
     assertTrue(failures != null);
     assertEquals(1, failures.size());
@@ -136,7 +137,7 @@ public class DistributionTest {
     Set<InternalDistributedMember> failures = distribution
         .directChannelSend(recipients, m);
     when(dc.send(any(), any(mockMembers.getClass()),
-        any(DistributionMessage.class), anyInt(), anyInt())).thenReturn(0);
+        any(ClusterMessage.class), anyInt(), anyInt())).thenReturn(0);
     doThrow(DistributedSystemDisconnectedException.class).when(membership).checkCancelled();
 
     try {
@@ -156,7 +157,7 @@ public class DistributionTest {
         .directChannelSend(null, m);
     assertTrue(failures == null);
     verify(dc).send(any(), isA(mockMembers.getClass()),
-        isA(DistributionMessage.class), anyLong(), anyLong());
+        isA(ClusterMessage.class), anyLong(), anyLong());
   }
 
   @Test
@@ -172,7 +173,7 @@ public class DistributionTest {
     ConnectExceptions exception = new ConnectExceptions();
     exception.addFailure(recipients[0], new Exception("testing"));
     when(dc.send(any(), any(mockMembers.getClass()),
-        any(DistributionMessage.class), anyLong(), anyLong())).thenThrow(exception);
+        any(ClusterMessage.class), anyLong(), anyLong())).thenThrow(exception);
     Assertions.assertThatThrownBy(() -> {
       distribution.directChannelSend(recipients, m);
     }).isInstanceOf(DistributedSystemDisconnectedException.class);
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/StartupMessageJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/StartupMessageJUnitTest.java
index d017b96..06350cb 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/StartupMessageJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/StartupMessageJUnitTest.java
@@ -44,11 +44,11 @@ public class StartupMessageJUnitTest {
 
     // We expect process to send a ReplyMessage with an exception
     // So that the sender is not blocked
-    ArgumentCaptor<DistributionMessage> responseCaptor =
-        ArgumentCaptor.forClass(DistributionMessage.class);
+    ArgumentCaptor<ClusterMessage> responseCaptor =
+        ArgumentCaptor.forClass(ClusterMessage.class);
     verify(distributionManager).putOutgoing(responseCaptor.capture());
 
-    DistributionMessage response = responseCaptor.getValue();
+    ClusterMessage response = responseCaptor.getValue();
     assertThat(response).isInstanceOf(ReplyMessage.class);
     assertThat(((ReplyMessage) response).getException())
         .isInstanceOf(ReplyException.class)
@@ -72,11 +72,11 @@ public class StartupMessageJUnitTest {
 
     // We expect process to send a ReplyMessage with an exception
     // So that the sender is not blocked
-    ArgumentCaptor<DistributionMessage> responseCaptor =
-        ArgumentCaptor.forClass(DistributionMessage.class);
+    ArgumentCaptor<ClusterMessage> responseCaptor =
+        ArgumentCaptor.forClass(ClusterMessage.class);
     verify(distributionManager).putOutgoing(responseCaptor.capture());
 
-    DistributionMessage response = responseCaptor.getValue();
+    ClusterMessage response = responseCaptor.getValue();
     assertThat(response).isInstanceOf(ReplyMessage.class);
     assertThat(((ReplyMessage) response).getException())
         .isInstanceOf(ReplyException.class)
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
index 1453ab3..06e678a 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
@@ -36,9 +36,7 @@ import org.apache.geode.alerting.internal.spi.AlertingAction;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.Locator;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.LocatorStats;
-import org.apache.geode.distributed.internal.membership.adapter.GMSMessageAdapter;
 import org.apache.geode.distributed.internal.membership.adapter.LocalViewMessage;
 import org.apache.geode.distributed.internal.tcpserver.ConnectionWatcher;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
@@ -118,7 +116,6 @@ public class MembershipDependenciesJUnitTest {
 
               // TODO: Serialization needs to become its own module
               .or(type(InternalDataSerializer.class)) // still used by GMSLocator
-              .or(type(DistributionMessage.class)) // still used by GMSLocator
 
               // TODO
               .or(assignableTo(CancelCriterion.class))
@@ -160,7 +157,6 @@ public class MembershipDependenciesJUnitTest {
               .or(type(DistributedMember.class))
               .or(type(MembershipView.class))
               .or(type(LocalViewMessage.class))
-              .or(type(GMSMessageAdapter.class))
 
               .or(type(ClusterDistributionManager.class))
 
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
index 0afc131..ee26f5c 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
@@ -29,7 +29,7 @@ import org.junit.runner.RunWith;
 
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MembershipView;
 import org.apache.geode.distributed.internal.membership.gms.MemberDataBuilderImpl;
@@ -67,7 +67,7 @@ public class MembershipAPIArchUnitTest {
               .or(type(MemberIdentifier.class))
               .or(type(DistributedMember.class))
               .or(type(InternalDistributedMember[].class))
-              .or(type(DistributionMessage.class))
+              .or(type(ClusterMessage.class))
               .or(type(ClusterDistributionManager.class))
 
               // TODO: This is used by the GMSLocatorAdapter to reach into the locator
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorTest.java
index 8336733..675b747 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryEvaluatorTest.java
@@ -44,7 +44,7 @@ import org.apache.geode.cache.query.internal.InternalQueryService;
 import org.apache.geode.cache.query.internal.LinkedResultSet;
 import org.apache.geode.cache.query.internal.types.ObjectTypeImpl;
 import org.apache.geode.cache.query.security.MethodInvocationAuthorizer;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.partitioned.RegionAdvisor;
@@ -332,7 +332,7 @@ public class PartitionedRegionQueryEvaluatorTest {
     }
 
     @Override
-    protected Set sendMessage(DistributionMessage m) {
+    protected Set sendMessage(ClusterMessage m) {
       // Don't need to actually send the message...
       return null;
     }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupReplyProcessorTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupReplyProcessorTest.java
index ffd637d..f79c58f 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupReplyProcessorTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupReplyProcessorTest.java
@@ -29,8 +29,8 @@ import org.junit.Test;
 
 import org.apache.geode.CancelCriterion;
 import org.apache.geode.cache.persistence.PersistentID;
+import org.apache.geode.distributed.internal.ClusterMessage;
 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.membership.InternalDistributedMember;
 
@@ -47,7 +47,7 @@ public class BackupReplyProcessorTest {
   private Set<PersistentID> persistentIds;
 
   private BackupResponse backupResponse;
-  private DistributionMessage nonBackupResponse;
+  private ClusterMessage nonBackupResponse;
 
   @Before
   public void setUp() throws Exception {
@@ -55,7 +55,7 @@ public class BackupReplyProcessorTest {
     dm = mock(DistributionManager.class);
     system = mock(InternalDistributedSystem.class);
     backupResponse = mock(BackupResponse.class);
-    nonBackupResponse = mock(DistributionMessage.class);
+    nonBackupResponse = mock(ClusterMessage.class);
     sender = mock(InternalDistributedMember.class);
 
     recipients = new HashSet<>();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTest.java b/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTest.java
index 77160c8..99bc8a1 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTest.java
@@ -24,7 +24,7 @@ import java.nio.channels.SocketChannel;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.test.junit.categories.MembershipTest;
 
 @Category({MembershipTest.class})
@@ -36,7 +36,7 @@ public class ConnectionTest {
     SocketChannel channel = null;
     ByteBuffer buffer = null;
     boolean forceAsync = true;
-    DistributionMessage mockDistributionMessage = mock(DistributionMessage.class);
+    ClusterMessage mockDistributionMessage = mock(ClusterMessage.class);
 
     mockConnection.writeFully(channel, buffer, forceAsync, mockDistributionMessage);
 
diff --git a/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/misc/PDXNewWanDUnitTest.java b/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/misc/PDXNewWanDUnitTest.java
index a2853fa..5bf926f 100644
--- a/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/misc/PDXNewWanDUnitTest.java
+++ b/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/misc/PDXNewWanDUnitTest.java
@@ -32,7 +32,7 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.partition.PartitionRegionHelper;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DistributionMessage;
+import org.apache.geode.distributed.internal.ClusterMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.internal.cache.UpdateOperation;
 import org.apache.geode.internal.cache.wan.WANTestBase;
@@ -854,7 +854,7 @@ public class PDXNewWanDUnitTest extends WANTestBase {
     private CountDownLatch startedBlocking = new CountDownLatch(1);
 
     @Override
-    public void beforeSendMessage(ClusterDistributionManager dm, DistributionMessage message) {
+    public void beforeSendMessage(ClusterDistributionManager dm, ClusterMessage message) {
       if (message instanceof UpdateOperation.UpdateMessage
           && ((UpdateOperation.UpdateMessage) message).getRegionPath()
               .contains(PeerTypeRegistration.REGION_FULL_PATH)) {