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 2017/11/30 22:31:09 UTC

[geode] branch develop updated: GEODE-3923 Provide whitelist/blacklist capability for java serialization

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new a2bd578  GEODE-3923 Provide whitelist/blacklist capability for java serialization
a2bd578 is described below

commit a2bd5788d0b0728d91d551ddaac878b336d7892a
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Thu Nov 30 14:25:48 2017 -0800

    GEODE-3923 Provide whitelist/blacklist capability for java serialization
    
    This is a squashed and rebased commit of the work from the now-defunct
    whitelist-wip branch.  The work allows you to whitelist and blacklist
    use of Java deserialization for classes matching a pattern you provide.
    
    All distributedTests are now run with this enabled and with the default
    blacklist pattern of "!*", which blacklists everything not explicitely
    allowed by Geode in the sanctionedSerializables.txt files or by your test.
    
    Each layer needing one now has its own sanctionedSerializables.txt file
    that is a resource in the product tree.  These are installed as whitelists
    by a new DistributedSystemService in that layer.
    
    There are numerous examples of whitelisting classes in the tests.
    
    If you do not whitelist your class Geode will throw an IncompatibleClassException.
    If you happen to run into this look in your logs for "rejecting" and you
    can easily find the name of the offending class and add it to your
    whitelist.
    
    Two new cache properties have been added:
    
      validate-serializable-objects
    
    If true checks incoming java serializable objects against a filter (allows
    internal Geode classes and any others provided in the
    serializable-object-filter property).
    
    If you enable this property you must be using Java 8 build 121 or later.
    If you are not Geode will throw an exception and refuse to start.
    
    Default: "false"
    
      serializable-object-filter
    
    A user provided whitelist of objects that the system will allow to serialize.
    See java.io.ObjectInputFilter.Config for details on the syntax for creating filters.
    
    https://docs.oracle.com/javase/9/docs/api/java/io/ObjectInputFilter.Config.html
    
    Default: "!*"
    
    In addition, this work includes these significant contributions:
    
    commit 731ac2b4206615fb6bdaa54db371c7f8b7956fd4
    Author: Galen O'Sullivan <go...@pivotal.io>
    Date:   Wed Nov 15 10:55:23 2017 -0800
    
        [edited message] Allow Geode to run with older versions of Java 8
        when serialization filtering is not enabled.
    
        and achieve this by moving references to ObjectInputFilter out of
        InternalDataSerializer.
    
        Signed-off-by: Dan Smith <ds...@pivotal.io>
    
    commit 3329467308bbfaaf0cc30db678474894132e5f62
    Author: Dan Smith <up...@apache.org>
    Date:   Thu Nov 2 13:22:42 2017 -0700
    
        Adding an option to run tests with a different JVM
    
    commit a480931fa3b7e973f9076a063238c75d0b51146b
    Author: Bruce Schuchardt <bs...@pivotal.io>
    Date:   Fri Nov 10 15:46:11 2017 -0800
    
        whitelist WIP
    
        Turned on validation by default for dunit tests and fixed issues this caused.
        Several tests now set a custom whitelist.
    
    commit 026ae92fe2055c09762978696d53d9cd2679bd60
    Author: Galen O'Sullivan <go...@pivotal.io>
    Date:   Thu Nov 9 17:02:56 2017 -0800
    
        Adding configuration parameters to toggle whitelist behavior of serializable classes.
    
        Open question about removing DataCommandRequest.java toData and fromData
    
        Signed-off-by: Brian Rowe <br...@pivotal.io>
---
 .../geode/modules/util/BootstrappingFunction.java  |  14 +-
 .../geode/modules/util/CreateRegionFunction.java   |  17 +-
 .../geode/modules/util/RegionSizeFunction.java     |  18 +-
 .../TouchPartitionedRegionEntriesFunction.java     |  17 +-
 .../util/TouchReplicatedRegionEntriesFunction.java |  17 +-
 .../java/org/apache/geode/admin/GemFireHealth.java |   5 +-
 .../admin/internal/ConfigurationParameterImpl.java |  12 -
 .../internal/ConfigurationParameterJmxImpl.java    |   5 -
 .../apache/geode/cache/RegionAccessException.java  |   8 +-
 .../geode/cache/RegionDistributionException.java   |   8 +-
 .../cache/query/internal/parse/GemFireAST.java     |   3 +-
 .../geode/distributed/ConfigurationProperties.java |  27 ++
 .../internal/AbstractDistributionConfig.java       |   3 +
 .../internal/DistributedSystemService.java}        |  23 +-
 .../distributed/internal/DistributionConfig.java   |  48 ++++
 .../internal/DistributionConfigImpl.java           |  26 +-
 .../internal/InternalDistributedSystem.java        |  24 ++
 .../geode/internal/EmptyInputStreamFilter.java}    |  21 +-
 .../apache/geode/internal/InputStreamFilter.java}  |  22 +-
 .../geode/internal/InternalDataSerializer.java     |  93 ++++++
 .../internal/ObjectInputStreamFilterWrapper.java   | 100 +++++++
 .../internal/admin/remote/ShutdownAllRequest.java  |   3 +-
 .../apache/geode/internal/cache/BucketAdvisor.java |   3 +-
 .../internal/cache/CreateRegionProcessor.java      |   4 +-
 .../apache/geode/internal/cache/DistTXState.java   |   8 +-
 .../internal/cache/DistTXStateOnCoordinator.java   |  12 +-
 .../cache/DistTXStateProxyImplOnCoordinator.java   |   2 +-
 .../geode/internal/cache/EventStateHelper.java     |   5 +-
 .../internal/cache/InitialImageOperation.java      |   4 +-
 .../PartitionedRegionFunctionResultWaiter.java     |   1 -
 .../geode/internal/cache/tx/DistTxEntryEvent.java  |   1 +
 .../geode/internal/jta/TransactionManagerImpl.java |   2 +-
 .../internal/cli/domain/DataCommandRequest.java    |   1 -
 .../pdx/internal/AutoSerializableManager.java      |   1 +
 .../sanctioned-geode-core-serializables.txt}       | 255 ++++++++++++++---
 .../geode/cache/ConnectionPoolDUnitTest.java       |  15 +-
 .../management/MemoryThresholdsDUnitTest.java      |  36 ++-
 .../cache/query/dunit/CompiledInDUnitTest.java     |  11 +
 .../dunit/QueryUsingFunctionContextDUnitTest.java  |  23 +-
 ...ncurrentIndexInitOnOverflowRegionDUnitTest.java |  13 +-
 ...ntIndexOperationsOnOverflowRegionDUnitTest.java |  11 +
 .../InitializeIndexEntryDestroyQueryDUnitTest.java |  12 +
 .../partitioned/PRBasicIndexCreationDUnitTest.java |  11 +
 .../PRBasicMultiIndexCreationDUnitTest.java        |  10 +
 .../query/partitioned/PRBasicQueryDUnitTest.java   |  17 +-
 .../partitioned/PRBasicRemoveIndexDUnitTest.java   |  11 +
 .../partitioned/PRColocatedEquiJoinDUnitTest.java  | 159 +++++------
 .../partitioned/PRQueryCacheCloseDUnitTest.java    |  15 +-
 .../cache/query/partitioned/PRQueryDUnitTest.java  |  16 +-
 .../partitioned/PRQueryRegionCloseDUnitTest.java   |  16 +-
 .../PRQueryRegionDestroyedDUnitTest.java           |  16 +-
 .../PRQueryRemoteNodeExceptionDUnitTest.java       |  11 +
 .../geode/cache/query/transaction/Person.java      |  21 +-
 .../cache/snapshot/ParallelSnapshotDUnitTest.java  |  11 +
 .../geode/cache/snapshot/SnapshotDUnitTest.java    |  25 +-
 .../cache30/DistributedAckRegionDUnitTest.java     |   2 +-
 .../geode/cache30/MultiVMRegionTestCase.java       |   9 +
 .../geode/cache30/PartitionedRegionDUnitTest.java  |  10 +
 .../AnalyzeSerializablesJUnitTest.java             | 306 ++++++++++++++++++--
 .../internal/DistributionConfigJUnitTest.java      |   6 +-
 .../deadlock/GemFireDeadlockDetectorDUnitTest.java |  17 +-
 ...alDataSerializerSerializationWhitelistTest.java | 152 ++++++++++
 .../internal/cache/CacheAdvisorDUnitTest.java      |   4 +-
 .../cache/ClientServerGetAllDUnitTest.java         |  31 +-
 .../cache/ClientServerTransactionCCEDUnitTest.java |  14 +
 .../cache/ClientServerTransactionDUnitTest.java    |  16 +-
 .../geode/internal/cache/CommitFunction.java       |  17 +-
 .../internal/cache/ConcurrentMapOpsDUnitTest.java  |  22 +-
 .../internal/cache/NestedTransactionFunction.java  |  17 +-
 .../cache/PartitionedRegionQueryDUnitTest.java     |  13 +-
 .../cache/PartitionedRegionSingleHopDUnitTest.java |  12 +-
 .../cache/PartitionedRegionTestUtilsDUnitTest.java |  60 ++--
 .../cache/RemoteTransactionCCEDUnitTest.java       |  12 +
 .../internal/cache/RemoteTransactionDUnitTest.java |  15 +
 .../geode/internal/cache/RollbackFunction.java     |  17 +-
 .../cache/TransactionsWithDeltaDUnitTest.java      |  28 +-
 .../ClientServerFunctionExecutionDUnitTest.java    |  10 +
 ...istributedRegionFunctionExecutionDUnitTest.java |  13 +
 .../FunctionExecution_ExceptionDUnitTest.java      |   9 +
 .../cache/execute/FunctionServiceBase.java         |  37 ++-
 .../cache/execute/FunctionServiceClientBase.java   |  10 +
 .../execute/FunctionServiceStatsDUnitTest.java     |   9 +
 .../execute/LocalDataSetIndexingDUnitTest.java     |  10 +
 .../execute/MemberFunctionExecutionDUnitTest.java  | 169 ++++++-----
 .../MultiRegionFunctionExecutionDUnitTest.java     |  13 +-
 .../OnGroupsFunctionExecutionDUnitTest.java        |  49 +++-
 ...ctionExecutionSelectorNoSingleHopDUnitTest.java |  10 +
 .../cache/execute/PRClientServerTestBase.java      |  10 +-
 .../cache/execute/PRColocationDUnitTest.java       |  13 +
 .../execute/PRFunctionExecutionDUnitTest.java      |  11 +
 .../geode/internal/cache/execute/TestFunction.java |  25 +-
 .../mock/AlterMockCacheExtensionFunction.java      |  17 +-
 .../mock/AlterMockRegionExtensionFunction.java     |  17 +-
 .../mock/CreateMockCacheExtensionFunction.java     |  17 +-
 .../mock/CreateMockRegionExtensionFunction.java    |  16 +-
 .../mock/DestroyMockCacheExtensionFunction.java    |  17 +-
 .../mock/DestroyMockRegionExtensionFunction.java   |  17 +-
 .../FireAndForgetFunctionOnAllServers.java         |  19 +-
 .../internal/cache/functions/TestFunction.java     |  22 +-
 .../geode/internal/cache/ha/ConflatableObject.java |  25 +-
 .../PersistentPartitionedRegionDUnitTest.java      |  10 +
 .../fixed/FixedPartitioningDUnitTest.java          |  12 +
 .../fixed/FixedPartitioningTestBase.java           |   2 +
 .../rollingupgrade/RollingUpgrade2DUnitTest.java   |  21 +-
 .../tier/sockets/ClientProxyWithDeltaTest.java     |  15 +-
 .../management/internal/cli/CliUtilDUnitTest.java  |   9 +
 .../internal/cli/commands/CliCommandTestBase.java  |   2 +-
 .../cli/commands/GemfireDataCommandsDUnitTest.java |  11 +-
 .../security/ClientAuthorizationDUnitTest.java     |   3 +
 .../security/ClientAuthorizationTestCase.java      |  33 ++-
 .../apache/geode/security/SecurityTestUtil.java    |   5 +
 .../apache/geode/security/SecurityTestUtils.java   |  12 +
 .../geode/test/dunit/DistributedTestUtils.java     |   1 +
 .../dunit/cache/internal/JUnit4CacheTestCase.java  |   1 +
 .../dunit/internal/JUnit4DistributedTestCase.java  |   5 +
 .../geode/test/dunit/standalone/DUnitLauncher.java |   3 +
 .../test/dunit/standalone/ProcessManager.java      |   3 +
 .../apache/geode/codeAnalysis/excludedClasses.txt  | 315 +++------------------
 .../org/apache/geode/codeAnalysis/openBugs.txt     |   2 +
 .../geode/internal/CQDistributedSystemService.java |  49 ++--
 ...e.distributed.internal.DistributedSystemService |  16 ++
 .../sanctioned-geode-cq-serializables.txt}         |   0
 .../cache/snapshot/ClientSnapshotDUnitTest.java    |  15 +
 .../internal/LuceneDistributedSystemService.java   |  48 ++--
 ...e.distributed.internal.DistributedSystemService |  16 ++
 .../sanctioned-geode-lucene-serializables.txt      |  20 ++
 .../lucene/LuceneClientSecurityDUnitTest.java      |   5 +
 .../apache/geode/cache/lucene/LuceneDUnitTest.java |  15 +-
 .../cache/lucene/LuceneQueriesAccessorBase.java    |  18 +-
 .../geode/cache/lucene/LuceneQueriesDUnitTest.java |  11 +
 .../cache/lucene/MixedObjectIndexDUnitTest.java    |  13 +
 .../management/LuceneManagementDUnitTest.java      |  20 +-
 .../AnalyzeLuceneSerializablesJUnitTest.java       |  19 +-
 .../apache/geode/codeAnalysis/excludedClasses.txt  |   2 +
 .../org/apache/geode/codeAnalysis/openBugs.txt     |   1 +
 .../codeAnalysis/sanctionedDataSerializables.txt   |  44 +++
 .../apache/geode/OldClientSupportDUnitTest.java    |  12 +
 .../internal/WANDistributedSystemService.java      |  49 ++--
 ...e.distributed.internal.DistributedSystemService |  15 +
 .../sanctioned-geode-wan-serializables.txt}        |   0
 geode-web-api/build.gradle                         |   1 +
 .../sanctioned-geode-web-api-serializables.txt     |   0
 .../AnalyzeWebApiSerializablesJUnitTest.java       |  19 +-
 .../apache/geode/codeAnalysis/excludedClasses.txt  |   8 +
 .../org/apache/geode/codeAnalysis/openBugs.txt     |   0
 .../codeAnalysis/sanctionedDataSerializables.txt   |   0
 gradle.properties                                  |   3 +
 gradle/test.gradle                                 |   3 +
 148 files changed, 2640 insertions(+), 865 deletions(-)

diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
index d0d7e18..88a5a7b 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/BootstrappingFunction.java
@@ -14,9 +14,13 @@
  */
 package org.apache.geode.modules.util;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.execute.Execution;
@@ -29,7 +33,7 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.MembershipListener;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 
-public class BootstrappingFunction implements Function, MembershipListener {
+public class BootstrappingFunction implements Function, MembershipListener, DataSerializable {
 
   private static final long serialVersionUID = 1856043174458190605L;
 
@@ -38,6 +42,8 @@ public class BootstrappingFunction implements Function, MembershipListener {
   private static final int TIME_TO_WAIT_FOR_CACHE =
       Integer.getInteger("gemfiremodules.timeToWaitForCache", 30000);
 
+  public BootstrappingFunction() {}
+
   @Override
   public void execute(FunctionContext context) {
     // Verify that the cache exists before continuing.
@@ -182,4 +188,10 @@ public class BootstrappingFunction implements Function, MembershipListener {
   @Override
   public void quorumLost(Set<InternalDistributedMember> internalDistributedMembers,
       List<InternalDistributedMember> internalDistributedMembers2) {}
+
+  @Override
+  public void toData(DataOutput out) throws IOException {}
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {}
 }
diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/CreateRegionFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/CreateRegionFunction.java
index d30d712..7c89cb0 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/CreateRegionFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/CreateRegionFunction.java
@@ -14,12 +14,17 @@
  */
 package org.apache.geode.modules.util;
 
+import java.io.DataInput;
+import java.io.DataOutput;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Properties;
 
+import javax.xml.crypto.Data;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.InternalGemFireError;
 import org.apache.geode.cache.AttributesFactory;
 import org.apache.geode.cache.Cache;
@@ -42,7 +47,7 @@ import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
-public class CreateRegionFunction implements Function, Declarable {
+public class CreateRegionFunction implements Function, Declarable, DataSerializable {
 
   private static final long serialVersionUID = -9210226844302128969L;
 
@@ -259,4 +264,14 @@ public class CreateRegionFunction implements Function, Declarable {
     }
     return lockService;
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/RegionSizeFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/RegionSizeFunction.java
index 8c62163..328d490 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/RegionSizeFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/RegionSizeFunction.java
@@ -14,19 +14,25 @@
  */
 package org.apache.geode.modules.util;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.Properties;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Declarable;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.RegionFunctionContext;
 
-public class RegionSizeFunction implements Function, Declarable {
+public class RegionSizeFunction implements Function, Declarable, DataSerializable {
 
   private static final long serialVersionUID = -2791590491585777990L;
 
   public static final String ID = "region-size-function";
 
+  public RegionSizeFunction() {}
+
   public void execute(FunctionContext context) {
     RegionFunctionContext rfc = (RegionFunctionContext) context;
     context.getResultSender().lastResult(rfc.getDataSet().size());
@@ -50,4 +56,14 @@ public class RegionSizeFunction implements Function, Declarable {
 
   @Override
   public void init(Properties arg0) {}
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchPartitionedRegionEntriesFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchPartitionedRegionEntriesFunction.java
index 85a8fbc..01b1685 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchPartitionedRegionEntriesFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchPartitionedRegionEntriesFunction.java
@@ -14,9 +14,13 @@
  */
 package org.apache.geode.modules.util;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Declarable;
@@ -30,7 +34,8 @@ import org.apache.geode.cache.partition.PartitionRegionHelper;
  * Touches the keys contained in the set of keys by performing a get on the partitioned region.
  *
  */
-public class TouchPartitionedRegionEntriesFunction implements Function, Declarable {
+public class TouchPartitionedRegionEntriesFunction
+    implements Function, Declarable, DataSerializable {
 
   private static final long serialVersionUID = -3700389655056961153L;
 
@@ -88,4 +93,14 @@ public class TouchPartitionedRegionEntriesFunction implements Function, Declarab
   }
 
   public void init(Properties properties) {}
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchReplicatedRegionEntriesFunction.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchReplicatedRegionEntriesFunction.java
index d855627..f48c117 100644
--- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchReplicatedRegionEntriesFunction.java
+++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/util/TouchReplicatedRegionEntriesFunction.java
@@ -14,9 +14,13 @@
  */
 package org.apache.geode.modules.util;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Declarable;
@@ -29,7 +33,8 @@ import org.apache.geode.cache.execute.FunctionContext;
  * is a non-data-aware function invoked using onMembers or onServers.
  *
  */
-public class TouchReplicatedRegionEntriesFunction implements Function, Declarable {
+public class TouchReplicatedRegionEntriesFunction
+    implements Function, Declarable, DataSerializable {
 
   private static final long serialVersionUID = -7424895036162243564L;
 
@@ -85,4 +90,14 @@ public class TouchReplicatedRegionEntriesFunction implements Function, Declarabl
   }
 
   public void init(Properties properties) {}
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/admin/GemFireHealth.java b/geode-core/src/main/java/org/apache/geode/admin/GemFireHealth.java
index bb8590a..986e6e0 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/GemFireHealth.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/GemFireHealth.java
@@ -167,7 +167,7 @@ public interface GemFireHealth {
     //////////////////// Instance Fields ////////////////////
 
     /** The string for this health */
-    private String healthString;
+    private String healthString = OKAY_STRING;
 
     ///////////////////// Constructors //////////////////////
 
@@ -184,6 +184,9 @@ public interface GemFireHealth {
      * Returns the appropriate canonical instance of <code>Health</code>.
      */
     public Object readResolve() {
+      if (this.healthString == null) {
+        return null;
+      }
       if (this.healthString.equals(GOOD_STRING)) {
         return GemFireHealth.GOOD_HEALTH;
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/ConfigurationParameterImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/ConfigurationParameterImpl.java
index 07341b9..7964c10 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/ConfigurationParameterImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/ConfigurationParameterImpl.java
@@ -254,21 +254,9 @@ public class ConfigurationParameterImpl implements org.apache.geode.admin.Config
    */
   protected void setInternalState(String description, Object value, Class type,
       boolean userModifiable) {
-    if (description == null || description.length() == 0) {
-      throw new IllegalArgumentException(
-          LocalizedStrings.ConfigurationParameterImpl_CONFIGURATIONPARAMETER_DESCRIPTION_MUST_BE_SPECIFIED
-              .toLocalizedString());
-    }
     this.description = description;
     this.type = type;
     this.userModifiable = userModifiable;
-
-    if (value == null) {
-      throw new IllegalArgumentException(
-          LocalizedStrings.ConfigurationParameterImpl_UNABLE_TO_SET_0_TO_NULL_VALUE
-              .toLocalizedString(getName()));
-    }
-
     this.value = value;
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/ConfigurationParameterJmxImpl.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/ConfigurationParameterJmxImpl.java
index 0acd73e..0dd4558 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/ConfigurationParameterJmxImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/ConfigurationParameterJmxImpl.java
@@ -149,11 +149,6 @@ public class ConfigurationParameterJmxImpl
     Class inClass = (Class) in.readObject();
     boolean inUserModifiable = in.readBoolean();
 
-    Assert.assertTrue(inName != null);
-    Assert.assertTrue(inDescription != null);
-    Assert.assertTrue(inValue != null);
-    Assert.assertTrue(inClass != null);
-
     this.deserialized = true;
     this.name = inName;
     setInternalState(inDescription, inValue, inClass, inUserModifiable);
diff --git a/geode-core/src/main/java/org/apache/geode/cache/RegionAccessException.java b/geode-core/src/main/java/org/apache/geode/cache/RegionAccessException.java
index fc832fd..ba0cc2b 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/RegionAccessException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/RegionAccessException.java
@@ -85,8 +85,12 @@ public class RegionAccessException extends RegionRoleException {
   private void writeObject(java.io.ObjectOutputStream out) throws IOException {
     out.defaultWriteObject();
     // transform roles to string names which are serializable...
-    Set roleNames = new HashSet(this.missingRoles.size());
-    for (Iterator iter = this.missingRoles.iterator(); iter.hasNext();) {
+    Set mr = this.missingRoles;
+    if (mr == null) {
+      mr = Collections.EMPTY_SET;
+    }
+    Set roleNames = new HashSet(mr.size());
+    for (Iterator iter = mr.iterator(); iter.hasNext();) {
       String name = ((Role) iter.next()).getName();
       roleNames.add(name);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/RegionDistributionException.java b/geode-core/src/main/java/org/apache/geode/cache/RegionDistributionException.java
index db3ea9e..be57600 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/RegionDistributionException.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/RegionDistributionException.java
@@ -89,8 +89,12 @@ public class RegionDistributionException extends RegionRoleException {
   private void writeObject(java.io.ObjectOutputStream out) throws IOException {
     out.defaultWriteObject();
     // transform roles to string names which are serializable...
-    Set roleNames = new HashSet(this.failedRoles.size());
-    for (Iterator iter = this.failedRoles.iterator(); iter.hasNext();) {
+    Set fr = this.failedRoles;
+    if (fr == null) {
+      fr = Collections.EMPTY_SET;
+    }
+    Set roleNames = new HashSet(fr.size());
+    for (Iterator iter = fr.iterator(); iter.hasNext();) {
       String name = ((Role) iter.next()).getName();
       roleNames.add(name);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
index 09535d5..a0f54b0 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
@@ -15,7 +15,8 @@
 
 package org.apache.geode.cache.query.internal.parse;
 
-import antlr.*;
+import antlr.CommonAST;
+import antlr.Token;
 
 import org.apache.geode.cache.query.internal.QCompiler;
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/ConfigurationProperties.java b/geode-core/src/main/java/org/apache/geode/distributed/ConfigurationProperties.java
index 649bfad..ec99319 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/ConfigurationProperties.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/ConfigurationProperties.java
@@ -2070,4 +2070,31 @@ public interface ConfigurationProperties {
    * <U>Since</U>: Geode 1.0
    */
   String SSL_WEB_SERVICE_REQUIRE_AUTHENTICATION = "ssl-web-require-authentication";
+  /**
+   * The static String definition of the <i>"validate-serializable-objects"</i> property
+   *
+   * <U>Description</U>If true checks incoming java serializable objects against a filter (allows
+   * internal Geode classes and any others provided in the serializable-object-filter property).
+   * </p>
+   * <U>Default</U>: "false"
+   * </p>
+   * <U>Since</U>: Geode 1.4
+   */
+  String VALIDATE_SERIALIZABLE_OBJECTS = "validate-serializable-objects";
+  /**
+   * The static String definition of the <i>"serializable-object-filter"</i> property
+   *
+   * <U>Description</U>A user provided whitelist of objects that the system will allow to serialize.
+   *
+   * <p>
+   * See java.io.ObjectInputFilter.Config for details on the syntax for creating filters.
+   * https://docs.oracle.com/javase/9/docs/api/java/io/ObjectInputFilter.Config.html
+   * </p>
+   * </p>
+   * <U>Default</U>: "!*"
+   * </p>
+   * <U>Since</U>: Geode 1.4
+   *
+   */
+  String SERIALIZABLE_OBJECT_FILTER = "serializable-object-filter";
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/AbstractDistributionConfig.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/AbstractDistributionConfig.java
index 43c5cb4..cff12fa 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/AbstractDistributionConfig.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/AbstractDistributionConfig.java
@@ -1220,6 +1220,9 @@ public abstract class AbstractDistributionConfig extends AbstractConfig
     m.put(SSL_DEFAULT_ALIAS, "The default certificate alias to be used in a multi-key keystore");
     m.put(SSL_WEB_SERVICE_REQUIRE_AUTHENTICATION,
         "This property determines is the HTTP service with use mutual ssl authentication.");
+    m.put(VALIDATE_SERIALIZABLE_OBJECTS,
+        "If true checks incoming java serializable objects against a filter");
+    m.put(SERIALIZABLE_OBJECT_FILTER, "The filter to check incoming java serializables against");
 
     dcAttDescriptions = Collections.unmodifiableMap(m);
 
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributedSystemService.java
similarity index 56%
copy from geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
copy to geode-core/src/main/java/org/apache/geode/distributed/internal/DistributedSystemService.java
index dcf2a85..36dc132 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributedSystemService.java
@@ -12,24 +12,15 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.cache;
+package org.apache.geode.distributed.internal;
 
-import static org.junit.Assert.*;
+import java.io.IOException;
+import java.util.Collection;
 
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+public interface DistributedSystemService {
+  void init(InternalDistributedSystem internalDistributedSystem);
 
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
+  Class getInterface();
 
-@Category(DistributedTest.class)
-public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
-
-  private static final long serialVersionUID = 5960292521068781262L;
-
-  @Override
-  protected boolean getConcurrencyChecksEnabled() {
-    return true;
-  }
+  Collection<String> getSerializationWhitelist() throws IOException;
 }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfig.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfig.java
index eabe6cc..57a334c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfig.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfig.java
@@ -4864,6 +4864,54 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   boolean DEFAULT_SSL_WEB_SERVICE_REQUIRE_AUTHENTICATION = false;
 
+  /**
+   * Returns the value of the {@link ConfigurationProperties#VALIDATE_SERIALIZABLE_OBJECTS} property
+   */
+  @ConfigAttributeGetter(name = VALIDATE_SERIALIZABLE_OBJECTS)
+  boolean getValidateSerializableObjects();
+
+  /**
+   * Sets the value of the {@link ConfigurationProperties#VALIDATE_SERIALIZABLE_OBJECTS} property
+   */
+  @ConfigAttributeSetter(name = VALIDATE_SERIALIZABLE_OBJECTS)
+  void setValidateSerializableObjects(boolean value);
+
+  /**
+   * The name of the {@link ConfigurationProperties#VALIDATE_SERIALIZABLE_OBJECTS} property
+   */
+  @ConfigAttribute(type = Boolean.class)
+  String VALIDATE_SERIALIZABLE_OBJECTS_NAME = VALIDATE_SERIALIZABLE_OBJECTS;
+
+  /**
+   * The default value of the {@link ConfigurationProperties#VALIDATE_SERIALIZABLE_OBJECTS}
+   * property.
+   */
+  boolean DEFAULT_VALIDATE_SERIALIZABLE_OBJECTS = false;
+
+  /**
+   * Returns the value of the {@link ConfigurationProperties#SERIALIZABLE_OBJECT_FILTER} property
+   */
+  @ConfigAttributeGetter(name = SERIALIZABLE_OBJECT_FILTER)
+  String getSerializableObjectFilter();
+
+  /**
+   * Sets the value of the {@link ConfigurationProperties#SERIALIZABLE_OBJECT_FILTER} property
+   */
+  @ConfigAttributeSetter(name = SERIALIZABLE_OBJECT_FILTER)
+  void setSerializableObjectFilter(String value);
+
+  /**
+   * The name of the {@link ConfigurationProperties#SERIALIZABLE_OBJECT_FILTER} property
+   */
+  @ConfigAttribute(type = String.class)
+  String SERIALIZABLE_OBJECT_FILTER_NAME = SERIALIZABLE_OBJECT_FILTER;
+
+  /**
+   * The default value of the {@link ConfigurationProperties#SERIALIZABLE_OBJECT_FILTER} property.
+   * Current value is a pattern for rejecting everything <code>"!*"</code>
+   */
+  String DEFAULT_SERIALIZABLE_OBJECT_FILTER = "!*";
+
   // *************** Initializers to gather all the annotations in this class
   // ************************
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfigImpl.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfigImpl.java
index cceeaf9..45a8a63 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfigImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfigImpl.java
@@ -627,6 +627,9 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
 
   protected String userCommandPackages = DEFAULT_USER_COMMAND_PACKAGES;
 
+  private boolean validateSerializableObjects = DEFAULT_VALIDATE_SERIALIZABLE_OBJECTS;
+  private String serializableObjectFilter = DEFAULT_SERIALIZABLE_OBJECT_FILTER;
+
   /**
    * "off-heap-memory-size" with value of "" or "<size>[g|m]"
    */
@@ -841,7 +844,8 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
     this.sslDefaultAlias = other.getSSLDefaultAlias();
     this.sslWebServiceRequireAuthentication = other.getSSLWebRequireAuthentication();
 
-
+    this.validateSerializableObjects = other.getValidateSerializableObjects();
+    this.serializableObjectFilter = other.getSerializableObjectFilter();
   }
 
   /**
@@ -2853,6 +2857,26 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
     this.sslWebServiceRequireAuthentication = requiresAuthenatication;
   }
 
+  @Override
+  public boolean getValidateSerializableObjects() {
+    return validateSerializableObjects;
+  }
+
+  @Override
+  public void setValidateSerializableObjects(boolean value) {
+    this.validateSerializableObjects = value;
+  }
+
+  @Override
+  public String getSerializableObjectFilter() {
+    return serializableObjectFilter;
+  }
+
+  @Override
+  public void setSerializableObjectFilter(String value) {
+    this.serializableObjectFilter = value;
+  }
+
   /////////////////////// Utility Methods ///////////////////////
 
 
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
index 382ba6a..35052d4 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
@@ -25,11 +25,14 @@ import java.lang.reflect.Array;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.StringTokenizer;
@@ -79,6 +82,7 @@ import org.apache.geode.internal.SystemTimer;
 import org.apache.geode.internal.admin.remote.DistributionLocatorId;
 import org.apache.geode.internal.cache.CacheConfig;
 import org.apache.geode.internal.cache.CacheServerImpl;
+import org.apache.geode.internal.cache.CacheService;
 import org.apache.geode.internal.cache.EventID;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalCache;
@@ -157,6 +161,9 @@ public class InternalDistributedSystem extends DistributedSystem
 
   private final GrantorRequestProcessor.GrantorRequestContext grc;
 
+  /** services provided by other modules */
+  private Map<Class, DistributedSystemService> services = new HashMap<>();
+
   public GrantorRequestProcessor.GrantorRequestContext getGrantorRequestContext() {
     return grc;
   }
@@ -576,6 +583,20 @@ public class InternalDistributedSystem extends DistributedSystem
   }
 
   /**
+   * Initialize any services that provided as extensions to the cache using the service loader
+   * mechanism.
+   */
+  private void initializeServices() {
+    ServiceLoader<DistributedSystemService> loader =
+        ServiceLoader.load(DistributedSystemService.class);
+    for (DistributedSystemService service : loader) {
+      service.init(this);
+      services.put(service.getInterface(), service);
+    }
+  }
+
+
+  /**
    * Initializes this connection to a distributed system with the current configuration state.
    */
   private void initialize(SecurityManager securityManager, PostProcessor postProcessor) {
@@ -659,6 +680,9 @@ public class InternalDistributedSystem extends DistributedSystem
         this.locatorDMTypeForced = true;
       }
 
+      initializeServices();
+      InternalDataSerializer.initialize(config, services.values());
+
       // Initialize the Diffie-Hellman and public/private keys
       try {
         HandShake.initCertsMap(this.config.getSecurityProps());
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-core/src/main/java/org/apache/geode/internal/EmptyInputStreamFilter.java
similarity index 57%
copy from geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
copy to geode-core/src/main/java/org/apache/geode/internal/EmptyInputStreamFilter.java
index dcf2a85..82369a0 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/EmptyInputStreamFilter.java
@@ -12,24 +12,13 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.cache;
+package org.apache.geode.internal;
 
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-
-@Category(DistributedTest.class)
-public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
-
-  private static final long serialVersionUID = 5960292521068781262L;
+import java.io.ObjectInputStream;
 
+public class EmptyInputStreamFilter implements InputStreamFilter {
   @Override
-  protected boolean getConcurrencyChecksEnabled() {
-    return true;
+  public void setFilterOn(ObjectInputStream ois) {
+    // Do nothing, this is the case where we don't filter.
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-core/src/main/java/org/apache/geode/internal/InputStreamFilter.java
similarity index 55%
copy from geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
copy to geode-core/src/main/java/org/apache/geode/internal/InputStreamFilter.java
index dcf2a85..19d4102 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/InputStreamFilter.java
@@ -12,24 +12,10 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.cache;
+package org.apache.geode.internal;
 
-import static org.junit.Assert.*;
+import java.io.ObjectInputStream;
 
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-
-@Category(DistributedTest.class)
-public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
-
-  private static final long serialVersionUID = 5960292521068781262L;
-
-  @Override
-  protected boolean getConcurrencyChecksEnabled() {
-    return true;
-  }
+public interface InputStreamFilter {
+  void setFilterOn(ObjectInputStream ois);
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
index dfe4005..5079c07 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java
@@ -14,12 +14,14 @@
  */
 package org.apache.geode.internal;
 
+import java.io.BufferedReader;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.EOFException;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.NotSerializableException;
 import java.io.ObjectInput;
 import java.io.ObjectInputStream;
@@ -37,6 +39,7 @@ import java.lang.reflect.Proxy;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.net.InetAddress;
+import java.net.URL;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -69,6 +72,7 @@ import org.apache.geode.CancelException;
 import org.apache.geode.CanonicalInstantiator;
 import org.apache.geode.DataSerializable;
 import org.apache.geode.DataSerializer;
+import org.apache.geode.GemFireConfigException;
 import org.apache.geode.GemFireIOException;
 import org.apache.geode.GemFireRethrowable;
 import org.apache.geode.Instantiator;
@@ -79,6 +83,7 @@ import org.apache.geode.ToDataException;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.distributed.internal.DMStats;
+import org.apache.geode.distributed.internal.DistributedSystemService;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -97,6 +102,7 @@ import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
 import org.apache.geode.internal.cache.tier.sockets.OldClientSupportService;
 import org.apache.geode.internal.cache.tier.sockets.Part;
 import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.lang.ClassUtils;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
 import org.apache.geode.internal.logging.log4j.LogMarker;
@@ -132,6 +138,33 @@ public abstract class InternalDataSerializer extends DataSerializer implements D
    * serialization.
    */
   private static final Map<String, DataSerializer> classesToSerializers = new ConcurrentHashMap<>();
+  private static final String SANCTIONED_SERIALIZABLES_DEPENDENCIES_PATTERN =
+      "java.**;javax.management.**" + ";javax.print.attribute.EnumSyntax" // used for some old enums
+          + ";antlr.**" // query AST objects
+          + ";org.apache.commons.modeler.AttributeInfo" // old Admin API
+          + ";org.apache.commons.modeler.FeatureInfo" // old Admin API
+          + ";org.apache.commons.modeler.ManagedBean" // old Admin API
+          + ";org.apache.geode.distributed.internal.DistributionConfigSnapshot" // old Admin API
+          + ";org.apache.geode.distributed.internal.RuntimeDistributionConfigImpl" // old Admin API
+          + ";org.apache.geode.distributed.internal.DistributionConfigImpl" // old Admin API
+          + ";org.apache.geode.distributed.internal.membership.InternalDistributedMember" // RegionSnapshotService
+                                                                                          // function
+                                                                                          // WindowedExportFunction
+          + ";org.apache.geode.internal.cache.persistence.PersistentMemberID" // putAll
+          + ";org.apache.geode.internal.cache.persistence.DiskStoreID" // putAll
+          + ";org.apache.geode.internal.cache.tier.sockets.VersionedObjectList" // putAll
+          + ";org.apache.shiro.*;org.apache.shiro.authz.*;org.apache.shiro.authc.*" // security
+                                                                                    // services
+          + ";org.apache.geode.modules.util.SessionCustomExpiry" // geode-modules
+          + ";";
+
+
+  private static InputStreamFilter defaultSerializationFilter = new EmptyInputStreamFilter();
+
+  /**
+   * A deserialization filter for ObjectInputStreams
+   */
+  private static InputStreamFilter serializationFilter = defaultSerializationFilter;
 
   private static final String serializationVersionTxt =
       System.getProperty(DistributionConfig.GEMFIRE_PREFIX + "serializationVersion");
@@ -187,6 +220,64 @@ public abstract class InternalDataSerializer extends DataSerializer implements D
   }
 
   /**
+   * Initializes the optional serialization "white list" if the user has requested it in the
+   * DistributionConfig
+   *
+   * @param distributionConfig the DistributedSystem configuration
+   * @param services DistributedSystem services that might have classes to white-list
+   */
+  public static void initialize(DistributionConfig distributionConfig,
+      Collection<DistributedSystemService> services) {
+    logger.info("initializing InternalDataSerializer with {} services", services.size());
+    if (distributionConfig.getValidateSerializableObjects()) {
+      if (!ClassUtils.isClassAvailable("sun.misc.ObjectInputFilter")) {
+        throw new GemFireConfigException(
+            "A serialization filter has been specified but this version of Java does not support serialization filters - sun.misc.ObjectInputFilter is not available");
+      }
+      serializationFilter =
+          new ObjectInputStreamFilterWrapper(SANCTIONED_SERIALIZABLES_DEPENDENCIES_PATTERN
+              + distributionConfig.getSerializableObjectFilter() + ";!*", services);
+    } else {
+      clearSerializationFilter();
+    }
+  }
+
+  private static void clearSerializationFilter() {
+    serializationFilter = defaultSerializationFilter;
+  }
+
+
+  /**
+   * {@link DistributedSystemService}s that need to whitelist Serializable objects can use this to
+   * read them from a file and then return them via
+   * {@link DistributedSystemService#getSerializationWhitelist}
+   */
+  public static Collection<String> loadClassNames(URL sanctionedSerializables) throws IOException {
+    Collection<String> result = new ArrayList(1000);
+    InputStream inputStream = sanctionedSerializables.openStream();
+    InputStreamReader reader = new InputStreamReader(inputStream);
+    BufferedReader in = new BufferedReader(reader);
+    try {
+      String line;
+      while ((line = in.readLine()) != null) {
+        line = line.trim();
+        if (line.startsWith("#") || line.startsWith("//")) {
+          // comment line
+        } else {
+          line = line.replaceAll("/", ".");
+          result.add(line.substring(0, line.indexOf(',')));
+        }
+      }
+    } finally {
+      inputStream.close();
+    }
+    // logger.info("loaded {} class names from {}", result.size(), sanctionedSerializables);
+    return result;
+
+  }
+
+
+  /**
    * Any time new serialization format is added then a new enum needs to be added here.
    *
    * @since GemFire 6.6.2
@@ -2837,6 +2928,7 @@ public abstract class InternalDataSerializer extends DataSerializer implements D
           }
 
           ObjectInput ois = new DSObjectInputStream(stream);
+          serializationFilter.setFilterOn((ObjectInputStream) ois);
           if (stream instanceof VersionedDataStream) {
             Version v = ((VersionedDataStream) stream).getVersion();
             if (v != null && v != Version.CURRENT) {
@@ -3409,6 +3501,7 @@ public abstract class InternalDataSerializer extends DataSerializer implements D
         throws IOException, ClassNotFoundException {
 
       String className = desc.getName();
+
       OldClientSupportService svc = getOldClientSupportService();
       if (svc != null) {
         className = svc.processIncomingClassName(className);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java b/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java
new file mode 100644
index 0000000..3552ac4
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java
@@ -0,0 +1,100 @@
+/*
+ * 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.internal;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.logging.log4j.Logger;
+import sun.misc.ObjectInputFilter;
+
+import org.apache.geode.InternalGemFireException;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.internal.logging.LogService;
+
+
+public class ObjectInputStreamFilterWrapper implements InputStreamFilter {
+  private static final Logger logger = LogService.getLogger();
+  private final ObjectInputFilter serializationFilter;
+
+  public ObjectInputStreamFilterWrapper(String serializationFilterSpec,
+      Collection<DistributedSystemService> services) {
+
+    Set<String> sanctionedClasses = new HashSet<>(500);
+    for (DistributedSystemService service : services) {
+      try {
+        Collection<String> classNames = service.getSerializationWhitelist();
+        logger.info("loaded {} sanctioned serializables from {}", classNames.size(),
+            service.getClass().getSimpleName());
+        sanctionedClasses.addAll(classNames);
+      } catch (IOException e) {
+        throw new InternalGemFireException("error initializing serialization filter for " + service,
+            e);
+      }
+    }
+
+    try {
+      URL sanctionedSerializables = ClassPathLoader.getLatest()
+          .getResource(InternalDataSerializer.class, "sanctioned-geode-core-serializables.txt");
+      Collection<String> coreClassNames =
+          InternalDataSerializer.loadClassNames(sanctionedSerializables);
+      sanctionedClasses.addAll(coreClassNames);
+    } catch (IOException e) {
+      throw new InternalGemFireException(
+          "unable to read sanctionedSerializables.txt to form a serialization white-list", e);
+    }
+
+    logger.info("setting a serialization filter containing {}", serializationFilterSpec);
+    // logger.info("sanctioned serializables are");
+    // for (String cls: sanctionedClasses) {
+    // logger.info(" " + cls);
+    // }
+
+    final ObjectInputFilter userFilter =
+        ObjectInputFilter.Config.createFilter(serializationFilterSpec);
+    serializationFilter = filterInfo -> {
+      if (filterInfo.serialClass() == null) {
+        return userFilter.checkInput(filterInfo);
+      }
+
+      String className = filterInfo.serialClass().getName();
+      if (filterInfo.serialClass().isArray()) {
+        className = filterInfo.serialClass().getComponentType().getName();
+      }
+      if (sanctionedClasses.contains(className)) {
+        return ObjectInputFilter.Status.ALLOWED;
+        // return ObjectInputFilter.Status.UNDECIDED;
+      } else {
+        ObjectInputFilter.Status status = userFilter.checkInput(filterInfo);
+        if (status == ObjectInputFilter.Status.REJECTED) {
+          logger.fatal("Serialization filter is rejecting class {}", className, new Exception(""));
+        }
+        return status;
+      }
+    };
+
+    // global filter - if we enable this it will affect all ObjectInputStreams
+    // ObjectInputFilter.Config.setSerialFilter(serializationFilter);
+  }
+
+  @Override
+  public void setFilterOn(ObjectInputStream objectInputStream) {
+    ObjectInputFilter.Config.setObjectInputFilter(objectInputStream, serializationFilter);
+  }
+}
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 3023a37..975ec12 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
@@ -285,7 +285,8 @@ public class ShutdownAllRequest extends AdminRequest {
     }
 
     public Set getResults() {
-      logger.debug("{} shutdownAll returning {}", this, results, new Exception("stack trace"));
+      logger.debug("{} shutdownAll returning {}", this,
+          results/* , new Exception("stack trace") */);
       return results;
     }
   }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java
index 6575d65..4320833 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java
@@ -21,6 +21,7 @@ import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -658,7 +659,7 @@ public class BucketAdvisor extends CacheDistributionAdvisor {
     @SuppressWarnings("unchecked")
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
-      backingSet = m.keySet();
+      backingSet = m == null ? Collections.<E>emptySet() : m.keySet();
     }
   }
 
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 94abc68..8375814 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
@@ -805,7 +805,7 @@ public class CreateRegionProcessor implements ProfileExchangeProcessor {
         }
       }
       if (in.readBoolean()) {
-        this.eventState = EventStateHelper.fromData(in, false);
+        this.eventState = EventStateHelper.deDataSerialize(in, false);
       }
       if (in.readBoolean()) {
         this.destroyedId = new PersistentMemberID();
@@ -838,7 +838,7 @@ public class CreateRegionProcessor implements ProfileExchangeProcessor {
         // The isHARegion flag is false here because
         // we currently only include the event state in the profile
         // for bucket regions.
-        EventStateHelper.toData(out, (Map) eventState, false);
+        EventStateHelper.dataSerialize(out, (Map) eventState, false);
       } else {
         out.writeBoolean(false);
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXState.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXState.java
index 92fa408..30850bc 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXState.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXState.java
@@ -160,7 +160,7 @@ public class DistTXState extends TXState {
       throws CommitConflictException, UnsupportedOperationInTransactionException {
     if (logger.isDebugEnabled()) {
       logger.debug("DistTXState.precommit transaction {} is closed {} ", getTransactionId(),
-          this.closed, new Throwable());
+          this.closed/* , new Throwable() */);
     }
 
     if (this.closed) {
@@ -250,7 +250,7 @@ public class DistTXState extends TXState {
   public void commit() throws CommitConflictException {
     if (logger.isDebugEnabled()) {
       logger.debug("DistTXState.commit transaction {} is closed {} ", getTransactionId(),
-          this.closed, new Throwable());
+          this.closed/* , new Throwable() */);
     }
 
     if (this.closed) {
@@ -479,9 +479,7 @@ public class DistTXState extends TXState {
     this.updatingTxStateDuringPreCommit = updatingTxState;
     if (logger.isDebugEnabled()) {
       logger.debug("DistTXState setUpdatingTxStateDuringPreCommit incoming {} final {} ",
-          updatingTxState, this.updatingTxStateDuringPreCommit, new Throwable()); // [DISTTX] TODO:
-                                                                                  // Remove
-                                                                                  // throwable
+          updatingTxState, this.updatingTxStateDuringPreCommit);
     }
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateOnCoordinator.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateOnCoordinator.java
index dcfb456..3fffdcf 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateOnCoordinator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateOnCoordinator.java
@@ -109,8 +109,10 @@ public class DistTXStateOnCoordinator extends DistTXState implements DistTXCoord
       boolean overwriteDestroyed) {
     if (logger.isDebugEnabled()) {
       // [DISTTX] TODO Remove throwable
-      logger.debug("DistTXStateOnCoordinator.putEntry " + event.getKeyInfo().getKey(),
-          new Throwable());
+      logger.debug(
+          "DistTXStateOnCoordinator.putEntry " + event.getKeyInfo().getKey()/*
+                                                                             * , new Throwable()
+                                                                             */);
     }
 
     boolean returnValue = super.putEntry(event, ifNew, ifOld, expectedOldValue, requireOldValue,
@@ -137,8 +139,10 @@ public class DistTXStateOnCoordinator extends DistTXState implements DistTXCoord
       boolean overwriteDestroyed) throws DataLocationException {
     if (logger.isDebugEnabled()) {
       // [DISTTX] TODO Remove throwable
-      logger.debug("DistTXStateOnCoordinator.putEntryOnRemote " + event.getKeyInfo().getKey(),
-          new Throwable());
+      logger.debug("DistTXStateOnCoordinator.putEntryOnRemote "
+          + event.getKeyInfo().getKey()/*
+                                        * , new Throwable()
+                                        */);
     }
 
     boolean returnValue = super.putEntryOnRemote(event, ifNew, ifOld, expectedOldValue,
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateProxyImplOnCoordinator.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateProxyImplOnCoordinator.java
index 3d50fca..baff134 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateProxyImplOnCoordinator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXStateProxyImplOnCoordinator.java
@@ -355,7 +355,7 @@ public class DistTXStateProxyImplOnCoordinator extends DistTXStateProxyImpl {
       if (logger.isDebugEnabled()) {
         logger.debug(
             "DistTXStateProxyImplOnCoordinator::getRealDeal Built a new TXState: {} txMge:{} proxy {} target {}",
-            this.realDeal, this.txMgr.getDM().getId(), this, target, new Throwable());
+            this.realDeal, this.txMgr.getDM().getId(), this, target/* , new Throwable() */);
       }
       target2realDeals.put(target, (DistTXCoordinatorInterface) realDeal);
       if (logger.isDebugEnabled()) {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/EventStateHelper.java b/geode-core/src/main/java/org/apache/geode/internal/cache/EventStateHelper.java
index 5106ddd..6570660 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/EventStateHelper.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/EventStateHelper.java
@@ -50,7 +50,8 @@ public class EventStateHelper {
    * {@link RegionStateMessage#toData(DataOutput)} <br>
    */
   @SuppressWarnings("synthetic-access")
-  public static void toData(DataOutput dop, Map eventState, boolean isHARegion) throws IOException {
+  public static void dataSerialize(DataOutput dop, Map eventState, boolean isHARegion)
+      throws IOException {
     // For HARegionQueues, the event state map is uses different values
     // than a regular region :(
     InternalDistributedMember myId =
@@ -105,7 +106,7 @@ public class EventStateHelper {
    * {@link CreateRegionReplyMessage#fromData(DataInput)} <br>
    * {@link RegionStateMessage#fromData(DataInput)} <br>
    */
-  public static Map fromData(DataInput dip, boolean isHARegion)
+  public static Map deDataSerialize(DataInput dip, boolean isHARegion)
       throws IOException, ClassNotFoundException {
 
     InternalDistributedMember senderId = InternalDistributedMember.readEssentialData(dip);
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 e1e391e..269c5d1 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
@@ -3367,7 +3367,7 @@ public class InitialImageOperation {
       dop.writeBoolean(isHARegion);
       if (eventState != null) {
         dop.writeBoolean(true);
-        EventStateHelper.toData(dop, eventState, isHARegion);
+        EventStateHelper.dataSerialize(dop, eventState, isHARegion);
       } else {
         dop.writeBoolean(false);
       }
@@ -3400,7 +3400,7 @@ public class InitialImageOperation {
       isHARegion = dip.readBoolean();
       boolean has = dip.readBoolean();
       if (has) {
-        eventState = EventStateHelper.fromData(dip, isHARegion);
+        eventState = EventStateHelper.deDataSerialize(dip, isHARegion);
       }
       has = dip.readBoolean();
       if (has) {
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 15921fc..c10cb26 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
@@ -91,7 +91,6 @@ public class PartitionedRegionFunctionResultWaiter extends StreamingFunctionOper
 
   protected DistributionMessage createRequestMessage(InternalDistributedMember recipient,
       ReplyProcessor21 processor, FunctionRemoteContext context) {
-
     PartitionedRegionFunctionStreamingMessage msg =
         new PartitionedRegionFunctionStreamingMessage(recipient, this.regionId, processor, context);
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/DistTxEntryEvent.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/DistTxEntryEvent.java
index 729d811..2702ccd 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/DistTxEntryEvent.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/DistTxEntryEvent.java
@@ -110,6 +110,7 @@ public class DistTxEntryEvent extends EntryEventImpl {
     basicSetNewValue(DataSerializer.readObject(in));
 
     byte flags = DataSerializer.readByte(in);
+
     if ((flags & HAS_PUTALL_OP) != 0) {
       putAllFromData(in);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java b/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
index 5fc9593..f088a5b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/jta/TransactionManagerImpl.java
@@ -895,7 +895,7 @@ public class TransactionManagerImpl implements TransactionManager, Serializable
     }
   }
 
-  static class GlobalTransactionComparator implements Comparator {
+  static class GlobalTransactionComparator implements Comparator, Serializable {
 
     /**
      * Sort the array in ascending order of expiration times
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandRequest.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandRequest.java
index 5acee2e..76bcaec 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandRequest.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandRequest.java
@@ -192,5 +192,4 @@ public class DataCommandRequest implements Serializable {
   public void setPrincipal(Object principal) {
     this.principal = principal;
   }
-
 }
diff --git a/geode-core/src/main/java/org/apache/geode/pdx/internal/AutoSerializableManager.java b/geode-core/src/main/java/org/apache/geode/pdx/internal/AutoSerializableManager.java
index 67a2151..c3297ae 100644
--- a/geode-core/src/main/java/org/apache/geode/pdx/internal/AutoSerializableManager.java
+++ b/geode-core/src/main/java/org/apache/geode/pdx/internal/AutoSerializableManager.java
@@ -94,6 +94,7 @@ public class AutoSerializableManager {
    */
   private Set<Pattern> hardcodedExclusions = new HashSet<Pattern>() {
     {
+      add(Pattern.compile("org\\.apache\\.geode\\..*"));
       add(Pattern.compile("com\\.gemstone\\..*"));
       add(Pattern.compile("java\\..*"));
       add(Pattern.compile("javax\\..*"));
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
old mode 100755
new mode 100644
similarity index 72%
rename from geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
rename to geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
index 03fb839..e7cd276
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
@@ -2,7 +2,6 @@ org/apache/geode/CancelException,true,3215578659523282642
 org/apache/geode/CopyException,true,-1143711608610323585
 org/apache/geode/DeltaSerializationException,true,-2630435945840206466
 org/apache/geode/ForcedDisconnectException,true,4977003259880566257
-org/apache/geode/GemFireCacheException,true,-2844020916351682908
 org/apache/geode/GemFireCheckedException,true,-8659184576090173188
 org/apache/geode/GemFireConfigException,true,7791789785331120991
 org/apache/geode/GemFireException,true,-6972360779789402295
@@ -25,7 +24,6 @@ org/apache/geode/UnmodifiableException,true,-1043243260052395455
 org/apache/geode/UnstartedSystemException,true,-4285897556527521788
 org/apache/geode/admin/AdminException,true,879398950879472021
 org/apache/geode/admin/AdminXmlException,true,-6848726449157550169
-org/apache/geode/admin/AlertLevel,true,-4752438966587392126,ordinal:int
 org/apache/geode/admin/CacheDoesNotExistException,true,-1639933911265729978
 org/apache/geode/admin/GemFireHealth$Health,true,3039539430412151801,healthString:java/lang/String
 org/apache/geode/admin/GemFireMemberStatus,true,3389997790525991310,_bindAddress:java/lang/String,_clientHealthStats:java/util/Map,_clientHostNames:java/util/Map,_clientQueueSizes:java/util/Map,_connectedClients:java/util/Set,_connectedIncomingGateways:java/util/Map,_connectedPeers:java/util/Set,_connectedServers:java/util/Set,_freeHeapSize:long,_gatewayHubStatus:java/lang/Object,_gatewayQueueSizes:java/util/Map,_hostAddress:java/net/InetAddress,_isClient:boolean,_isConnected:boolean,_is [...]
@@ -68,15 +66,17 @@ org/apache/geode/cache/EntryExistsException,true,2925082493103537925,oldValue:ja
 org/apache/geode/cache/EntryNotFoundException,true,-2404101631744605659
 org/apache/geode/cache/EvictionAction,true,-98840597493242980
 org/apache/geode/cache/EvictionAlgorithm,true,5778669432033106789
+org/apache/geode/cache/EvictionAttributes,false
+org/apache/geode/cache/ExpirationAttributes,false
 org/apache/geode/cache/ExpirationAction,true,658925707882047900,ordinal:int
 org/apache/geode/cache/FailedSynchronizationException,true,-6225053492344591496
 org/apache/geode/cache/GatewayConfigurationException,true,3112317608711263007
 org/apache/geode/cache/GatewayException,true,8090143153569084886
 org/apache/geode/cache/IncompatibleVersionException,true,668812986092856749
 org/apache/geode/cache/InterestPolicy,true,1567179436331385968,ordinal:byte
-org/apache/geode/cache/InterestResultPolicy,true,-4993765891973030160,ordinal:byte
 org/apache/geode/cache/LossAction,true,-832035480397447797,ordinal:byte
 org/apache/geode/cache/LowMemoryException,true,6585765466722883168,critMems:java/util/Set
+org/apache/geode/cache/MembershipAttributes,false
 org/apache/geode/cache/MirrorType,true,-6632651349646672540,ordinal:int
 org/apache/geode/cache/NoQueueServersAvailableException,true,8484086019155762365
 org/apache/geode/cache/NoSubscriptionServersAvailableException,true,8484086019155762365
@@ -96,6 +96,7 @@ org/apache/geode/cache/ResumptionAction,true,6632254151314915610,ordinal:byte
 org/apache/geode/cache/RoleException,true,-7521056108445887394
 org/apache/geode/cache/Scope,true,5534399159504301602,ordinal:int
 org/apache/geode/cache/StatisticsDisabledException,true,-2987721454129719551
+org/apache/geode/cache/SubscriptionAttributes,false
 org/apache/geode/cache/SynchronizationCommitConflictException,true,2619806460255259492
 org/apache/geode/cache/TimeoutException,true,-6260761691185737442
 org/apache/geode/cache/TransactionDataNodeHasDepartedException,true,-2217135580436381984
@@ -212,16 +213,12 @@ org/apache/geode/distributed/OplogCancelledException,true,106566926222526806
 org/apache/geode/distributed/PoolCancelledException,true,-4562742255812266767
 org/apache/geode/distributed/TXManagerCancelledException,true,3902857360354568446
 org/apache/geode/distributed/internal/AtomicLongWithTerminalState,true,-6130409343386576390
-org/apache/geode/distributed/internal/DistributionConfigSnapshot,true,7445728132965092798,modifiable:java/util/HashSet
 org/apache/geode/distributed/internal/DistributionException,true,9039055444056269504
 org/apache/geode/distributed/internal/FlowControlParams,true,7322447678546893647,byteAllowance:int,rechargeBlockMs:int,rechargeThreshold:float
 org/apache/geode/distributed/internal/HighPriorityAckedMessage$operationType,false
-org/apache/geode/distributed/internal/OverflowQueueWithDMStats,true,-1846248853494394996,stats:org/apache/geode/distributed/internal/QueueStatHelper
 org/apache/geode/distributed/internal/ReliableReplyException,true,472566058783450438
 org/apache/geode/distributed/internal/ReplyException,true,-4410839793809166071
 org/apache/geode/distributed/internal/ResourceEvent,false
-org/apache/geode/distributed/internal/RuntimeDistributionConfigImpl,true,-805637520096606113
-org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats,true,5425180246954573433,maxMemSize:int,maxSize:int,memSize:int,startThrottleMemSize:int,startThrottleSize:int
 org/apache/geode/distributed/internal/deadlock/DLockDependencyMonitor$LockId,false,serviceName:java/lang/String,tokenName:java/io/Serializable
 org/apache/geode/distributed/internal/deadlock/Dependency,true,1,depender:java/lang/Object,dependsOn:java/lang/Object
 org/apache/geode/distributed/internal/deadlock/DependencyGraph,true,-6794339771271587648,edges:java/util/Set,vertices:java/util/Map
@@ -234,17 +231,12 @@ org/apache/geode/distributed/internal/locks/DistributedMemberLock$LockReentryPol
 org/apache/geode/distributed/internal/locks/LockGrantorDestroyedException,true,-3540124531032570817
 org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave$ViewAbandonedException,false
 org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage$messageType,false
-org/apache/geode/distributed/internal/membership/gms/messenger/JGAddress,true,-1818672332115113291,ip_addr:java/net/InetAddress,port:int,vmViewId:int
-org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager$BoundedLinkedHashMap,true,-3419897166186852692
-org/apache/geode/internal/AbstractConfig$SortedProperties,true,7156507110684631135
 org/apache/geode/internal/ConfigSource,true,-4097017272431018553,description:java/lang/String,type:org/apache/geode/internal/ConfigSource$Type
 org/apache/geode/internal/ConfigSource$Type,false
 org/apache/geode/internal/CopyOnWriteHashSet,true,8591978652141659932
 org/apache/geode/internal/DSFIDNotFoundException,true,130596009484324655,dsfid:int,versionOrdinal:short
 org/apache/geode/internal/InternalDataSerializer$SERIALIZATION_VERSION,false
 org/apache/geode/internal/InternalStatisticsDisabledException,true,4146181546364258311
-org/apache/geode/internal/ObjIdConcurrentMap,true,7249069246763182397,segmentMask:int,segmentShift:int,segments:org/apache/geode/internal/ObjIdConcurrentMap$Segment[]
-org/apache/geode/internal/ObjIdConcurrentMap$Segment,true,2249069246763182397,loadFactor:float
 org/apache/geode/internal/SystemAdmin$CombinedResources,false
 org/apache/geode/internal/admin/CompoundEntrySnapshot,true,5776382582897895718,allUserAttributes:java/util/Set,allValues:java/util/Set,hitRatio:float,hitRatioSum:double,hitResponders:long,lastAccessTime:long,lastModifiedTime:long,name:java/lang/Object,numHits:long,numMisses:long
 org/apache/geode/internal/admin/CompoundRegionSnapshot,true,6295026394298398004,allCacheLoaders:java/util/Set,allCacheWriters:java/util/Set,allCapControllers:java/util/Set,allConcLevels:java/util/Set,allCustomIdle:java/util/HashSet,allCustomTtl:java/util/HashSet,allDataPolicies:java/util/Set,allEntryIdleTimeout:java/util/Set,allEntryTtl:java/util/Set,allInitialCaps:java/util/Set,allKeyConstraints:java/util/Set,allListeners:java/util/Set,allLoadFactors:java/util/Set,allRegionIdleTimeout:j [...]
@@ -267,6 +259,7 @@ org/apache/geode/internal/cache/DistTXPrecommitMessage$DistTxPrecommitExceptionC
 org/apache/geode/internal/cache/DistTXRollbackMessage$DistTxRollbackExceptionCollectingException,true,-2681117727592137893,cacheExceptions:java/util/Set,fatalExceptions:java/util/Map,id:org/apache/geode/internal/cache/TXId,regionExceptions:java/util/Map
 org/apache/geode/internal/cache/DistributedClearOperation$OperationType,false
 org/apache/geode/internal/cache/DistributedTombstoneOperation$TOperation,false
+org/apache/geode/internal/cache/EvictionAttributesImpl,false
 org/apache/geode/internal/cache/FilterProfile$interestType,false
 org/apache/geode/internal/cache/FilterProfile$operationType,false
 org/apache/geode/internal/cache/ForceReattemptException,true,-595988965679204903,hasHash:boolean,keyHash:int
@@ -279,9 +272,9 @@ org/apache/geode/internal/cache/LocalRegion$1,true,0,this$0:org/apache/geode/int
 org/apache/geode/internal/cache/LocalRegion$IteratorType,false
 org/apache/geode/internal/cache/Oplog$OkToSkipResult,false
 org/apache/geode/internal/cache/Oplog$OplogFileType,false
+org/apache/geode/internal/cache/PartitionAttributesImpl,false
 org/apache/geode/internal/cache/PRContainsValueFunction,false
 org/apache/geode/internal/cache/PRHARedundancyProvider$ArrayListWithClearState,true,1,wasCleared:boolean
-org/apache/geode/internal/cache/PartitionedRegion$7,true,0,this$0:org/apache/geode/internal/cache/PartitionedRegion,val$bucketId:int
 org/apache/geode/internal/cache/PartitionedRegion$PRIdMap,true,3667357372967498179,cleared:boolean
 org/apache/geode/internal/cache/PartitionedRegion$SizeEntry,false,isPrimary:boolean,size:int
 org/apache/geode/internal/cache/PartitionedRegionDataStore$CreateBucketResult,false,nowExists:boolean
@@ -299,8 +292,6 @@ org/apache/geode/internal/cache/RemoteRegionOperation$Operation,false
 org/apache/geode/internal/cache/SearchLoadAndWriteProcessor$TryAgainException,false
 org/apache/geode/internal/cache/TXCommitMessage$CommitExceptionCollectingException,true,589384721273797822,cacheExceptions:java/util/Set,fatalExceptions:java/util/Map,id:org/apache/geode/internal/cache/TXId,regionExceptions:java/util/Map
 org/apache/geode/internal/cache/TXCommitMessage$RegionCommitList,true,-8910813949027683641
-org/apache/geode/internal/cache/TXFarSideCMTracker$2,false,this$0:org/apache/geode/internal/cache/TXFarSideCMTracker
-org/apache/geode/internal/cache/TXManagerImpl$1,true,-4156018226167594134,this$0:org/apache/geode/internal/cache/TXManagerImpl
 org/apache/geode/internal/cache/control/InternalResourceManager$ResourceType,false,id:int
 org/apache/geode/internal/cache/control/MemoryThresholds$MemoryState,false
 org/apache/geode/internal/cache/control/PartitionRebalanceDetailsImpl,true,5880667005758250156,bucketCreateBytes:long,bucketCreateTime:long,bucketCreatesCompleted:int,bucketRemoveBytes:long,bucketRemoveTime:long,bucketRemovesCompleted:int,bucketTransferBytes:long,bucketTransferTime:long,bucketTransfersCompleted:int,partitionMemberDetailsAfter:java/util/Set,partitionMemberDetailsBefore:java/util/Set,primaryTransferTime:long,primaryTransfersCompleted:int,time:long
@@ -318,7 +309,6 @@ org/apache/geode/internal/cache/lru/LRUAlgorithm,false,bucketRegion:org/apache/g
 org/apache/geode/internal/cache/lru/LRUCapacityController,true,-4383074909189355938,maximumEntries:int
 org/apache/geode/internal/cache/lru/MemLRUCapacityController,true,6364183985590572514,isOffHeap:boolean,limit:long,perEntryOverHead:int,sizer:org/apache/geode/cache/util/ObjectSizer
 org/apache/geode/internal/cache/partitioned/DumpB2NRegion$PrimaryInfo,true,6334695270795306178,hostToken:java/lang/String,isHosting:boolean,isPrimary:boolean
-org/apache/geode/internal/cache/partitioned/FetchEntriesMessage$FetchEntriesResponse$1,true,0,this$0:org/apache/geode/internal/cache/partitioned/FetchEntriesMessage$FetchEntriesResponse,val$bucketId:int,val$recipient:org/apache/geode/distributed/internal/membership/InternalDistributedMember
 org/apache/geode/internal/cache/partitioned/PRLocallyDestroyedException,true,-1291911181409686840
 org/apache/geode/internal/cache/partitioned/PartitionMemberInfoImpl,true,8245020687604034289,bucketCount:int,configuredMaxMemory:long,distributedMember:org/apache/geode/distributed/DistributedMember,primaryCount:int,size:long
 org/apache/geode/internal/cache/partitioned/PartitionRegionInfoImpl,true,6462414089469761476,actualRedundantCopies:int,colocatedWith:java/lang/String,configuredBucketCount:int,configuredRedundantCopies:int,createdBucketCount:int,lowRedundancyBucketCount:int,memberDetails:java/util/Set,offlineMembers:org/apache/geode/internal/cache/partitioned/OfflineMemberDetails,regionPath:java/lang/String
@@ -351,8 +341,6 @@ org/apache/geode/internal/cache/wan/GatewaySenderConfigurationException,true,1
 org/apache/geode/internal/cache/wan/GatewaySenderException,true,8090143153569084886
 org/apache/geode/internal/cache/wan/parallel/BucketRegionQueueUnavailableException,true,-1860388334938028312
 org/apache/geode/internal/cache/xmlcache/CacheXmlVersion,false,namespace:java/lang/String,publicId:java/lang/String,schemaLocation:java/lang/String,systemId:java/lang/String,version:java/lang/String
-org/apache/geode/internal/cache/xmlcache/DiskStoreAttributesCreation,false
-org/apache/geode/internal/cache/xmlcache/RegionAttributesCreation,true,2241078661206355376,asyncEventQueueIds:java/util/Set,cacheListeners:java/util/ArrayList,cacheLoader:org/apache/geode/cache/CacheLoader,cacheWriter:org/apache/geode/cache/CacheWriter,cloningEnabled:boolean,compressor:org/apache/geode/compression/Compressor,concurrencyChecksEnabled:boolean,concurrencyLevel:int,customEntryIdleTimeout:org/apache/geode/cache/CustomExpiry,customEntryTimeToLive:org/apache/geode/cache/CustomE [...]
 org/apache/geode/internal/concurrent/AtomicLong5,true,-1915700199064062938
 org/apache/geode/internal/concurrent/CompactConcurrentHashSet2,true,7249069246763182397
 org/apache/geode/internal/concurrent/CompactConcurrentHashSet2$Segment,true,2249069246763182397,loadFactor:float
@@ -374,17 +362,44 @@ org/apache/geode/internal/datasource/ManagedPoolCacheImpl,true,10646422717363997
 org/apache/geode/internal/datasource/PoolException,true,-6178632158204356727
 org/apache/geode/internal/datasource/TranxPoolCacheImpl,true,3295652525163658888,m_xads:javax/sql/XADataSource
 org/apache/geode/internal/hll/CardinalityMergeException,false
-org/apache/geode/internal/hll/HyperLogLog,true,-4661220245111112301,alphaMM:double,log2m:int,registerSet:org/apache/geode/internal/hll/RegisterSet
-org/apache/geode/internal/hll/HyperLogLog$Builder,true,-979314356097156719,rsd:double
-org/apache/geode/internal/hll/HyperLogLog$HyperLogLogMergeException,false
-org/apache/geode/internal/hll/HyperLogLog$SerializationHolder,false,hyperLogLogHolder:org/apache/geode/internal/hll/HyperLogLog
-org/apache/geode/internal/hll/HyperLogLogPlus,true,7504952025744337762,alphaMM:double,format:org/apache/geode/internal/hll/HyperLogLogPlus$Format,m:int,p:int,registerSet:org/apache/geode/internal/hll/RegisterSet,sm:int,sortThreshold:int,sp:int,sparseSet:int[],sparseSetThreshold:int,tmpIndex:int,tmpSet:int[]
-org/apache/geode/internal/hll/HyperLogLogPlus$Builder,true,-1608419770500158843,p:int,sp:int
-org/apache/geode/internal/hll/HyperLogLogPlus$Format,false
-org/apache/geode/internal/hll/HyperLogLogPlus$HyperLogLogPlusMergeException,false
-org/apache/geode/internal/hll/HyperLogLogPlus$SerializationHolder,false,hyperLogLogHolder:org/apache/geode/internal/hll/HyperLogLogPlus
 org/apache/geode/internal/jta/TransactionManagerImpl,true,5033392316185449821,globalTransactionMap:java/util/Map,gtxSet:java/util/SortedSet,isActive:boolean,transactionMap:java/util/Map
+org/apache/geode/internal/jta/TransactionManagerImpl$GlobalTransactionComparator,false
 org/apache/geode/internal/jta/UserTransactionImpl,true,2994652455204901910,storedTimeOut:int,tm:javax/transaction/TransactionManager
+org/apache/geode/internal/memcached/Command,false
+org/apache/geode/internal/memcached/Command$1,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$10,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$11,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$12,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$13,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$14,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$15,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$16,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$17,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$18,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$19,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$2,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$20,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$21,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$22,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$23,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$24,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$25,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$26,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$27,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$28,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$29,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$3,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$30,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$31,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$32,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$33,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$34,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$4,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$5,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$6,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$7,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$8,false,processor:org/apache/geode/internal/memcached/CommandProcessor
+org/apache/geode/internal/memcached/Command$9,false,processor:org/apache/geode/internal/memcached/CommandProcessor
 org/apache/geode/internal/memcached/Reply,false
 org/apache/geode/internal/memcached/Reply$1,false
 org/apache/geode/internal/memcached/Reply$2,false
@@ -414,6 +429,7 @@ org/apache/geode/internal/process/PidUnavailableException,true,-1660269538268828
 org/apache/geode/internal/process/signal/Signal,false,description:java/lang/String,name:java/lang/String,number:int,type:org/apache/geode/internal/process/signal/SignalType
 org/apache/geode/internal/process/signal/SignalEvent,false,signal:org/apache/geode/internal/process/signal/Signal
 org/apache/geode/internal/process/signal/SignalType,false,description:java/lang/String
+org/apache/geode/internal/security/SecurableCommunicationChannel,false,constant:java/lang/String
 org/apache/geode/internal/sequencelog/GraphType,false
 org/apache/geode/internal/sequencelog/model/GraphID,false,graphName:java/lang/String,type:org/apache/geode/internal/sequencelog/GraphType
 org/apache/geode/internal/size/ReflectionObjectSizer,false
@@ -429,7 +445,6 @@ org/apache/geode/internal/tcp/ConnectionException,true,-1977443644277412122
 org/apache/geode/internal/tcp/ImmutableByteBufferInputStream,false
 org/apache/geode/internal/tcp/MemberShunnedException,true,-8453126202477831557,member:org/apache/geode/distributed/DistributedMember
 org/apache/geode/internal/tcp/ReenteredConnectException,true,2878977454669428469
-org/apache/geode/internal/tcp/VersionedByteBufferInputStream,false,version:org/apache/geode/internal/Version
 org/apache/geode/internal/util/Breadcrumbs$CrumbType,false
 org/apache/geode/internal/util/SingletonValue$ValueState,false
 org/apache/geode/internal/util/SunAPINotFoundException,true,75895915344106684
@@ -452,6 +467,7 @@ org/apache/geode/management/OSMetrics,false,arch:java/lang/String,availableProce
 org/apache/geode/management/cli/CommandProcessingException,true,-1398779521639575884,errorData:java/lang/Object,errorType:int
 org/apache/geode/management/cli/CommandServiceException,true,7316102209844678329
 org/apache/geode/management/cli/Result$Status,false,code:int
+org/apache/geode/management/internal/BackupStatusImpl,true,3704172840296221840,backedUpDiskStores:java/util/Map,offlineDiskStores:java/util/Set
 org/apache/geode/management/internal/JmxManagerLocator$StartJmxManagerFunction,true,-2860286061903069789
 org/apache/geode/management/internal/ManagementAgent$GemFireRMIServerSocketFactory,true,-811909050641332716,bindAddr:java/net/InetAddress
 org/apache/geode/management/internal/ManagementFunction,true,1,mbeanServer:javax/management/MBeanServer,notificationHub:org/apache/geode/management/internal/NotificationHub
@@ -578,6 +594,7 @@ org/apache/geode/management/internal/web/domain/QueryParameterSource,true,341311
 org/apache/geode/management/internal/web/shell/MBeanAccessException,true,813768898269516238
 org/apache/geode/memcached/GemFireMemcachedServer$Protocol,false
 org/apache/geode/pdx/FieldType,false,defaultSerializedValue:java/nio/ByteBuffer,defaultValue:java/lang/Object,isFixedWidth:boolean,name:java/lang/String,width:int
+org/apache/geode/pdx/JSONFormatter$states,false
 org/apache/geode/pdx/JSONFormatterException,true,1
 org/apache/geode/pdx/NonPortableClassException,true,-743743189068362837
 org/apache/geode/pdx/PdxConfigurationException,true,-2329989020829052537
@@ -587,17 +604,191 @@ org/apache/geode/pdx/PdxFieldTypeMismatchException,true,-829617162170742740
 org/apache/geode/pdx/PdxInitializationException,true,5098737377658808834
 org/apache/geode/pdx/PdxRegistryMismatchException,true,-2329989020829052537
 org/apache/geode/pdx/PdxSerializationException,true,-3843814927034345635
-org/apache/geode/pdx/internal/AutoSerializableManager$1,false,this$0:org/apache/geode/pdx/internal/AutoSerializableManager
 org/apache/geode/pdx/internal/EnumInfo$PdxInstanceEnumInfo,true,7907582104525106416,ei:org/apache/geode/pdx/internal/EnumInfo,enumId:int
 org/apache/geode/pdx/internal/FieldNotFoundInPdxVersion,true,1292033563588485577
 org/apache/geode/pdx/internal/PdxInputStream,false
-org/apache/geode/pdx/internal/PdxInstanceEnum,true,-7417287878052772302,className:java/lang/String,enumName:java/lang/String,enumOrdinal:int
-org/apache/geode/pdx/internal/PdxInstanceImpl,true,-1669268527103938431
 org/apache/geode/pdx/internal/PdxReaderImpl,true,-6094553093860427759,blobType:org/apache/geode/pdx/internal/PdxType,dis:org/apache/geode/pdx/internal/PdxInputStream
-org/apache/geode/pdx/internal/WritablePdxInstanceImpl,true,7398999150097596214,dirtyFields:java/lang/Object[]
 org/apache/geode/redis/internal/RedisCommandParserException,true,4707944288714910949
+org/apache/geode/redis/internal/RedisCommandType,false
+org/apache/geode/redis/internal/RedisCommandType$1,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$10,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$100,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$101,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$102,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$103,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$104,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$105,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$106,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$107,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$108,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$109,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$11,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$110,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$111,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$112,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$113,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$12,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$13,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$14,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$15,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$16,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$17,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$18,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$19,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$2,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$20,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$21,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$22,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$23,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$24,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$25,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$26,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$27,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$28,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$29,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$3,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$30,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$31,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$32,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$33,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$34,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$35,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$36,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$37,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$38,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$39,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$4,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$40,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$41,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$42,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$43,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$44,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$45,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$46,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$47,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$48,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$49,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$5,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$50,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$51,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$52,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$53,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$54,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$55,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$56,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$57,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$58,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$59,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$6,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$60,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$61,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$62,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$63,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$64,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$65,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$66,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$67,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$68,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$69,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$7,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$70,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$71,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$72,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$73,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$74,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$75,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$76,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$77,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$78,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$79,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$8,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$80,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$81,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$82,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$83,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$84,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$85,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$86,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$87,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$88,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$89,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$9,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$90,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$91,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$92,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$93,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$94,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$95,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$96,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$97,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$98,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisCommandType$99,false,dataType:org/apache/geode/redis/internal/RedisDataType,executor:org/apache/geode/redis/internal/Executor
+org/apache/geode/redis/internal/RedisDataType,false
+org/apache/geode/redis/internal/RedisDataType$1,false
+org/apache/geode/redis/internal/RedisDataType$2,false
+org/apache/geode/redis/internal/RedisDataType$3,false
+org/apache/geode/redis/internal/RedisDataType$4,false
+org/apache/geode/redis/internal/RedisDataType$5,false
+org/apache/geode/redis/internal/RedisDataType$6,false
+org/apache/geode/redis/internal/RedisDataType$7,false
+org/apache/geode/redis/internal/RedisDataType$8,false
 org/apache/geode/redis/internal/RedisDataTypeMismatchException,true,-2451663685348513870
 org/apache/geode/redis/internal/RegionCreationException,true,8416820139078312997
+org/apache/geode/redis/internal/executor/ListQuery,false
+org/apache/geode/redis/internal/executor/ListQuery$1,false
+org/apache/geode/redis/internal/executor/ListQuery$2,false
+org/apache/geode/redis/internal/executor/ListQuery$3,false
+org/apache/geode/redis/internal/executor/ListQuery$4,false
+org/apache/geode/redis/internal/executor/ListQuery$5,false
+org/apache/geode/redis/internal/executor/ListQuery$6,false
+org/apache/geode/redis/internal/executor/ListQuery$7,false
+org/apache/geode/redis/internal/executor/SortedSetQuery,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$1,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$10,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$11,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$12,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$13,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$14,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$15,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$16,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$17,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$18,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$19,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$2,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$20,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$21,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$22,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$23,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$24,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$25,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$26,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$27,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$28,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$29,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$3,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$30,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$31,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$32,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$33,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$34,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$35,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$36,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$37,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$38,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$39,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$4,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$40,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$41,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$42,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$43,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$44,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$45,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$5,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$6,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$7,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$8,false
+org/apache/geode/redis/internal/executor/SortedSetQuery$9,false
+org/apache/geode/redis/internal/executor/list/ListExecutor$ListDirection,false
 org/apache/geode/security/AuthenticationFailedException,true,-8202866472279088879
 org/apache/geode/security/AuthenticationRequiredException,true,4675976651103154919
 org/apache/geode/security/GemFireSecurityException,true,3814254578203076926,cause:java/lang/Throwable
diff --git a/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
index e514bd4..f39a147 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
@@ -17,6 +17,8 @@ package org.apache.geode.cache;
 import static org.apache.geode.test.dunit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -33,6 +35,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.CancelException;
+import org.apache.geode.DataSerializable;
 import org.apache.geode.LogWriter;
 import org.apache.geode.cache.client.NoAvailableServersException;
 import org.apache.geode.cache.client.Pool;
@@ -5847,7 +5850,7 @@ public class ConnectionPoolDUnitTest extends JUnit4CacheTestCase {
     disconnectAllFromDS();
   }
 
-  static class Order implements Serializable {
+  static class Order implements DataSerializable {
     int index;
 
     public Order() {}
@@ -5859,5 +5862,15 @@ public class ConnectionPoolDUnitTest extends JUnit4CacheTestCase {
     public int getIndex() {
       return index;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeInt(index);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      index = in.readInt();
+    }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/cache/management/MemoryThresholdsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/management/MemoryThresholdsDUnitTest.java
index cc1c310..17e8d79 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/management/MemoryThresholdsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/management/MemoryThresholdsDUnitTest.java
@@ -17,6 +17,9 @@ package org.apache.geode.cache.management;
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 import static org.apache.geode.test.dunit.Assert.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -34,6 +37,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.AttributesFactory;
 import org.apache.geode.cache.AttributesMutator;
 import org.apache.geode.cache.Cache;
@@ -105,10 +109,12 @@ import org.apache.geode.test.junit.categories.FlakyTest;
 @Category(DistributedTest.class)
 public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
 
-  public static class Range implements Serializable {
+  public static class Range implements DataSerializable {
     public static final Range DEFAULT = new Range(0, 20);
-    public final int start;
-    public final int end;
+    public int start;
+    public int end;
+
+    public Range() {}
 
     public Range(int s, int e) {
       this.start = s;
@@ -123,6 +129,18 @@ public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
     public int width() {
       return end - start;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeInt(start);
+      out.writeInt(end);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      start = in.readInt();
+      end = in.readInt();
+    }
   }
 
   final String expectedEx = LocalizedStrings.MemoryMonitor_MEMBER_ABOVE_CRITICAL_THRESHOLD
@@ -1654,7 +1672,7 @@ public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
     }
   };
 
-  private class RejectFunction extends FunctionAdapter {
+  static class RejectFunction extends FunctionAdapter implements DataSerializable {
     private boolean optimizeForWrite = true;
     private String id = "RejectFunction";
 
@@ -1699,6 +1717,16 @@ public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
     public boolean isHA() {
       return false;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeBoolean(optimizeForWrite);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      optimizeForWrite = in.readBoolean();
+    }
   }
 
   /**
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/CompiledInDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/CompiledInDUnitTest.java
index 314c28c..6ccb87a 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/CompiledInDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/CompiledInDUnitTest.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
 import java.util.stream.IntStream;
 
 import org.junit.After;
@@ -43,6 +44,7 @@ import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.data.PortfolioPdx.Day;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.LogWriterUtils;
 import org.apache.geode.test.dunit.SerializableRunnable;
@@ -79,6 +81,15 @@ public class CompiledInDUnitTest extends JUnit4CacheTestCase {
     closeClient(client);
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.dunit.**");
+    return properties;
+  }
+
+
   protected void startBridgeServer(int port, boolean notifyBySubscription) throws IOException {
 
     Cache cache = getCache();
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
index f1c3a13..27089c9 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
@@ -56,6 +56,7 @@ import org.apache.geode.cache.query.internal.QueryObserverHolder;
 import org.apache.geode.cache.query.partitioned.PRQueryDUnitHelper;
 import org.apache.geode.cache30.CacheSerializableRunnable;
 import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.LocalDataSet;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.execute.PRClientServerTestBase;
@@ -137,13 +138,19 @@ public class QueryUsingFunctionContextDUnitTest extends JUnit4CacheTestCase {
   public static String[] queriesForRR =
       new String[] {"<trace> select * from /" + repRegionName + " where ID>=0"};
 
-  /**
-   * @param name
-   */
   public QueryUsingFunctionContextDUnitTest() {
     super();
   }
 
+
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.dunit.**");
+    return properties;
+  }
+
   @Override
   public final void preTearDownCacheTestCase() throws Exception {
     Invoke.invokeInEveryVM(() -> disconnectFromDS());
@@ -605,7 +612,7 @@ public class QueryUsingFunctionContextDUnitTest extends JUnit4CacheTestCase {
 
 
   // Helper classes and function
-  public class TestQueryFunction extends FunctionAdapter {
+  public static class TestQueryFunction extends FunctionAdapter {
 
     @Override
     public boolean hasResult() {
@@ -646,7 +653,7 @@ public class QueryUsingFunctionContextDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
-  public class TestServerQueryFunction extends FunctionAdapter {
+  public static class TestServerQueryFunction extends FunctionAdapter {
 
     @Override
     public boolean hasResult() {
@@ -736,7 +743,7 @@ public class QueryUsingFunctionContextDUnitTest extends JUnit4CacheTestCase {
 
   private void createServersWithRegions() {
     // Create caches
-    Properties props = new Properties();
+    Properties props = getDistributedSystemProperties();
     server1.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
     server2.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
     server3.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
@@ -850,8 +857,8 @@ public class QueryUsingFunctionContextDUnitTest extends JUnit4CacheTestCase {
   private void createCacheClientWithoutReg(String host, Integer port1, Integer port2,
       Integer port3) {
     this.disconnectFromDS();
-    ClientCache cache = new ClientCacheFactory().addPoolServer(host, port1)
-        .addPoolServer(host, port2).addPoolServer(host, port3).create();
+    ClientCache cache = new ClientCacheFactory(getDistributedSystemProperties())
+        .addPoolServer(host, port1).addPoolServer(host, port2).addPoolServer(host, port3).create();
   }
 
   /**
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexInitOnOverflowRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexInitOnOverflowRegionDUnitTest.java
index 6586b78..14797d0 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexInitOnOverflowRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexInitOnOverflowRegionDUnitTest.java
@@ -20,6 +20,7 @@ package org.apache.geode.cache.query.internal.index;
 import static org.junit.Assert.*;
 
 import java.io.IOException;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -45,6 +46,7 @@ import org.apache.geode.cache.query.internal.index.IndexManager.TestHook;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache30.CacheSerializableRunnable;
 import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.EvictionAttributesImpl;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
@@ -76,13 +78,18 @@ public class ConcurrentIndexInitOnOverflowRegionDUnitTest extends JUnit4CacheTes
 
   private static int bridgeServerPort;
 
-  /**
-   * @param name
-   */
   public ConcurrentIndexInitOnOverflowRegionDUnitTest() {
     super();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   /**
   *
   */
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexOperationsOnOverflowRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexOperationsOnOverflowRegionDUnitTest.java
index 0ad1b59..8fe005e 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexOperationsOnOverflowRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/ConcurrentIndexOperationsOnOverflowRegionDUnitTest.java
@@ -20,6 +20,7 @@ package org.apache.geode.cache.query.internal.index;
 import static org.junit.Assert.*;
 
 import java.util.Collection;
+import java.util.Properties;
 import java.util.Set;
 
 import org.junit.Test;
@@ -41,6 +42,7 @@ import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache30.CacheSerializableRunnable;
 import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.EvictionAttributesImpl;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
@@ -70,6 +72,15 @@ public class ConcurrentIndexOperationsOnOverflowRegionDUnitTest extends JUnit4Ca
 
   public static volatile boolean hooked = false;
 
+
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.**");
+    return properties;
+  }
+
   @Category(FlakyTest.class) // GEODE-1828
   @Test
   public void testAsyncIndexInitDuringEntryDestroyAndQueryOnRR() {
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
index 00809d8..ecc86ee 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.util.Arrays;
+import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 import junitparams.JUnitParamsRunner;
@@ -43,12 +44,14 @@ import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache.query.internal.Undefined;
 import org.apache.geode.cache.query.partitioned.PRQueryDUnitHelper;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.ThreadUtils;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
+import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 import org.apache.geode.test.junit.categories.DistributedTest;
 
 /**
@@ -83,6 +86,15 @@ public class InitializeIndexEntryDestroyQueryDUnitTest extends JUnit4CacheTestCa
     return new Scope[] {Scope.LOCAL, null};
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.**");
+    return properties;
+  }
+
+
   @Test
   @Parameters(method = "getScope")
   public void testAsyncIndexInitDuringEntryDestroyAndQueryOnPR(Scope scope) {
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicIndexCreationDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicIndexCreationDUnitTest.java
index f1ef29f..6bd1a41 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicIndexCreationDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicIndexCreationDUnitTest.java
@@ -18,6 +18,7 @@ import static org.apache.geode.cache.query.Utils.*;
 import static org.junit.Assert.*;
 
 import java.util.Collection;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -29,6 +30,7 @@ import org.apache.geode.cache.query.IndexNameConflictException;
 import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Assert;
@@ -76,6 +78,15 @@ public class PRBasicIndexCreationDUnitTest extends PartitionedRegionDUnitTestCas
 
   final int redundancy = 0;
 
+
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   /**
    * Tests basic index creation on a partitioned system.
    *
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicMultiIndexCreationDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicMultiIndexCreationDUnitTest.java
index 6b601d9..fd19f67 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicMultiIndexCreationDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicMultiIndexCreationDUnitTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -29,6 +30,7 @@ import org.apache.geode.cache.query.Index;
 import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
@@ -46,6 +48,14 @@ public class PRBasicMultiIndexCreationDUnitTest extends PartitionedRegionDUnitTe
     super();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   public void setCacheInVMs(VM... vms) {
     for (VM vm : vms) {
       vm.invoke(() -> PRQueryDUnitHelper.setCache(getCache()));
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicQueryDUnitTest.java
index 7ce6d38..776d508 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicQueryDUnitTest.java
@@ -17,6 +17,8 @@ package org.apache.geode.cache.query.partitioned;
 import static org.apache.geode.cache.query.Utils.*;
 import static org.junit.Assert.*;
 
+import java.util.Properties;
+
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -31,6 +33,7 @@ import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
@@ -49,12 +52,6 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 public class PRBasicQueryDUnitTest extends PartitionedRegionDUnitTestCase
 
 {
-  /**
-   * constructor
-   *
-   * @param name
-   */
-
   public PRBasicQueryDUnitTest() {
     super();
   }
@@ -77,6 +74,14 @@ public class PRBasicQueryDUnitTest extends PartitionedRegionDUnitTestCase
 
   final int redundancy = 0;
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   /**
    * A very basic dunit test that <br>
    * 1. Creates a PR Accessor and Data Store with redundantCopies = 0. 2. Populates the region with
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicRemoveIndexDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicRemoveIndexDUnitTest.java
index 6747c35..ba1e155 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicRemoveIndexDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRBasicRemoveIndexDUnitTest.java
@@ -16,10 +16,13 @@ package org.apache.geode.cache.query.partitioned;
 
 import static org.apache.geode.cache.query.Utils.*;
 
+import java.util.Properties;
+
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.query.data.PortfolioData;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.LogWriterUtils;
@@ -54,6 +57,14 @@ public class PRBasicRemoveIndexDUnitTest extends PartitionedRegionDUnitTestCase
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   /**
    * Remove index test to remove all the indexes in a given partitioned region
    */
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRColocatedEquiJoinDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRColocatedEquiJoinDUnitTest.java
index e4c4ce7..a77e17a 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRColocatedEquiJoinDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRColocatedEquiJoinDUnitTest.java
@@ -20,13 +20,18 @@ package org.apache.geode.cache.query.partitioned;
 import static org.apache.geode.cache.query.Utils.*;
 import static org.junit.Assert.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import parReg.query.unittest.NewPortfolio;
 import util.TestException;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.AttributesFactory;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheClosedException;
@@ -51,6 +56,7 @@ import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.partitioned.PRQueryDUnitHelper.TestQueryFunction;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.internal.cache.ForceReattemptException;
 import org.apache.geode.internal.cache.PartitionedRegion;
@@ -90,9 +96,6 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
 
   final int redundancy = 1;
 
-  /**
-   * @param name
-   */
   public PRColocatedEquiJoinDUnitTest() {
     super();
   }
@@ -103,6 +106,14 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
     }
   }
 
+
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, "parReg.query.unittest.**");
+    return properties;
+  }
+
   /**
    * A very basic dunit test that <br>
    * 1. Creates two PR Data Stores with redundantCopies = 1. 2. Populates the region with test data.
@@ -275,49 +286,6 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
       @Override
       public void run2() throws CacheException {
 
-        // Helper classes and function
-        class TestQueryFunction extends FunctionAdapter {
-
-          @Override
-          public boolean hasResult() {
-            return true;
-          }
-
-          @Override
-          public boolean isHA() {
-            return false;
-          }
-
-          private final String id;
-
-          public TestQueryFunction(String id) {
-            super();
-            this.id = id;
-          }
-
-          @Override
-          public void execute(FunctionContext context) {
-            Cache cache = CacheFactory.getAnyInstance();
-            QueryService queryService = cache.getQueryService();
-            ArrayList allQueryResults = new ArrayList();
-            String qstr = (String) context.getArguments();
-            try {
-              Query query = queryService.newQuery(qstr);
-              context.getResultSender().sendResult(
-                  (ArrayList) ((SelectResults) query.execute((RegionFunctionContext) context))
-                      .asList());
-              context.getResultSender().lastResult(null);
-            } catch (Exception e) {
-              e.printStackTrace();
-              throw new FunctionException(e);
-            }
-          }
-
-          @Override
-          public String getId() {
-            return this.id;
-          }
-        }
         Cache cache = getCache();
         // Querying the PR region
 
@@ -364,6 +332,7 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
         .info("PRQBasicQueryDUnitTest#testPRBasicQuerying: Querying PR's Test ENDED");
   }
 
+
   /**
    * A very basic dunit test that <br>
    * 1. Creates two PR Data Stores with redundantCopies = 1. 2. Populates the region with test data.
@@ -1536,48 +1505,6 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
       public void run2() throws CacheException {
 
         // Helper classes and function
-        class TestQueryFunction extends FunctionAdapter {
-
-          @Override
-          public boolean hasResult() {
-            return true;
-          }
-
-          @Override
-          public boolean isHA() {
-            return false;
-          }
-
-          private final String id;
-
-          public TestQueryFunction(String id) {
-            super();
-            this.id = id;
-          }
-
-          @Override
-          public void execute(FunctionContext context) {
-            Cache cache = CacheFactory.getAnyInstance();
-            QueryService queryService = cache.getQueryService();
-            ArrayList allQueryResults = new ArrayList();
-            String qstr = (String) context.getArguments();
-            try {
-              Query query = queryService.newQuery(qstr);
-              context.getResultSender().sendResult(
-                  (ArrayList) ((SelectResults) query.execute((RegionFunctionContext) context))
-                      .asList());
-              context.getResultSender().lastResult(null);
-            } catch (Exception e) {
-              e.printStackTrace();
-              throw new FunctionException(e);
-            }
-          }
-
-          @Override
-          public String getId() {
-            return this.id;
-          }
-        }
         Cache cache = getCache();
         // Querying the PR region
 
@@ -1623,4 +1550,60 @@ public class PRColocatedEquiJoinDUnitTest extends PartitionedRegionDUnitTestCase
     LogWriterUtils.getLogWriter()
         .info("PRQBasicQueryDUnitTest#testPRBasicQuerying: Querying PR's Test ENDED");
   }
+
+  // Helper classes and function
+  public static class TestQueryFunction extends FunctionAdapter implements DataSerializable {
+
+    public TestQueryFunction() {}
+
+    @Override
+    public boolean hasResult() {
+      return true;
+    }
+
+    @Override
+    public boolean isHA() {
+      return false;
+    }
+
+    private String id;
+
+    public TestQueryFunction(String id) {
+      super();
+      this.id = id;
+    }
+
+    @Override
+    public void execute(FunctionContext context) {
+      Cache cache = CacheFactory.getAnyInstance();
+      QueryService queryService = cache.getQueryService();
+      ArrayList allQueryResults = new ArrayList();
+      String qstr = (String) context.getArguments();
+      try {
+        Query query = queryService.newQuery(qstr);
+        context.getResultSender().sendResult(
+            (ArrayList) ((SelectResults) query.execute((RegionFunctionContext) context)).asList());
+        context.getResultSender().lastResult(null);
+      } catch (Exception e) {
+        e.printStackTrace();
+        throw new FunctionException(e);
+      }
+    }
+
+    @Override
+    public String getId() {
+      return this.id;
+    }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeUTF(id);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      id = in.readUTF();
+    }
+  }
+
 }
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
index 4827656..d4925ba 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.query.data.PortfolioData;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.ForceReattemptException;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Assert;
@@ -44,17 +45,19 @@ import org.apache.geode.test.junit.categories.FlakyTest;
 @Category(DistributedTest.class)
 public class PRQueryCacheCloseDUnitTest extends PartitionedRegionDUnitTestCase {
 
-  /**
-   * constructor *
-   *
-   * @param name
-   */
-
   public PRQueryCacheCloseDUnitTest() {
 
     super();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.**");
+    return properties;
+  }
+
   public void setCacheInVMs(VM... vms) {
     for (VM vm : vms) {
       vm.invoke(() -> PRQueryDUnitHelper.setCache(getCache()));
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryDUnitTest.java
index b48659c..108c953 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryDUnitTest.java
@@ -39,6 +39,7 @@ import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.data.PortfolioData;
 import org.apache.geode.cache.query.internal.DefaultQuery;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator;
@@ -55,12 +56,6 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 public class PRQueryDUnitTest extends PartitionedRegionDUnitTestCase
 
 {
-  /**
-   * constructor *
-   *
-   * @param name
-   */
-
   public PRQueryDUnitTest() {
     super();
   }
@@ -71,6 +66,15 @@ public class PRQueryDUnitTest extends PartitionedRegionDUnitTestCase
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
+
   PRQueryDUnitHelper PRQHelp = new PRQueryDUnitHelper();
 
   int totalNumBuckets = 100;
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionCloseDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionCloseDUnitTest.java
index 045c0fd..2428f1a 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionCloseDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionCloseDUnitTest.java
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.query.data.PortfolioData;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.ForceReattemptException;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Assert;
@@ -44,12 +45,6 @@ import org.apache.geode.test.junit.categories.FlakyTest;
 @Category(DistributedTest.class)
 public class PRQueryRegionCloseDUnitTest extends PartitionedRegionDUnitTestCase {
 
-  /**
-   * constructor *
-   *
-   * @param name
-   */
-
   public PRQueryRegionCloseDUnitTest() {
     super();
   }
@@ -75,6 +70,15 @@ public class PRQueryRegionCloseDUnitTest extends PartitionedRegionDUnitTestCase
 
   final int redundancy = 1;
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.**");
+    return properties;
+  }
+
+
   /**
    * This test <br>
    * 1. Creates PR regions across with scope = DACK, one accessor node & 2 datastores <br>
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionDestroyedDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionDestroyedDUnitTest.java
index b682341..1dff947 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionDestroyedDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRegionDestroyedDUnitTest.java
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.query.data.PortfolioData;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.ForceReattemptException;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Assert;
@@ -43,14 +44,7 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 @Category(DistributedTest.class)
 public class PRQueryRegionDestroyedDUnitTest extends PartitionedRegionDUnitTestCase {
 
-  /**
-   * constructor *
-   *
-   * @param name
-   */
-
   public PRQueryRegionDestroyedDUnitTest() {
-
     super();
   }
 
@@ -60,6 +54,14 @@ public class PRQueryRegionDestroyedDUnitTest extends PartitionedRegionDUnitTestC
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
   PRQueryDUnitHelper PRQHelp = new PRQueryDUnitHelper();
 
   final String name = "Portfolios";
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRemoteNodeExceptionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRemoteNodeExceptionDUnitTest.java
index 13d6772..bf7bb3d 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRemoteNodeExceptionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/partitioned/PRQueryRemoteNodeExceptionDUnitTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.*;
 
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -38,6 +39,7 @@ import org.apache.geode.cache.query.internal.IndexTrackingQueryObserver;
 import org.apache.geode.cache.query.internal.QueryObserverAdapter;
 import org.apache.geode.cache.query.internal.QueryObserverHolder;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;
 import org.apache.geode.test.dunit.Assert;
@@ -72,6 +74,15 @@ public class PRQueryRemoteNodeExceptionDUnitTest extends PartitionedRegionDUnitT
   private int numOfBuckets = 10;
 
   @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.query.data.*");
+    return properties;
+  }
+
+
+  @Override
   protected final void preTearDownPartitionedRegionDUnitTest() throws Exception {
     Invoke.invokeInEveryVM(QueryObserverHolder.class, "reset");
   }
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/transaction/Person.java b/geode-core/src/test/java/org/apache/geode/cache/query/transaction/Person.java
index 1ab2c52..26242c5 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/transaction/Person.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/transaction/Person.java
@@ -14,12 +14,19 @@
  */
 package org.apache.geode.cache.query.transaction;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
 
-public class Person implements Serializable {
+import org.apache.geode.DataSerializable;
+
+public class Person implements DataSerializable {
   private String name;
   private int age;
 
+  public Person() {}
+
   public Person(String name, int age) {
     this.name = name;
     this.age = age;
@@ -54,4 +61,16 @@ public class Person implements Serializable {
     }
     return true;
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+    out.writeUTF(name);
+    out.writeInt(age);
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+    name = in.readUTF();
+    age = in.readInt();
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/cache/snapshot/ParallelSnapshotDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/snapshot/ParallelSnapshotDUnitTest.java
index 5f0c662..a662f53 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/snapshot/ParallelSnapshotDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/snapshot/ParallelSnapshotDUnitTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.fail;
 import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Properties;
 
 import com.examples.snapshot.MyPdxSerializer;
 import org.junit.Before;
@@ -32,6 +33,7 @@ import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.snapshot.RegionGenerator.RegionType;
 import org.apache.geode.cache.snapshot.SnapshotOptions.SnapshotFormat;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.snapshot.SnapshotOptionsImpl;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.SerializableCallable;
@@ -55,6 +57,15 @@ public class ParallelSnapshotDUnitTest extends JUnit4CacheTestCase {
     directory = temporaryFolder.newFolder();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        TestSnapshotFileMapper.class.getName());
+    return properties;
+  }
+
+
   @Test
   public void testExportImport() throws Exception {
     loadCache();
diff --git a/geode-core/src/test/java/org/apache/geode/cache/snapshot/SnapshotDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/snapshot/SnapshotDUnitTest.java
index 35cad56..658349e 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/snapshot/SnapshotDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/snapshot/SnapshotDUnitTest.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -47,6 +48,7 @@ import org.apache.geode.cache.snapshot.RegionGenerator.SerializationType;
 import org.apache.geode.cache.snapshot.SnapshotOptions.SnapshotFormat;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.cache.util.CacheWriterAdapter;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.SerializableCallable;
 import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
@@ -61,6 +63,15 @@ public class SnapshotDUnitTest extends JUnit4CacheTestCase {
     super();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        SerializationType.class.getName() + ";" + MyObject.class.getName() + ";"
+            + SnapshotProblem.class.getName());
+    return properties;
+  }
+
   @Test
   public void testExportAndImport() throws Exception {
     File dir = new File(getDiskDirs()[0], "snap");
@@ -240,14 +251,16 @@ public class SnapshotDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
+  public static class SnapshotProblem<K, V> implements SnapshotFilter<K, V> {
+    @Override
+    public boolean accept(Entry<K, V> entry) {
+      throw new RuntimeException();
+    }
+  };
+
   @Test
   public void testCacheExportFilterException() throws Exception {
-    SnapshotFilter<Object, Object> oops = new SnapshotFilter<Object, Object>() {
-      @Override
-      public boolean accept(Entry<Object, Object> entry) {
-        throw new RuntimeException();
-      }
-    };
+    SnapshotFilter<Object, Object> oops = new SnapshotProblem();
 
     CacheSnapshotService css = getCache().getSnapshotService();
     SnapshotOptions<Object, Object> options = css.createOptions().setFilter(oops);
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/DistributedAckRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache30/DistributedAckRegionDUnitTest.java
index 3271d3d..8a99dae 100755
--- a/geode-core/src/test/java/org/apache/geode/cache30/DistributedAckRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/DistributedAckRegionDUnitTest.java
@@ -57,7 +57,7 @@ public class DistributedAckRegionDUnitTest extends MultiVMRegionTestCase {
   }
 
   public Properties getDistributedSystemProperties() {
-    Properties p = new Properties();
+    Properties p = super.getDistributedSystemProperties();
     p.put(STATISTIC_SAMPLING_ENABLED, "true");
     p.put(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
     return p;
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
index d168f9b..1c0551e 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
@@ -87,6 +87,7 @@ import org.apache.geode.cache.partition.PartitionRegionHelper;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.cache.util.TxEventTestUtil;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -155,6 +156,14 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
     CCRegion = null;
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache30.MultiVMRegionTestCase$DeltaValue");
+    return properties;
+  }
+
   /**
    * This is a for the ConcurrentMap operations. 4 VMs are used to create the region and operations
    * are performed on one of the nodes
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/PartitionedRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache30/PartitionedRegionDUnitTest.java
index 0b50c7b..b02ffe6 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/PartitionedRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/PartitionedRegionDUnitTest.java
@@ -14,11 +14,13 @@
  */
 package org.apache.geode.cache30;
 
+import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
 import static org.junit.Assert.*;
 
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
 
@@ -136,6 +138,14 @@ public class PartitionedRegionDUnitTest extends MultiVMRegionTestCase {
     return factory.create();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache30.PartitionedRegionDUnitTest$PoisonedKey");
+    return properties;
+  }
+
   public static int setLogLevel(LogWriter l, int logLevl) {
     int ret = -1;
     if (l instanceof PureLogWriter) {
diff --git a/geode-core/src/test/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTest.java b/geode-core/src/test/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTest.java
index 8eb2af7..93628a4 100644
--- a/geode-core/src/test/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/codeAnalysis/AnalyzeSerializablesJUnitTest.java
@@ -26,12 +26,21 @@ import static org.apache.geode.internal.lang.SystemUtils.isJavaVersionAtLeast;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.fail;
 import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeThat;
 
 import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.Externalizable;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InvalidClassException;
+import java.io.Serializable;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -39,6 +48,8 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
+import java.util.ServiceLoader;
 import java.util.Set;
 
 import org.junit.Before;
@@ -46,10 +57,20 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
+import sun.reflect.ReflectionFactory;
 
+import org.apache.geode.CancelException;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.codeAnalysis.decode.CompiledClass;
 import org.apache.geode.codeAnalysis.decode.CompiledField;
 import org.apache.geode.codeAnalysis.decode.CompiledMethod;
+import org.apache.geode.distributed.ConfigurationProperties;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionConfigImpl;
+import org.apache.geode.internal.HeapDataOutputStream;
+import org.apache.geode.internal.InternalDataSerializer;
+import org.apache.geode.internal.Version;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 @Category(IntegrationTest.class)
@@ -61,13 +82,17 @@ public class AnalyzeSerializablesJUnitTest {
       + "If the class is not persisted or sent over the wire add it to the file " + NEW_LINE + "%s"
       + NEW_LINE + "Otherwise if this doesn't break backward compatibility, copy the file "
       + NEW_LINE + "%s to " + NEW_LINE + "%s.";
+  public static final String EXCLUDED_CLASSES_TXT = "excludedClasses.txt";
+  public static final String ACTUAL_DATA_SERIALIZABLES_DAT = "actualDataSerializables.dat";
+  public static final String ACTUAL_SERIALIZABLES_DAT = "actualSerializables.dat";
+  public static final String OPEN_BUGS_TXT = "openBugs.txt";
 
   /** all loaded classes */
   private Map<String, CompiledClass> classes;
 
-  List<String> excludedClasses;
-
   private File expectedDataSerializablesFile;
+  private String expectedSerializablesFileName =
+      "sanctioned-" + getModuleName() + "-serializables.txt";
   private File expectedSerializablesFile;
 
   private List<ClassAndMethodDetails> expectedDataSerializables;
@@ -79,33 +104,48 @@ public class AnalyzeSerializablesJUnitTest {
   @Rule
   public TestName testName = new TestName();
 
-  @Before
-  public void setUp() throws Exception {
-    assumeThat(
-        "AnalyzeSerializables requires Java 8 but tests are running with v" + getJavaVersion(),
-        isJavaVersionAtLeast("1.8"), is(true));
-
-    this.classes = new HashMap<>();
-
-    loadClasses();
-
-    // setup expectedDataSerializables
-
+  public void loadExpectedDataSerializables() throws Exception {
     this.expectedDataSerializablesFile = getResourceAsFile("sanctionedDataSerializables.txt");
     assertThat(this.expectedDataSerializablesFile).exists().canRead();
 
     this.expectedDataSerializables = loadClassesAndMethods(this.expectedDataSerializablesFile);
     Collections.sort(this.expectedDataSerializables);
 
-    // setup expectedSerializables
+  }
 
-    this.expectedSerializablesFile = getResourceAsFile("sanctionedSerializables.txt");
+  public void loadExpectedSerializables() throws Exception {
+    this.expectedSerializablesFile =
+        getResourceAsFile(InternalDataSerializer.class, expectedSerializablesFileName);
     assertThat(this.expectedSerializablesFile).exists().canRead();
 
     this.expectedSerializables = loadClassesAndVariables(this.expectedSerializablesFile);
     Collections.sort(this.expectedSerializables);
   }
 
+  public void findClasses() throws Exception {
+    this.classes = new HashMap<>();
+
+    loadClasses();
+  }
+
+  @Before
+  public void setUp() throws Exception {
+    assumeThat(
+        "AnalyzeSerializables requires Java 8 but tests are running with v" + getJavaVersion(),
+        isJavaVersionAtLeast("1.8"), is(true));
+  }
+
+  private List<DistributedSystemService> initializeServices() {
+    ServiceLoader<DistributedSystemService> loader =
+        ServiceLoader.load(DistributedSystemService.class);
+    List<DistributedSystemService> services = new ArrayList<>();
+    for (DistributedSystemService service : loader) {
+      services.add(service);
+    }
+    return services;
+  }
+
+
   /**
    * Override only this one method in sub-classes
    */
@@ -116,8 +156,10 @@ public class AnalyzeSerializablesJUnitTest {
   @Test
   public void testDataSerializables() throws Exception {
     System.out.println(this.testName.getMethodName() + " starting");
+    findClasses();
+    loadExpectedDataSerializables();
 
-    this.actualDataSerializablesFile = createEmptyFile("actualDataSerializables.dat");
+    this.actualDataSerializablesFile = createEmptyFile(ACTUAL_DATA_SERIALIZABLES_DAT);
     System.out.println(this.testName.getMethodName() + " actualDataSerializablesFile="
         + this.actualDataSerializablesFile.getAbsolutePath());
 
@@ -130,7 +172,7 @@ public class AnalyzeSerializablesJUnitTest {
       System.out.println(
           "++++++++++++++++++++++++++++++testDataSerializables found discrepancies++++++++++++++++++++++++++++++++++++");
       System.out.println(diff);
-      fail(diff + FAIL_MESSAGE, getSrcPathFor(getResourceAsFile("excludedClasses.txt")),
+      fail(diff + FAIL_MESSAGE, getSrcPathFor(getResourceAsFile(EXCLUDED_CLASSES_TXT)),
           this.actualDataSerializablesFile.getAbsolutePath(),
           getSrcPathFor(this.expectedDataSerializablesFile));
     }
@@ -139,8 +181,10 @@ public class AnalyzeSerializablesJUnitTest {
   @Test
   public void testSerializables() throws Exception {
     System.out.println(this.testName.getMethodName() + " starting");
+    findClasses();
+    loadExpectedSerializables();
 
-    this.actualSerializablesFile = createEmptyFile("actualSerializables.dat");
+    this.actualSerializablesFile = createEmptyFile(ACTUAL_SERIALIZABLES_DAT);
     System.out.println(this.testName.getMethodName() + " actualSerializablesFile="
         + this.actualSerializablesFile.getAbsolutePath());
 
@@ -152,23 +196,228 @@ public class AnalyzeSerializablesJUnitTest {
       System.out.println(
           "++++++++++++++++++++++++++++++testSerializables found discrepancies++++++++++++++++++++++++++++++++++++");
       System.out.println(diff);
-      fail(diff + FAIL_MESSAGE, getSrcPathFor(getResourceAsFile("excludedClasses.txt")),
+      fail(diff + FAIL_MESSAGE, getSrcPathFor(getResourceAsFile(EXCLUDED_CLASSES_TXT)),
           this.actualSerializablesFile.getAbsolutePath(),
-          getSrcPathFor(this.expectedSerializablesFile));
+          getSrcPathFor(this.expectedSerializablesFile, "main"));
+    }
+  }
+
+  @Test
+  public void testExcludedClassesExistAndDoNotDeserialize() throws Exception {
+    List<String> excludedClasses = loadExcludedClasses(getResourceAsFile(EXCLUDED_CLASSES_TXT));
+    Properties properties = new Properties();
+    properties.put(ConfigurationProperties.VALIDATE_SERIALIZABLE_OBJECTS, "true");
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, "!*");
+    DistributionConfig distributionConfig = new DistributionConfigImpl(properties);
+    InternalDataSerializer.initialize(distributionConfig, initializeServices());
+
+    for (String filePath : excludedClasses) {
+      String className = filePath.replaceAll("/", ".");
+      System.out.println("testing class " + className);
+
+      Class excludedClass = Class.forName(className);
+      assertTrue(
+          excludedClass.getName()
+              + " is not Serializable and should be removed from excludedClasses.txt",
+          Serializable.class.isAssignableFrom(excludedClass));
+
+      if (excludedClass.isEnum()) {
+        // geode enums are special cased by DataSerializer and are never java-serialized
+        // for (Object instance: excludedClass.getEnumConstants()) {
+        // serializeAndDeserializeObject(instance);
+        // }
+      } else {
+        final Object excludedInstance;
+        try {
+          excludedInstance = excludedClass.newInstance();
+        } catch (InstantiationException | IllegalAccessException e) {
+          // okay - it's in the excludedClasses.txt file after all
+          // IllegalAccessException means that the constructor is private.
+          continue;
+        }
+        serializeAndDeserializeObject(excludedInstance);
+      }
+    }
+  }
+
+
+  private void serializeAndDeserializeObject(Object object) throws Exception {
+    HeapDataOutputStream outputStream = new HeapDataOutputStream(Version.CURRENT);
+    try {
+      DataSerializer.writeObject(object, outputStream);
+    } catch (IOException e) {
+      // some classes, such as BackupLock, are Serializable because the extend something
+      // like ReentrantLock but we never serialize them & it doesn't work to try to do so
+      System.out.println("Not Serializable: " + object.getClass().getName());
+    }
+    try {
+      Object instance = DataSerializer
+          .readObject(new DataInputStream(new ByteArrayInputStream(outputStream.toByteArray())));
+      fail("I was able to deserialize " + object.getClass().getName());
+    } catch (InvalidClassException e) {
+      // expected
+    }
+  }
+
+  @Test
+  public void testSanctionedClassesExistAndDoDeserialize() throws Exception {
+    loadExpectedSerializables();
+    Set<String> openBugs = new HashSet<>(loadOpenBugs(getResourceAsFile(OPEN_BUGS_TXT)));
+
+
+    DistributionConfig distributionConfig = new DistributionConfigImpl(new Properties());
+    distributionConfig.setValidateSerializableObjects(true);
+    distributionConfig.setSerializableObjectFilter("!*");
+    InternalDataSerializer.initialize(distributionConfig, initializeServices());
+
+    for (ClassAndVariableDetails details : expectedSerializables) {
+      if (openBugs.contains(details.className)) {
+        System.out.println("Skipping " + details.className + " because it is in openBugs.txt");
+        continue;
+      }
+      String className = details.className.replaceAll("/", ".");
+      System.out.println("testing class " + details.className);
+
+      Class sanctionedClass = Class.forName(className);
+      assertTrue(
+          sanctionedClass.getName() + " is not Serializable and should be removed from "
+              + expectedSerializablesFileName,
+          Serializable.class.isAssignableFrom(sanctionedClass));
+
+      if (Modifier.isAbstract(sanctionedClass.getModifiers())) {
+        // we detect whether these are modified in another test, but cannot instantiate them.
+        continue;
+      }
+
+      if (sanctionedClass.getEnclosingClass() != null
+          && sanctionedClass.getEnclosingClass().isEnum()) {
+        // inner enum class - enum constants are handled when we process their enclosing class
+        continue;
+      }
+
+      if (sanctionedClass.isEnum()) {
+        // geode enums are special cased by DataSerializer and are never java-serialized
+        for (Object instance : sanctionedClass.getEnumConstants()) {
+          serializeAndDeserializeSanctionedObject(instance);
+        }
+        continue;
+      }
+
+      Object sanctionedInstance = null;
+      if (!Serializable.class.isAssignableFrom(sanctionedClass)) {
+        throw new AssertionError(
+            className + " is not serializable.  Remove it from " + expectedSerializablesFileName);
+      }
+      try {
+        boolean isThrowable = Throwable.class.isAssignableFrom(sanctionedClass);
+
+        Constructor constructor = isThrowable ? sanctionedClass.getDeclaredConstructor(String.class)
+            : sanctionedClass.getDeclaredConstructor((Class<?>[]) null);
+        constructor.setAccessible(true);
+        sanctionedInstance =
+            isThrowable ? constructor.newInstance("test throwable") : constructor.newInstance();
+        serializeAndDeserializeSanctionedObject(sanctionedInstance);
+        continue;
+      } catch (NoSuchMethodException | InstantiationException | IllegalAccessException e) {
+        // fall through
+      }
+      try {
+        Class<?> superClass = sanctionedClass;
+        Constructor constructor = null;
+        if (Externalizable.class.isAssignableFrom(sanctionedClass)) {
+          Constructor<?> cons = sanctionedClass.getDeclaredConstructor((Class<?>[]) null);
+          cons.setAccessible(true);
+        } else {
+          while (Serializable.class.isAssignableFrom(superClass)) {
+            if ((superClass = superClass.getSuperclass()) == null) {
+              throw new AssertionError(
+                  className + " cannot be instantiated for serialization.  Remove it from "
+                      + expectedSerializablesFileName);
+            }
+          }
+          constructor = superClass.getDeclaredConstructor((Class<?>[]) null);
+          constructor.setAccessible(true);
+          constructor = ReflectionFactory.getReflectionFactory()
+              .newConstructorForSerialization(sanctionedClass, constructor);
+        }
+        sanctionedInstance = constructor.newInstance();
+      } catch (Exception e2) {
+        throw new AssertionError("Unable to instantiate " + className + " - please move it from "
+            + expectedSerializablesFileName + " to excludedClasses.txt", e2);
+      }
+      serializeAndDeserializeSanctionedObject(sanctionedInstance);
+    }
+  }
+
+  @Test
+  public void testOpenBugsAreInSanctionedSerializables() throws Exception {
+    loadExpectedSerializables();
+    List<String> openBugs = loadOpenBugs(getResourceAsFile(OPEN_BUGS_TXT));
+    Set<String> expectedSerializableClasses = new HashSet<>();
+
+    for (ClassAndVariableDetails details : expectedSerializables) {
+      expectedSerializableClasses.add(details.className);
+    }
+
+    for (String openBugClass : openBugs) {
+      assertTrue(
+          "open bug class: " + openBugClass + " is not present in " + expectedSerializablesFileName,
+          expectedSerializableClasses.contains(openBugClass));
+    }
+  }
+
+  @Test
+  public void testExcludedClassesAreNotInSanctionedSerializables() throws Exception {
+    loadExpectedSerializables();
+    Set<String> expectedSerializableClasses = new HashSet<>();
+
+    for (ClassAndVariableDetails details : expectedSerializables) {
+      expectedSerializableClasses.add(details.className);
+    }
+
+    List<String> excludedClasses = loadExcludedClasses(getResourceAsFile(EXCLUDED_CLASSES_TXT));
+
+    for (String excludedClass : excludedClasses) {
+      assertFalse(
+          "Excluded class: " + excludedClass + " was found in " + expectedSerializablesFileName,
+          expectedSerializableClasses.contains(excludedClass));
+    }
+  }
+
+  private void serializeAndDeserializeSanctionedObject(Object object) throws Exception {
+    HeapDataOutputStream outputStream = new HeapDataOutputStream(Version.CURRENT);
+    try {
+      DataSerializer.writeObject(object, outputStream);
+    } catch (IOException e) {
+      // some classes, such as BackupLock, are Serializable because the extend something
+      // like ReentrantLock but we never serialize them & it doesn't work to try to do so
+      throw new AssertionError("Not Serializable: " + object.getClass().getName(), e);
+    }
+    try {
+      Object instance = DataSerializer
+          .readObject(new DataInputStream(new ByteArrayInputStream(outputStream.toByteArray())));
+    } catch (CancelException e) {
+      // PDX classes fish for a PDXRegistry and find that there is no cache
+    } catch (InvalidClassException e) {
+      fail("I was unable to deserialize " + object.getClass().getName(), e);
     }
   }
 
   private String getSrcPathFor(File file) {
+    return getSrcPathFor(file, "test");
+  }
+
+  private String getSrcPathFor(File file, String testOrMain) {
     return file.getAbsolutePath().replace(
         "build" + File.separator + "resources" + File.separator + "test",
-        "src" + File.separator + "test" + File.separator + "resources");
+        "src" + File.separator + testOrMain + File.separator + "resources");
   }
 
   private void loadClasses() throws IOException {
     System.out.println("loadClasses starting");
 
-    excludedClasses = loadExcludedClasses(getResourceAsFile("excludedClasses.txt"));
-    List<String> openBugs = loadOpenBugs(getResourceAsFile("openBugs.txt"));
+    List<String> excludedClasses = loadExcludedClasses(getResourceAsFile(EXCLUDED_CLASSES_TXT));
+    List<String> openBugs = loadOpenBugs(getResourceAsFile(OPEN_BUGS_TXT));
 
     excludedClasses.addAll(openBugs);
 
@@ -279,8 +528,9 @@ public class AnalyzeSerializablesJUnitTest {
     return result;
   }
 
-  private List<ClassAndVariables> findSerializables() {
+  private List<ClassAndVariables> findSerializables() throws IOException {
     List<ClassAndVariables> result = new ArrayList<>(2000);
+    List<String> excludedClasses = loadExcludedClasses(getResourceAsFile(EXCLUDED_CLASSES_TXT));
     System.out.println("excluded classes are " + excludedClasses);
     Set<String> setOfExclusions = new HashSet<>(excludedClasses);
     for (Map.Entry<String, CompiledClass> entry : this.classes.entrySet()) {
@@ -317,6 +567,10 @@ public class AnalyzeSerializablesJUnitTest {
   }
 
   private File getResourceAsFile(String resourceName) {
-    return new File(getClass().getResource(resourceName).getFile());
+    return getResourceAsFile(getClass(), resourceName);
+  }
+
+  private File getResourceAsFile(Class associatedClass, String resourceName) {
+    return new File(associatedClass.getResource(resourceName).getFile());
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionConfigJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionConfigJUnitTest.java
index 7e5f83f..4b96bf2 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionConfigJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/DistributionConfigJUnitTest.java
@@ -99,7 +99,7 @@ public class DistributionConfigJUnitTest {
   @Test
   public void testGetAttributeNames() {
     String[] attNames = AbstractDistributionConfig._getAttNames();
-    assertEquals(attNames.length, 157);
+    assertEquals(attNames.length, 159);
 
     List boolList = new ArrayList();
     List intList = new ArrayList();
@@ -133,9 +133,9 @@ public class DistributionConfigJUnitTest {
 
     // TODO - This makes no sense. One has no idea what the correct expected number of attributes
     // are.
-    assertEquals(29, boolList.size());
+    assertEquals(30, boolList.size());
     assertEquals(33, intList.size());
-    assertEquals(86, stringList.size());
+    assertEquals(87, stringList.size());
     assertEquals(5, fileList.size());
     assertEquals(4, otherList.size());
   }
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
index 08424f0..a6f2a4a 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
@@ -18,6 +18,9 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -31,6 +34,7 @@ import org.awaitility.Awaitility;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionService;
@@ -254,7 +258,9 @@ public class GemFireDeadlockDetectorDUnitTest extends JUnit4CacheTestCase {
     });
   }
 
-  private static class TestFunction implements Function {
+  private static class TestFunction implements Function, DataSerializable {
+
+    public TestFunction() {}
 
     private static final int LOCK_WAIT_TIME = 1000;
 
@@ -292,6 +298,15 @@ public class GemFireDeadlockDetectorDUnitTest extends JUnit4CacheTestCase {
     }
 
 
+    @Override
+    public void toData(DataOutput out) throws IOException {
+
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerSerializationWhitelistTest.java b/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerSerializationWhitelistTest.java
new file mode 100644
index 0000000..73690d9
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/InternalDataSerializerSerializationWhitelistTest.java
@@ -0,0 +1,152 @@
+package org.apache.geode.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Properties;
+
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.DataSerializer;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionConfigImpl;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+/*
+ * 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.
+ */
+@Category(UnitTest.class)
+public class InternalDataSerializerSerializationWhitelistTest {
+  private HeapDataOutputStream outputStream;
+  private Object testSerializable;
+  private Properties properties;
+
+  @Before
+  public void setUp() {
+    Assume.assumeTrue("ObjectInputFilter is present in this JVM (post- 8.111)",
+        hasObjectInputFilter());
+    outputStream = new HeapDataOutputStream(Version.CURRENT);
+    testSerializable = new TestSerializable();
+    properties = new Properties();
+  }
+
+  private boolean hasObjectInputFilter() {
+    try {
+      Class.forName("sun.misc.ObjectInputFilter");
+      return true;
+    } catch (ClassNotFoundException e) {
+      return false;
+    }
+  }
+
+  @AfterClass
+  public static void clearDataSerializerFilter() {
+    InternalDataSerializer.initialize(new DistributionConfigImpl(new Properties()),
+        new ArrayList<>());
+  }
+
+  @Test
+  public void distributionConfigDefaults() {
+    DistributionConfigImpl distributionConfig = new DistributionConfigImpl(new Properties());
+
+    assertFalse(distributionConfig.getValidateSerializableObjects());
+    assertEquals("!*", distributionConfig.getSerializableObjectFilter());
+  }
+
+  @Test
+  public void canSerializeWhenFilterIsDisabled() throws Exception {
+    trySerializingTestObject(new Properties());
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void notWhitelistedWithFilterCannotSerialize() throws Exception {
+    properties.setProperty(DistributionConfig.VALIDATE_SERIALIZABLE_OBJECTS_NAME, "true");
+
+    trySerializingTestObject(properties);
+  }
+
+  @Test
+  public void whitelistedWithFilterCanSerialize() throws Exception {
+    properties.setProperty(DistributionConfig.VALIDATE_SERIALIZABLE_OBJECTS_NAME, "true");
+    properties.setProperty(DistributionConfig.SERIALIZABLE_OBJECT_FILTER_NAME,
+        TestSerializable.class.getName());
+
+    trySerializingTestObject(properties);
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void whitelistedWithNonlMatchingFilterCannotSerialize() throws Exception {
+    trySerializingWithFilter("RabidMonkeyTurnip");
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void whitelistedWithPartialMatchingFilterCannotSerialize() throws Exception {
+    trySerializingWithFilter("TestSerializable"); // Not fully qualified class name
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void whitelistedWithEmptyFilterCannotSerialize() throws Exception {
+    trySerializingWithFilter("");
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void whitelistedWithIncorrectPathFilterCannotSerialize() throws Exception {
+    trySerializingWithFilter(
+        "org.apache.commons.InternalDataSerializerSerializationWhitelistTest$TestSerializable");
+  }
+
+  @Test(expected = java.io.InvalidClassException.class)
+  public void whitelistedWithWildcardPathFilterCannotSerialize() throws Exception {
+    trySerializingWithFilter("org.apache.*");
+  }
+
+  @Test
+  public void whitelistedWithWildcardSubpathFilterCanSerialize() throws Exception {
+    trySerializingWithFilter("org.apache.**");
+  }
+
+  private void trySerializingWithFilter(String filter) throws Exception {
+    properties.setProperty(DistributionConfig.VALIDATE_SERIALIZABLE_OBJECTS_NAME, "true");
+    properties.setProperty(DistributionConfig.SERIALIZABLE_OBJECT_FILTER_NAME, filter);
+
+    trySerializingTestObject(properties);
+  }
+
+  private void trySerializingTestObject(Properties properties)
+      throws IOException, ClassNotFoundException {
+    DistributionConfig distributionConfig = new DistributionConfigImpl(properties);
+    InternalDataSerializer.initialize(distributionConfig, new ArrayList<>());
+
+    DataSerializer.writeObject(testSerializable, outputStream);
+
+    // if this throws, we're good!
+    DataSerializer
+        .readObject(new DataInputStream(new ByteArrayInputStream(outputStream.toByteArray())));
+  }
+
+  private static class TestSerializable implements Serializable {
+
+  }
+
+}
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/CacheAdvisorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/CacheAdvisorDUnitTest.java
index 1662e73..3f123ae 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/CacheAdvisorDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/CacheAdvisorDUnitTest.java
@@ -102,6 +102,7 @@ public class CacheAdvisorDUnitTest extends JUnit4CacheTestCase {
       vms[i].invoke(
           new CacheSerializableRunnable("CacheAdvisorDUnitTest.testGenericAdvice;createRegion") {
             public void run2() throws CacheException {
+              final RegionAttributes attrs = new AttributesFactory().create();
               createRegion(rgnName, attrs);
             }
           });
@@ -232,17 +233,18 @@ public class CacheAdvisorDUnitTest extends JUnit4CacheTestCase {
    * @param op needs to be one of the following: CACHE_CLOSE REGION_CLOSE REGION_LOCAL_DESTROY
    */
   private void basicTestClose(Operation op) throws Exception {
-    final RegionAttributes attrs = new AttributesFactory().create();
     final String rgnName = getUniqueName();
     for (int i = 0; i < vms.length; i++) {
       vms[i].invoke(
           new CacheSerializableRunnable("CacheAdvisorDUnitTest.basicTestClose; createRegion") {
             public void run2() throws CacheException {
+              final RegionAttributes attrs = new AttributesFactory().create();
               createRegion(rgnName, attrs);
             }
           });
     }
 
+    final RegionAttributes attrs = new AttributesFactory().create();
     DistributedRegion rgn = (DistributedRegion) createRegion(rgnName, attrs);
     Set expected = new HashSet(Arrays.asList(ids));
     assertEquals(expected, rgn.getDistributionAdvisor().adviseGeneric());
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerGetAllDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerGetAllDUnitTest.java
index 745f156..47c2c39 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerGetAllDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerGetAllDUnitTest.java
@@ -35,6 +35,10 @@ import org.apache.geode.cache.LoaderHelper;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.Scope;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.client.ClientRegionFactory;
+import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.cache.client.PoolFactory;
 import org.apache.geode.cache.client.PoolManager;
 import org.apache.geode.cache.server.CacheServer;
@@ -291,6 +295,14 @@ public class ClientServerGetAllDUnitTest extends ClientServerTestCase {
     stopBridgeServer(server);
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.UnitTestValueHolder");
+    return properties;
+  }
+
   @Test
   public void testLargeGetAllFromServer() throws Throwable {
     final Host host = Host.getHost(0);
@@ -694,9 +706,7 @@ public class ClientServerGetAllDUnitTest extends ClientServerTestCase {
       @Override
       public void run2() throws CacheException {
         // Create DS
-        Properties config = new Properties();
-        config.setProperty(LOCATORS,
-            "localhost[" + DistributedTestUtils.getDUnitLocatorPort() + "]");
+        Properties config = getDistributedSystemProperties();
         if (offheap) {
           config.setProperty(OFF_HEAP_MEMORY_SIZE, "350m");
         }
@@ -799,17 +809,12 @@ public class ClientServerGetAllDUnitTest extends ClientServerTestCase {
       @Override
       public void run2() throws CacheException {
         // Create DS
-        Properties config = new Properties();
-        config.setProperty(MCAST_PORT, "0");
-        config.setProperty(LOCATORS, "");
-        getSystem(config);
+        Properties config = getDistributedSystemProperties();
+        ClientCache clientCache = getClientCache(new ClientCacheFactory(config));
 
         // Create Region
-        AttributesFactory factory = new AttributesFactory();
-        factory.setScope(Scope.LOCAL);
-        if (proxy) {
-          factory.setDataPolicy(DataPolicy.EMPTY);
-        }
+        ClientRegionFactory factory = clientCache.createClientRegionFactory(
+            proxy ? ClientRegionShortcut.PROXY : ClientRegionShortcut.CACHING_PROXY);
         {
           PoolFactory pf = PoolManager.createFactory();
           for (int i = 0; i < serverPorts.length; i++) {
@@ -821,7 +826,7 @@ public class ClientServerGetAllDUnitTest extends ClientServerTestCase {
           pf.create("myPool");
         }
         factory.setPoolName("myPool");
-        createRootRegion(regionName, factory.create());
+        factory.create(regionName);
       }
     });
   }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionCCEDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionCCEDUnitTest.java
index 95209b0..759b1a3 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionCCEDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionCCEDUnitTest.java
@@ -19,12 +19,14 @@ import static org.junit.Assert.*;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.partition.PartitionRegionHelper;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.versions.VersionTag;
 import org.apache.geode.test.dunit.IgnoredException;
@@ -42,6 +44,18 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 public class ClientServerTransactionCCEDUnitTest extends ClientServerTransactionDUnitTest {
 
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.**" + ";org.apache.geode.test.dunit.**"
+            + ";org.apache.geode.test.junit.**"
+            + ";org.apache.geode.internal.cache.execute.data.CustId"
+            + ";org.apache.geode.internal.cache.execute.data.Customer");
+    return result;
+  }
+
+
   protected final void postSetUpClientServerTransactionDUnitTest() throws Exception {
     IgnoredException.addIgnoredException("Connection reset");
     IgnoredException.addIgnoredException("SocketTimeoutException");
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionDUnitTest.java
index cf312cd..9ee1195 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ClientServerTransactionDUnitTest.java
@@ -51,6 +51,7 @@ import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.cache.util.CacheWriterAdapter;
 import org.apache.geode.cache.util.TransactionListenerAdapter;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -96,6 +97,17 @@ public class ClientServerTransactionDUnitTest extends RemoteTransactionDUnitTest
   protected void postSetUpClientServerTransactionDUnitTest() throws Exception {}
 
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        result.get(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER)
+            + ";org.apache.geode.internal.cache.ClientServerTransactionDUnitTest*"
+            + ";org.apache.geode.test.dunit.**" + ";org.apache.geode.test.junit.**");
+    return result;
+  }
+
+
   private Integer createRegionsAndStartServerWithTimeout(VM vm, boolean accessor,
       int txTimeoutSecs) {
     return createRegionOnServerWithTimeout(vm, true, accessor, txTimeoutSecs);
@@ -240,7 +252,7 @@ public class ClientServerTransactionDUnitTest extends RemoteTransactionDUnitTest
   }
 
   private void configureOffheapSystemProperty() {
-    Properties p = new Properties();
+    Properties p = getDistributedSystemProperties();
     // p.setProperty(LOG_LEVEL, "finer");
     p.setProperty(OFF_HEAP_MEMORY_SIZE, "1m");
     this.getSystem(p);
@@ -3020,7 +3032,7 @@ public class ClientServerTransactionDUnitTest extends RemoteTransactionDUnitTest
         public Object call() throws Exception {
           System.setProperty(
               DistributionConfig.GEMFIRE_PREFIX + "bridge.disableShufflingOfEndpoints", "true");
-          ClientCacheFactory ccf = new ClientCacheFactory();
+          ClientCacheFactory ccf = new ClientCacheFactory(getDistributedSystemProperties());
           ccf.addPoolServer("localhost"/* getServerHostName(Host.getHost(0)) */, port);
           setCCF(port2, ccf);
           // these settings were used to manually check that tx operation stats were being updated
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/CommitFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/CommitFunction.java
index 59ffe44..14fed5b 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/CommitFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/CommitFunction.java
@@ -14,11 +14,15 @@
  */
 package org.apache.geode.internal.cache;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.CacheTransactionManager;
@@ -63,11 +67,13 @@ import org.apache.geode.internal.logging.LogService;
  *
  * @since GemFire 6.6.1
  */
-public class CommitFunction implements Function {
+public class CommitFunction implements Function, DataSerializable {
   private static final Logger logger = LogService.getLogger();
 
   private static final long serialVersionUID = 7851518767859544501L;
 
+  public CommitFunction() {}
+
   public boolean hasResult() {
     return true;
   }
@@ -137,4 +143,13 @@ public class CommitFunction implements Function {
     return true;
   }
 
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ConcurrentMapOpsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ConcurrentMapOpsDUnitTest.java
index 5e1b1d9..9fab5b5 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ConcurrentMapOpsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ConcurrentMapOpsDUnitTest.java
@@ -28,6 +28,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.Delta;
 import org.apache.geode.InvalidDeltaException;
 import org.apache.geode.cache.CacheListener;
@@ -1259,12 +1260,14 @@ public class ConcurrentMapOpsDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
-  private static class CustomerDelta implements Serializable, Delta {
+  private static class CustomerDelta implements DataSerializable, Delta {
     private String name;
     private String address;
     private boolean nameChanged;
     private boolean addressChanged;
 
+    public CustomerDelta() {}
+
     public CustomerDelta(CustomerDelta o) {
       this.address = o.address;
       this.name = o.name;
@@ -1275,6 +1278,22 @@ public class ConcurrentMapOpsDUnitTest extends JUnit4CacheTestCase {
       this.address = address;
     }
 
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeUTF(name);
+      out.writeUTF(address);
+      out.writeBoolean(nameChanged);
+      out.writeBoolean(addressChanged);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      name = in.readUTF();
+      address = in.readUTF();
+      nameChanged = in.readBoolean();
+      addressChanged = in.readBoolean();
+    }
+
     public void fromDelta(DataInput in) throws IOException, InvalidDeltaException {
       boolean nameC = in.readBoolean();
       if (nameC) {
@@ -1331,5 +1350,6 @@ public class ConcurrentMapOpsDUnitTest extends JUnit4CacheTestCase {
     public int hashCode() {
       return this.address.hashCode() + this.name.hashCode();
     }
+
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/NestedTransactionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/NestedTransactionFunction.java
index 48ce7c2..fa5e9f6 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/NestedTransactionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/NestedTransactionFunction.java
@@ -14,10 +14,14 @@
  */
 package org.apache.geode.internal.cache;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.CacheTransactionManager;
@@ -45,7 +49,7 @@ import org.apache.geode.internal.logging.LogService;
  * @since GemFire 6.6.1
  *
  */
-public class NestedTransactionFunction implements Function {
+public class NestedTransactionFunction implements Function, DataSerializable {
   private static final Logger logger = LogService.getLogger();
 
   public static final int COMMIT = 1;
@@ -53,6 +57,8 @@ public class NestedTransactionFunction implements Function {
 
   private static final long serialVersionUID = 1400965724856341543L;
 
+  public NestedTransactionFunction() {}
+
   public boolean hasResult() {
     return true;
   }
@@ -110,4 +116,13 @@ public class NestedTransactionFunction implements Function {
     return false;
   }
 
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryDUnitTest.java
index b34979b..5c0e170 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionQueryDUnitTest.java
@@ -1215,7 +1215,7 @@ public class PartitionedRegionQueryDUnitTest extends JUnit4CacheTestCase {
   }
 
 
-  private class TestObject implements Serializable, Comparable {
+  public static class TestObject implements DataSerializable, Comparable {
     @Override
     public int compareTo(Object o) {
       if (o instanceof TestObject) {
@@ -1226,10 +1226,21 @@ public class PartitionedRegionQueryDUnitTest extends JUnit4CacheTestCase {
 
     public Double score;
 
+    public TestObject() {}
+
     public TestObject(double score) {
       this.score = score;
     }
 
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeDouble(score);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      score = in.readDouble();
+    }
   }
 
   public interface PdxAssetFactory extends Serializable {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionSingleHopDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionSingleHopDUnitTest.java
index b7ae2fe..d918902 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionSingleHopDUnitTest.java
@@ -1749,7 +1749,9 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
     replicatedRegion.putAll(map);
   }
 
-  static class MyFunctionAdapter extends FunctionAdapter {
+  static class MyFunctionAdapter extends FunctionAdapter implements DataSerializable {
+    public MyFunctionAdapter() {}
+
     @Override
     public String getId() {
       return "fid";
@@ -1782,6 +1784,14 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
     public boolean optimizeForWrite() {
       return true;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {}
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 
   public static void executeFunctions() {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionTestUtilsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionTestUtilsDUnitTest.java
index 0f3b82a..3839ef7 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionTestUtilsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionTestUtilsDUnitTest.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
 
@@ -36,6 +37,7 @@ import org.apache.geode.cache.CacheException;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.test.dunit.Assert;
 import org.apache.geode.test.dunit.Host;
@@ -53,6 +55,14 @@ public class PartitionedRegionTestUtilsDUnitTest extends PartitionedRegionDUnitT
 
   final int totalNumBuckets = 5;
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.PartitionedRegionTestUtilsDUnitTest$TestPRKey");
+    return result;
+  }
+
   /**
    * Test the {@link PartitionedRegion#getSomeKeys(java.util.Random)} method, making sure it returns
    * keys when there are keys and {@link java.util.Collections#EMPTY_SET} when there are none.
@@ -385,31 +395,6 @@ public class PartitionedRegionTestUtilsDUnitTest extends PartitionedRegionDUnitT
       assertTrue(s.isEmpty());
     }
 
-    class TestPRKey implements Serializable {
-      int hashCode;
-      int differentiator;
-
-      TestPRKey(int hash, int differentiator) {
-        this.hashCode = hash;
-        this.differentiator = differentiator;
-      }
-
-      public int hashCode() {
-        return hashCode;
-      }
-
-      public boolean equals(Object obj) {
-        if (!(obj instanceof TestPRKey)) {
-          return false;
-        }
-        return ((TestPRKey) obj).differentiator == this.differentiator;
-      }
-
-      public String toString() {
-        return "TestPRKey " + hashCode + " diff " + differentiator;
-      }
-    }
-
     TestPRKey key;
     Integer val;
 
@@ -444,6 +429,31 @@ public class PartitionedRegionTestUtilsDUnitTest extends PartitionedRegionDUnitT
     }
   }
 
+  static class TestPRKey implements Serializable {
+    int hashCode;
+    int differentiator;
+
+    TestPRKey(int hash, int differentiator) {
+      this.hashCode = hash;
+      this.differentiator = differentiator;
+    }
+
+    public int hashCode() {
+      return hashCode;
+    }
+
+    public boolean equals(Object obj) {
+      if (!(obj instanceof TestPRKey)) {
+        return false;
+      }
+      return ((TestPRKey) obj).differentiator == this.differentiator;
+    }
+
+    public String toString() {
+      return "TestPRKey " + hashCode + " diff " + differentiator;
+    }
+  }
+
   /**
    * Test the test method {@link PartitionedRegion#getBucketOwnersForValidation(int)} Verify that
    * the information it discovers is the same as the local advisor.
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
index dcf2a85..a8aa658 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
@@ -16,9 +16,12 @@ package org.apache.geode.internal.cache;
 
 import static org.junit.Assert.*;
 
+import java.util.Properties;
+
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
 import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 import org.apache.geode.test.junit.categories.DistributedTest;
@@ -29,6 +32,15 @@ public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
   private static final long serialVersionUID = 5960292521068781262L;
 
   @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    String pattern = (String) properties.get(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER);
+    pattern += ";org.apache.geode.internal.cache.RemoteTransactionCCEDUnitTest";
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, pattern);
+    return properties;
+  }
+
+  @Override
   protected boolean getConcurrencyChecksEnabled() {
     return true;
   }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java
index a528633..cdd0100 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java
@@ -24,6 +24,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
@@ -88,6 +89,7 @@ import org.apache.geode.cache.query.CqListener;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.cache.util.CacheWriterAdapter;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.AvailablePort;
@@ -147,6 +149,17 @@ public class RemoteTransactionDUnitTest extends JUnit4CacheTestCase {
   }
 
   @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.RemoteTransactionDUnitTest*"
+            + ";org.apache.geode.test.dunit.**" + ";org.apache.geode.test.junit.**"
+            + ";org.apache.geode.internal.cache.execute.data.CustId"
+            + ";org.apache.geode.internal.cache.execute.data.Customer");
+    return result;
+  }
+
+  @Override
   public final void preTearDownCacheTestCase() throws Exception {
     try {
       Invoke.invokeInEveryVM(verifyNoTxState);
@@ -3583,6 +3596,8 @@ public class RemoteTransactionDUnitTest extends JUnit4CacheTestCase {
         ccf.addPoolServer("localhost"/* getServerHostName(Host.getHost(0)) */, port);
         ccf.setPoolSubscriptionEnabled(true);
         ccf.set(LOG_LEVEL, LogWriterUtils.getDUnitLogLevel());
+        ccf.set(SERIALIZABLE_OBJECT_FILTER,
+            getDistributedSystemProperties().getProperty(SERIALIZABLE_OBJECT_FILTER));
         ClientCache cCache = getClientCache(ccf);
         ClientRegionFactory<Integer, String> crf = cCache.createClientRegionFactory(
             isEmpty ? ClientRegionShortcut.PROXY : ClientRegionShortcut.CACHING_PROXY);
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RollbackFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/RollbackFunction.java
index 6beba93..047d04a 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RollbackFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/RollbackFunction.java
@@ -14,11 +14,15 @@
  */
 package org.apache.geode.internal.cache;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.CacheTransactionManager;
@@ -62,11 +66,13 @@ import org.apache.geode.internal.logging.LogService;
  *
  * @since GemFire 6.6.1
  */
-public class RollbackFunction implements Function {
+public class RollbackFunction implements Function, DataSerializable {
   private static final Logger logger = LogService.getLogger();
 
   private static final long serialVersionUID = 1377183180063184795L;
 
+  public RollbackFunction() {}
+
   public boolean hasResult() {
     return true;
   }
@@ -132,4 +138,13 @@ public class RollbackFunction implements Function {
     return true;
   }
 
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/TransactionsWithDeltaDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/TransactionsWithDeltaDUnitTest.java
index 1011c14..1995cd5 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/TransactionsWithDeltaDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/TransactionsWithDeltaDUnitTest.java
@@ -29,6 +29,7 @@ import java.util.Iterator;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.Delta;
 import org.apache.geode.InvalidDeltaException;
 import org.apache.geode.cache.*;
@@ -59,9 +60,6 @@ public class TransactionsWithDeltaDUnitTest extends JUnit4CacheTestCase {
   private static final String CUSTOMER = "Customer";
   private static final String ORDER = "Order";
 
-  /**
-   * @param name
-   */
   public TransactionsWithDeltaDUnitTest() {
     super();
   }
@@ -128,7 +126,7 @@ public class TransactionsWithDeltaDUnitTest extends JUnit4CacheTestCase {
     });
   }
 
-  static class Customer implements Delta, Serializable {
+  static class Customer implements Delta, DataSerializable {
     private int id;
     private String name;
     private boolean idChanged;
@@ -136,6 +134,8 @@ public class TransactionsWithDeltaDUnitTest extends JUnit4CacheTestCase {
     private boolean fromDeltaCalled;
     private boolean toDeltaCalled;
 
+    public Customer() {}
+
     public Customer(int id, String name) {
       this.id = id;
       this.name = name;
@@ -217,6 +217,26 @@ public class TransactionsWithDeltaDUnitTest extends JUnit4CacheTestCase {
       this.toDeltaCalled = false;
       return retVal;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeInt(id);
+      out.writeUTF(name);
+      out.writeBoolean(idChanged);
+      out.writeBoolean(nameChanged);
+      out.writeBoolean(fromDeltaCalled);
+      out.writeBoolean(toDeltaCalled);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      id = in.readInt();
+      name = in.readUTF();
+      idChanged = in.readBoolean();
+      nameChanged = in.readBoolean();
+      fromDeltaCalled = in.readBoolean();
+      toDeltaCalled = in.readBoolean();
+    }
   }
 
   @Test
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/ClientServerFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/ClientServerFunctionExecutionDUnitTest.java
index 3e311ed..e6e1d8c 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/ClientServerFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/ClientServerFunctionExecutionDUnitTest.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -43,6 +44,7 @@ import org.apache.geode.cache.execute.FunctionAdapter;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.cache.functions.TestFunction;
 import org.apache.geode.internal.cache.tier.sockets.CacheServerTestUtil;
@@ -74,6 +76,14 @@ public class ClientServerFunctionExecutionDUnitTest extends PRClientServerTestBa
     IgnoredException.addIgnoredException("java.net.ConnectException");
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**");
+    return result;
+  }
+
   @Test
   public void test_Bug_43126_Function_Not_Registered() throws InterruptedException {
     createScenario();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
index 4282f03..adcd3d2 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
@@ -46,6 +46,7 @@ import org.apache.geode.cache.execute.FunctionInvocationTargetException;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -107,6 +108,16 @@ public class DistributedRegionFunctionExecutionDUnitTest extends JUnit4Distribut
     disconnectAllFromDS();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.functions.**;org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**");
+    return result;
+  }
+
+
+
   @Test
   public void testDistributedRegionFunctionExecutionOnDataPolicyEmpty() {
     createCacheInVm(); // Empty
@@ -1280,6 +1291,8 @@ public class DistributedRegionFunctionExecutionDUnitTest extends JUnit4Distribut
 
   private void createCache(Properties props) {
     try {
+      props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+          "org.apache.geode.internal.cache.functions.**;org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**");
       DistributedSystem ds = getSystem(props);
       assertNotNull(ds);
       ds.disconnect();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionExecution_ExceptionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionExecution_ExceptionDUnitTest.java
index a23a3df..36327ed 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionExecution_ExceptionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionExecution_ExceptionDUnitTest.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 import java.util.Set;
 
 import org.junit.Test;
@@ -32,6 +33,7 @@ import org.apache.geode.cache.execute.Execution;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.cache.PartitionAttributesImpl;
 import org.apache.geode.internal.cache.PartitionedRegion;
@@ -48,6 +50,13 @@ import org.apache.geode.test.junit.categories.DistributedTest;
 
 @Category(DistributedTest.class)
 public class FunctionExecution_ExceptionDUnitTest extends PartitionedRegionDUnitTestCase {
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.MyFunctionExecutionException");
+    return properties;
+  }
 
   /**
    *
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceBase.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceBase.java
index 3687e0b..10f78f2 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceBase.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceBase.java
@@ -21,8 +21,12 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 import org.junit.Assert;
@@ -31,13 +35,17 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheClosedException;
+import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.execute.Execution;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionException;
 import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -71,6 +79,17 @@ public abstract class FunctionServiceBase extends JUnit4CacheTestCase {
    */
   public abstract int numberOfExecutions();
 
+
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**");
+    return result;
+  }
+
+
+
   @Test
   public void functionContextGetCacheIsNotNullAndOpen() {
     ResultCollector rc = getExecution().execute((context) -> {
@@ -373,9 +392,11 @@ public abstract class FunctionServiceBase extends JUnit4CacheTestCase {
    * A function which will close the cache if the given member matches the member executing this
    * function
    */
-  private class CacheClosingNonHAFunction implements Function {
+  public static class CacheClosingNonHAFunction implements Function, DataSerializable {
+
+    private InternalDistributedMember member;
 
-    private final InternalDistributedMember member;
+    public CacheClosingNonHAFunction() {} // for serialization
 
     public CacheClosingNonHAFunction(final InternalDistributedMember member) {
       this.member = member;
@@ -386,7 +407,7 @@ public abstract class FunctionServiceBase extends JUnit4CacheTestCase {
       final InternalDistributedMember myId =
           InternalDistributedSystem.getAnyInstance().getDistributedMember();
       if (myId.equals(member)) {
-        getCache().close();
+        CacheFactory.getAnyInstance().close();
         throw new CacheClosedException();
       }
       pause(1000);
@@ -397,6 +418,16 @@ public abstract class FunctionServiceBase extends JUnit4CacheTestCase {
     public boolean isHA() {
       return false;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      DataSerializer.writeObject(member, out);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      member = DataSerializer.readObject(in);
+    }
   }
 
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceClientBase.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceClientBase.java
index f8700b6..6b3f066 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceClientBase.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceClientBase.java
@@ -15,6 +15,7 @@
 package org.apache.geode.internal.cache.execute;
 
 import java.util.Arrays;
+import java.util.Properties;
 
 import org.junit.Assume;
 import org.junit.Ignore;
@@ -22,6 +23,7 @@ import org.junit.Ignore;
 import org.apache.geode.cache.client.ClientCache;
 import org.apache.geode.cache.client.ClientCacheFactory;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.VM;
 
@@ -47,6 +49,14 @@ public abstract class FunctionServiceClientBase extends FunctionServiceBase {
     return getClientCache(clientCacheFactory);
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**;org.apache.geode.test.junit.rules.**");
+    return result;
+  }
+
   protected Integer createServer(final VM vm) {
     return vm.invoke(() -> {
       CacheServer server = getCache().addCacheServer();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceStatsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceStatsDUnitTest.java
index 46c00c0..eaef93f 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceStatsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/FunctionServiceStatsDUnitTest.java
@@ -44,6 +44,7 @@ import org.apache.geode.cache.execute.FunctionException;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -1143,6 +1144,14 @@ public class FunctionServiceStatsDUnitTest extends PRClientServerTestBase {
     member4.invoke(closeDistributedSystem);
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.MyFunctionExecutionException");
+    return properties;
+  }
+
   /**
    * Test the exception occurred while invoking the function execution on all members of DS
    *
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/LocalDataSetIndexingDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/LocalDataSetIndexingDUnitTest.java
index 042a7f2..b2b0ff9 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/LocalDataSetIndexingDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/LocalDataSetIndexingDUnitTest.java
@@ -61,6 +61,7 @@ import org.apache.geode.cache.query.internal.QueryObserverAdapter;
 import org.apache.geode.cache.query.internal.QueryObserverHolder;
 import org.apache.geode.cache30.CacheSerializableRunnable;
 import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.OSProcess;
@@ -98,6 +99,15 @@ public class LocalDataSetIndexingDUnitTest extends JUnit4CacheTestCase {
     dataStore2 = host.getVM(1);
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.**;org.apache.geode.test.dunit.**");
+    return result;
+  }
+
+
   @Test
   public void testLocalDataSetIndexing() {
     final CacheSerializableRunnable createPRs = new CacheSerializableRunnable("create prs ") {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MemberFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MemberFunctionExecutionDUnitTest.java
index 0bd3e87..49bf886 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MemberFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MemberFunctionExecutionDUnitTest.java
@@ -40,6 +40,7 @@ import org.apache.geode.cache.execute.FunctionException;
 import org.apache.geode.cache.execute.FunctionInvocationTargetException;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.DM;
@@ -196,7 +197,7 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
 
   @Test
   public void testBug46129() throws Exception {
-    Properties props = new Properties();
+    Properties props = getDistributedSystemProperties();
     member1.invoke(() -> MemberFunctionExecutionDUnitTest.connectToDistributedSystem(props));
     member2.invoke(() -> MemberFunctionExecutionDUnitTest.connectToDistributedSystem(props));
     member3.invoke(() -> MemberFunctionExecutionDUnitTest.connectToDistributedSystem(props));
@@ -204,26 +205,7 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
     connectToDistributedSystem(props);
     AbstractExecution exe = (AbstractExecution) FunctionService.onMembers();
     exe.setIgnoreDepartedMembers(true);
-    ResultCollector rs = exe.execute(new FunctionAdapter() {
-      @Override
-      public void execute(FunctionContext context) {
-        try {
-          Object arg = context.getArguments();
-          if (arg != null && arg instanceof Map) {
-            context.getResultSender().lastResult("ok");
-          } else {
-            throw new IllegalArgumentException("dummy");
-          }
-        } catch (Exception e) {
-          context.getResultSender().sendException(e);
-        }
-      }
-
-      @Override
-      public String getId() {
-        return "testBug46129";
-      }
-    });
+    ResultCollector rs = exe.execute(new TestBug46129FN1());
     List resultList = (List) rs.getResult();
     Exception e = (Exception) resultList.get(0);
     assertTrue(e instanceof IllegalArgumentException);
@@ -232,26 +214,7 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
   }
 
   public static void registerFunction() {
-    FunctionService.registerFunction(new FunctionAdapter() {
-      @Override
-      public void execute(FunctionContext context) {
-        if (context.getArguments() instanceof String) {
-          context.getResultSender().lastResult("Failure");
-        } else if (context.getArguments() instanceof Boolean) {
-          context.getResultSender().lastResult(Boolean.FALSE);
-        }
-      }
-
-      @Override
-      public String getId() {
-        return "Function";
-      }
-
-      @Override
-      public boolean hasResult() {
-        return true;
-      }
-    });
+    FunctionService.registerFunction(new TestBug46129FN2());
   }
 
   /**
@@ -337,19 +300,7 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
       public void run() {
         getSystem();
         ResultCollector<?, ?> rc =
-            FunctionService.onMember(member1Id).execute(new FunctionAdapter() {
-
-              @Override
-              public String getId() {
-                return getClass().getName();
-              }
-
-              @Override
-              public void execute(FunctionContext context) {
-                // This will throw an exception because the cache is not yet created.
-                CacheFactory.getAnyInstance();
-              }
-            });
+            FunctionService.onMember(member1Id).execute(new TestOnMembersWithoutCacheFN1());
 
         try {
           rc.getResult(30, TimeUnit.SECONDS);
@@ -380,26 +331,7 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
     memberExcution = FunctionService.onMember(localmember);
     Execution executor = memberExcution.setArguments("Key");
     try {
-      ResultCollector rc = executor.execute(new FunctionAdapter() {
-        @Override
-        public void execute(FunctionContext context) {
-          if (context.getArguments() instanceof String) {
-            context.getResultSender().lastResult("Success");
-          } else {
-            context.getResultSender().lastResult("Failure");
-          }
-        }
-
-        @Override
-        public String getId() {
-          return getClass().getName();
-        }
-
-        @Override
-        public boolean hasResult() {
-          return true;
-        }
-      });
+      ResultCollector rc = executor.execute(new Bug41118FN1());
       List li = (ArrayList) rc.getResult();
       LogWriterUtils.getLogWriter()
           .info("MemberFunctionExecutionDUnitTest#excuteOnMembers: Result : " + li);
@@ -626,11 +558,21 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties props = super.getDistributedSystemProperties();
+    props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.MyFunctionExecutionException"
+            + ";org.apache.geode.internal.cache.execute.MemberFunctionExecutionDUnitTest*"
+            + ";org.apache.geode.test.dunit.**" + ";org.apache.geode.test.junit.rules.**");
+    return props;
+  }
+
   /*
    * Create Disturbued System and Register the Function
    */
   private void createDistributedSystemAndRegisterFunction() {
-    Properties props = new Properties();
+    final Properties props = getDistributedSystemProperties();
     connectToDistributedSystem(props);
     List<VM> members = new ArrayList<VM>(4);
     members.add(member1);
@@ -689,4 +631,81 @@ public class MemberFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
   public final void postTearDownCacheTestCase() throws Exception {
     disconnectAllFromDS();
   }
+
+  public static class TestBug46129FN1 extends FunctionAdapter {
+    @Override
+    public void execute(FunctionContext context) {
+      try {
+        Object arg = context.getArguments();
+        if (arg != null && arg instanceof Map) {
+          context.getResultSender().lastResult("ok");
+        } else {
+          throw new IllegalArgumentException("dummy");
+        }
+      } catch (Exception e) {
+        context.getResultSender().sendException(e);
+      }
+    }
+
+    @Override
+    public String getId() {
+      return "testBug46129";
+    }
+  }
+
+  public static class TestBug46129FN2 extends FunctionAdapter {
+    @Override
+    public void execute(FunctionContext context) {
+      if (context.getArguments() instanceof String) {
+        context.getResultSender().lastResult("Failure");
+      } else if (context.getArguments() instanceof Boolean) {
+        context.getResultSender().lastResult(Boolean.FALSE);
+      }
+    }
+
+    @Override
+    public String getId() {
+      return "Function";
+    }
+
+    @Override
+    public boolean hasResult() {
+      return true;
+    }
+  }
+
+  public static class Bug41118FN1 extends FunctionAdapter {
+    @Override
+    public void execute(FunctionContext context) {
+      if (context.getArguments() instanceof String) {
+        context.getResultSender().lastResult("Success");
+      } else {
+        context.getResultSender().lastResult("Failure");
+      }
+    }
+
+    @Override
+    public String getId() {
+      return getClass().getName();
+    }
+
+    @Override
+    public boolean hasResult() {
+      return true;
+    }
+  }
+
+  public static class TestOnMembersWithoutCacheFN1 extends FunctionAdapter {
+
+    @Override
+    public String getId() {
+      return getClass().getName();
+    }
+
+    @Override
+    public void execute(FunctionContext context) {
+      // This will throw an exception because the cache is not yet created.
+      CacheFactory.getAnyInstance();
+    }
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionExecutionDUnitTest.java
index 3d35509..e6fccd8 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MultiRegionFunctionExecutionDUnitTest.java
@@ -35,6 +35,7 @@ import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.partition.PartitionRegionHelper;
 import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.test.dunit.Host;
@@ -155,9 +156,19 @@ public class MultiRegionFunctionExecutionDUnitTest extends JUnit4CacheTestCase {
     }).getResult();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties props = super.getDistributedSystemProperties();
+    props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.MultiRegionFunctionExecutionDUnitTest*"
+            + ";org.apache.geode.test.dunit.**" + ";org.apache.geode.test.junit.rules.**"
+            + ";com.sun.proxy.**");
+    return props;
+  }
+
   public void createCache() {
     try {
-      Properties props = new Properties();
+      Properties props = getDistributedSystemProperties();
       DistributedSystem ds = getSystem(props);
       assertNotNull(ds);
       ds.disconnect();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/OnGroupsFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/OnGroupsFunctionExecutionDUnitTest.java
index 6be9980..4e3bb10 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/OnGroupsFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/OnGroupsFunctionExecutionDUnitTest.java
@@ -17,6 +17,9 @@ package org.apache.geode.internal.cache.execute;
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 import static org.junit.Assert.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Properties;
@@ -24,6 +27,7 @@ import java.util.Properties;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheClosedException;
 import org.apache.geode.cache.CacheFactory;
@@ -73,11 +77,13 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     });
   }
 
-  static class OnGroupsFunction extends FunctionAdapter {
+  static class OnGroupsFunction extends FunctionAdapter implements DataSerializable {
     private static final long serialVersionUID = -1032915440862585532L;
     public static final String Id = "OnGroupsFunction";
     public static int invocationCount;
 
+    public OnGroupsFunction() {}
+
     @Override
     public void execute(FunctionContext context) {
       LogWriterUtils.getLogWriter().fine("SWAP:1:executing OnGroupsFunction:" + invocationCount);
@@ -98,6 +104,16 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     public String getId() {
       return Id;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 
   private void initVM(VM vm, final String groups, final String regionName,
@@ -362,10 +378,12 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     verifyAndResetInvocationCount(vm2, 0);
   }
 
-  static class OnGroupMultiResultFunction extends FunctionAdapter {
+  static class OnGroupMultiResultFunction extends FunctionAdapter implements DataSerializable {
     private static final long serialVersionUID = 8190290175486881994L;
     public static final String Id = "OnGroupMultiResultFunction";
 
+    public OnGroupMultiResultFunction() {}
+
     @Override
     public void execute(FunctionContext context) {
       // send 5 1s
@@ -379,6 +397,16 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     public String getId() {
       return Id;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 
   @Test
@@ -451,10 +479,12 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     });
   }
 
-  static class OnGroupsExceptionFunction extends FunctionAdapter {
+  static class OnGroupsExceptionFunction extends FunctionAdapter implements DataSerializable {
     private static final long serialVersionUID = 6488843931404616442L;
     public static final String Id = "OnGroupsExceptionFunction";
 
+    public OnGroupsExceptionFunction() {}
+
     @Override
     public void execute(FunctionContext context) {
       ArrayList<String> args = (ArrayList<String>) context.getArguments();
@@ -486,6 +516,16 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
     public String getId() {
       return Id;
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 
   @Test
@@ -1164,6 +1204,9 @@ public class OnGroupsFunctionExecutionDUnitTest extends JUnit4DistributedTestCas
   }
 
   static class OnGroupsNoAckFunction extends OnGroupsFunction {
+
+    public OnGroupsNoAckFunction() {}
+
     @Override
     public boolean hasResult() {
       return false;
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerRegionFunctionExecutionSelectorNoSingleHopDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerRegionFunctionExecutionSelectorNoSingleHopDUnitTest.java
index fd7626c..ee54394 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerRegionFunctionExecutionSelectorNoSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerRegionFunctionExecutionSelectorNoSingleHopDUnitTest.java
@@ -32,6 +32,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
 import org.junit.Test;
@@ -48,6 +49,7 @@ import org.apache.geode.cache.execute.FunctionInvocationTargetException;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.RegionFunctionContext;
 import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.cache.PartitionedRegion;
@@ -79,6 +81,14 @@ public class PRClientServerRegionFunctionExecutionSelectorNoSingleHopDUnitTest
     super();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.partitioned.PersistentPartitionedRegionDUnitTest$TestFunction");
+    return result;
+  }
+
   /*
    * Execution of the function on server with
    */
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerTestBase.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerTestBase.java
index e98da5e..d2199bd 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerTestBase.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRClientServerTestBase.java
@@ -45,6 +45,7 @@ import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.internal.AvailablePort;
 import org.apache.geode.internal.cache.functions.TestFunction;
@@ -592,6 +593,8 @@ public class PRClientServerTestBase extends JUnit4CacheTestCase {
 
   private void createCacheInClientServer() {
     Properties props = new Properties();
+    props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.functions.TestFunction;org.apache.geode.internal.cache.execute.**");
     server1.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
 
     server2.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
@@ -599,10 +602,9 @@ public class PRClientServerTestBase extends JUnit4CacheTestCase {
 
     server3.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
 
-    Properties props2 = new Properties();
-    props2.setProperty(MCAST_PORT, "0");
-    props2.setProperty(LOCATORS, "");
-    client.invoke(() -> PRClientServerTestBase.createCacheInVm(props2));
+    props.setProperty(MCAST_PORT, "0");
+    props.setProperty(LOCATORS, "");
+    client.invoke(() -> PRClientServerTestBase.createCacheInVm(props));
   }
 
   public static void createCacheInVm(Properties props) {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRColocationDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRColocationDUnitTest.java
index 7b0f3b1..2eb737f 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRColocationDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRColocationDUnitTest.java
@@ -30,6 +30,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
 import org.junit.Test;
@@ -53,6 +54,7 @@ import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.RegionFunctionContext;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.ColocationHelper;
 import org.apache.geode.internal.cache.PartitionedRegion;
@@ -1610,6 +1612,17 @@ public class PRColocationDUnitTest extends JUnit4CacheTestCase {
     accessor.invoke(() -> PRColocationDUnitTest.executeFunction());
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.execute.**" + ";org.apache.geode.test.dunit.**"
+            + ";org.apache.geode.test.junit.**"
+            + ";org.apache.geode.internal.cache.execute.data.CustId"
+            + ";org.apache.geode.internal.cache.execute.data.Customer");
+    return result;
+  }
+
   @Test
   public void testColocatedPRRedundancyRecovery2() throws Throwable {
     createCacheInAllVms();
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRFunctionExecutionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRFunctionExecutionDUnitTest.java
index 8882993..7e97c99 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRFunctionExecutionDUnitTest.java
@@ -53,6 +53,7 @@ import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.RegionFunctionContext;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.cache.partition.PartitionRegionHelper;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.DM;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -98,6 +99,16 @@ public class PRFunctionExecutionDUnitTest extends PartitionedRegionDUnitTestCase
     regionName = null;
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.test.junit.rules.**;org.apache.geode.internal.cache.PartitionedRegionDUnitTestCase;org.apache.geode.internal.cache.execute.**;org.apache.geode.internal.cache.functions.**;org.apache.geode.test.dunit.**");
+    return result;
+  }
+
+
+
   /**
    * Test to validate that the function execution is successful on PR with Loner Distributed System
    */
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/TestFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/TestFunction.java
index 52ecaf7..8260ba8 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/TestFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/TestFunction.java
@@ -14,16 +14,23 @@
  */
 package org.apache.geode.internal.cache.execute;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
+import java.util.Iterator;
+import java.util.Map;
 import java.util.Properties;
 
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.LogWriter;
 import org.apache.geode.cache.execute.FunctionAdapter;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
-public class TestFunction extends FunctionAdapter {
+public class TestFunction extends FunctionAdapter implements DataSerializable {
 
   public static final String TEST_FUNCTION1 = "TestFunction1";
 
@@ -137,4 +144,20 @@ public class TestFunction extends FunctionAdapter {
   public void init(Properties props) {
     this.props.putAll(props);
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+    DataSerializer.writeHashMap(this.props, out);
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+    Map map = DataSerializer.readHashMap(in);
+    if (map != null) {
+      for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
+        Map.Entry entry = (Map.Entry) it.next();
+        props.put(entry.getKey(), entry.getValue());
+      }
+    }
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockCacheExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockCacheExtensionFunction.java
index 1e6d448..a6e3f67 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockCacheExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockCacheExtensionFunction.java
@@ -17,6 +17,11 @@ package org.apache.geode.internal.cache.extension.mock;
 
 import static org.apache.geode.internal.cache.extension.mock.MockExtensionXmlParser.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -38,7 +43,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class AlterMockCacheExtensionFunction extends FunctionAdapter {
+public class AlterMockCacheExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
 
@@ -86,4 +91,14 @@ public class AlterMockCacheExtensionFunction extends FunctionAdapter {
   public static Object[] toArgs(final String value) {
     return new Object[] {value};
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockRegionExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockRegionExtensionFunction.java
index b9a451a..95e58cb 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockRegionExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/AlterMockRegionExtensionFunction.java
@@ -15,6 +15,11 @@
 
 package org.apache.geode.internal.cache.extension.mock;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -49,7 +54,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class AlterMockRegionExtensionFunction extends FunctionAdapter {
+public class AlterMockRegionExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
 
@@ -100,4 +105,14 @@ public class AlterMockRegionExtensionFunction extends FunctionAdapter {
   public static Object[] toArgs(final String regionName, final String value) {
     return new Object[] {regionName, value};
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockCacheExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockCacheExtensionFunction.java
index 98152cf..a9f8788 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockCacheExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockCacheExtensionFunction.java
@@ -17,6 +17,11 @@ package org.apache.geode.internal.cache.extension.mock;
 
 import static org.apache.geode.internal.cache.extension.mock.MockExtensionXmlParser.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -37,7 +42,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class CreateMockCacheExtensionFunction extends FunctionAdapter {
+public class CreateMockCacheExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
 
@@ -83,4 +88,14 @@ public class CreateMockCacheExtensionFunction extends FunctionAdapter {
   public static Object[] toArgs(final String value) {
     return new Object[] {value};
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockRegionExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockRegionExtensionFunction.java
index 1e8b50e..8e19773 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockRegionExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/CreateMockRegionExtensionFunction.java
@@ -15,6 +15,11 @@
 
 package org.apache.geode.internal.cache.extension.mock;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -48,7 +53,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class CreateMockRegionExtensionFunction extends FunctionAdapter {
+public class CreateMockRegionExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
 
@@ -98,4 +103,13 @@ public class CreateMockRegionExtensionFunction extends FunctionAdapter {
     return new Object[] {regionName, value};
   }
 
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockCacheExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockCacheExtensionFunction.java
index 1a455a6..c2d00d7 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockCacheExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockCacheExtensionFunction.java
@@ -17,6 +17,11 @@ package org.apache.geode.internal.cache.extension.mock;
 
 import static org.apache.geode.internal.cache.extension.mock.MockExtensionXmlParser.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -38,7 +43,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class DestroyMockCacheExtensionFunction extends FunctionAdapter {
+public class DestroyMockCacheExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
 
@@ -85,4 +90,14 @@ public class DestroyMockCacheExtensionFunction extends FunctionAdapter {
   public static Object[] toArgs(final String value) {
     return new Object[] {value};
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockRegionExtensionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockRegionExtensionFunction.java
index 117d509..b941617 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockRegionExtensionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/extension/mock/DestroyMockRegionExtensionFunction.java
@@ -15,6 +15,11 @@
 
 package org.apache.geode.internal.cache.extension.mock;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
@@ -47,7 +52,7 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
  *
  * @since GemFire 8.1
  */
-public class DestroyMockRegionExtensionFunction extends FunctionAdapter {
+public class DestroyMockRegionExtensionFunction implements Function, DataSerializable {
 
   private static final long serialVersionUID = 1L;
   public static final Function INSTANCE = new DestroyMockRegionExtensionFunction();
@@ -95,4 +100,14 @@ public class DestroyMockRegionExtensionFunction extends FunctionAdapter {
   public static Object[] toArgs(final String regionName) {
     return new Object[] {regionName};
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/functions/FireAndForgetFunctionOnAllServers.java b/geode-core/src/test/java/org/apache/geode/internal/cache/functions/FireAndForgetFunctionOnAllServers.java
index f292f1a..f2937bf 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/functions/FireAndForgetFunctionOnAllServers.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/functions/FireAndForgetFunctionOnAllServers.java
@@ -14,6 +14,11 @@
  */
 package org.apache.geode.internal.cache.functions;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.geode.DataSerializable;
 import org.apache.geode.LogWriter;
 import org.apache.geode.cache.*;
 import org.apache.geode.cache.execute.Function;
@@ -25,7 +30,9 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem;
  * Function for Executing a fire-and-forget function on all servers as opposed to only executing on
  * the ones the client is currently connected to.
  */
-public class FireAndForgetFunctionOnAllServers implements Function {
+public class FireAndForgetFunctionOnAllServers implements Function, DataSerializable {
+
+  public FireAndForgetFunctionOnAllServers() {}
 
   public static final String ID = FireAndForgetFunctionOnAllServers.class.getName();
 
@@ -70,4 +77,14 @@ public class FireAndForgetFunctionOnAllServers implements Function {
   public boolean isHA() {
     return false;
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/functions/TestFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/functions/TestFunction.java
index 7f7a56a..3dba253 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/functions/TestFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/functions/TestFunction.java
@@ -14,6 +14,9 @@
  */
 package org.apache.geode.internal.cache.functions;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -24,6 +27,8 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.CancellationException;
 
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.LogWriter;
 import org.apache.geode.cache.*;
 import org.apache.geode.cache.control.RebalanceFactory;
@@ -50,7 +55,7 @@ import org.apache.geode.internal.cache.xmlcache.Declarable2;
 import org.apache.geode.test.dunit.Wait;
 import org.apache.geode.test.dunit.WaitCriterion;
 
-public class TestFunction extends FunctionAdapter implements Declarable2 {
+public class TestFunction extends FunctionAdapter implements Declarable2, DataSerializable {
   public static final String TEST_FUNCTION10 = "TestFunction10";
   public static final String TEST_FUNCTION9 = "TestFunction9";
   public static final String TEST_FUNCTION8 = "TestFunction8";
@@ -1092,4 +1097,19 @@ public class TestFunction extends FunctionAdapter implements Declarable2 {
     return Boolean.valueOf(this.props.getProperty(HAVE_RESULTS)).booleanValue();
   }
 
+  @Override
+  public void toData(DataOutput out) throws IOException {
+    DataSerializer.writeHashMap(this.props, out);
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+    Map map = DataSerializer.readHashMap(in);
+    if (map != null) {
+      for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
+        Map.Entry entry = (Map.Entry) it.next();
+        props.put(entry.getKey(), entry.getValue());
+      }
+    }
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/ConflatableObject.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/ConflatableObject.java
index eda00d6..7acb63f 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ha/ConflatableObject.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ha/ConflatableObject.java
@@ -14,8 +14,13 @@
  */
 package org.apache.geode.internal.cache.ha;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
 
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.internal.cache.Conflatable;
 import org.apache.geode.internal.cache.EventID;
 
@@ -25,7 +30,7 @@ import org.apache.geode.internal.cache.EventID;
  *
  *
  */
-public class ConflatableObject implements Conflatable, Serializable {
+public class ConflatableObject implements Conflatable, DataSerializable {
 
   /** The key for this entry */
   private Object key;
@@ -187,4 +192,22 @@ public class ConflatableObject implements Conflatable, Serializable {
   void setValue(Object value) {
     this.value = value;
   }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+    DataSerializer.writeObject(key, out);
+    DataSerializer.writeObject(value, out);
+    DataSerializer.writeObject(id, out);
+    out.writeBoolean(conflate);
+    out.writeUTF(regionname);
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+    this.key = DataSerializer.readObject(in);
+    this.value = DataSerializer.readObject(in);
+    this.id = DataSerializer.readObject(in);
+    this.conflate = in.readBoolean();
+    this.regionname = in.readUTF();
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
index dad51c4..5cfac92 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
@@ -71,6 +71,7 @@ import org.apache.geode.cache.persistence.RevokeFailedException;
 import org.apache.geode.cache.persistence.RevokedPersistentDataException;
 import org.apache.geode.cache.query.QueryException;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
@@ -563,6 +564,15 @@ public class PersistentPartitionedRegionDUnitTest extends PersistentPartitionedR
     });
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.partitioned.PersistentPartitionedRegionDUnitTest$TestFunction");
+    return result;
+
+  }
+
   /**
    * Test that we wait for missing data to come back if the redundancy was 0.
    */
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
index 49e3a15..f9d1b7e 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -26,6 +27,7 @@ import org.apache.geode.cache.DuplicatePrimaryPartitionException;
 import org.apache.geode.cache.EntryNotFoundException;
 import org.apache.geode.cache.FixedPartitionAttributes;
 import org.apache.geode.cache.partition.PartitionNotAvailableException;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.Assert;
 import org.apache.geode.test.dunit.AsyncInvocation;
 import org.apache.geode.test.dunit.Host;
@@ -662,6 +664,16 @@ public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.internal.cache.partitioned.fixed.MyDate3");
+    return result;
+
+  }
+
+
   /**
    * This tests validate that datastore member tries the put with callback on itself as well as
    * other datastores as per primary FixedPartitionAttributes defined on datastores. here CallBack
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningTestBase.java b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningTestBase.java
index 3b8f4a1..707b19a 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningTestBase.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/fixed/FixedPartitioningTestBase.java
@@ -51,6 +51,7 @@ import org.apache.geode.cache.control.RebalanceOperation;
 import org.apache.geode.cache.control.RebalanceResults;
 import org.apache.geode.cache.control.ResourceManager;
 import org.apache.geode.cache.partition.PartitionRegionHelper;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
@@ -145,6 +146,7 @@ public class FixedPartitioningTestBase extends JUnit4DistributedTestCase {
   private void createCache() {
     try {
       Properties props = new Properties();
+      props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, "*");
       cache = null;
       DistributedSystem ds = getSystem(props);
       assertNotNull(ds);
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
index 6bb660a..5f39e8b 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
@@ -19,6 +19,8 @@ import static org.apache.geode.test.dunit.Assert.assertFalse;
 import static org.apache.geode.test.dunit.Assert.assertTrue;
 import static org.apache.geode.test.dunit.Assert.fail;
 
+import java.io.DataInput;
+import java.io.DataOutput;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -45,6 +47,7 @@ import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.DataPolicy;
@@ -1684,6 +1687,10 @@ public class RollingUpgrade2DUnitTest extends JUnit4DistributedTestCase {
 
   public static Cache createCache(Properties systemProperties) throws Exception {
     systemProperties.setProperty(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+    if (Version.CURRENT_ORDINAL < 75) {
+      systemProperties.remove("validate-serializable-objects");
+      systemProperties.remove("serializable-object-filter");
+    }
     CacheFactory cf = new CacheFactory(systemProperties);
     return cf.create();
   }
@@ -1978,7 +1985,9 @@ public class RollingUpgrade2DUnitTest extends JUnit4DistributedTestCase {
     return ccp.getHARegion().getName();
   }
 
-  public static class GetDataSerializableFunction implements Function {
+  public static class GetDataSerializableFunction implements Function, DataSerializable {
+
+    public GetDataSerializableFunction() {}
 
     @Override
     public void execute(FunctionContext context) {
@@ -1996,5 +2005,15 @@ public class RollingUpgrade2DUnitTest extends JUnit4DistributedTestCase {
     public String getId() {
       return GetDataSerializableFunction.class.getName();
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+
+    }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientProxyWithDeltaTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientProxyWithDeltaTest.java
index 5edc49e..62e8be2 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientProxyWithDeltaTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientProxyWithDeltaTest.java
@@ -36,6 +36,7 @@ import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.Delta;
 import org.apache.geode.cache.CacheFactory;
@@ -271,12 +272,14 @@ public class ClientProxyWithDeltaTest implements Serializable {
   /**
    * Object that implements {@code Delta} for use in {@code Cache}.
    */
-  private static class DeltaEnabledObject implements Delta, Serializable {
+  private static class DeltaEnabledObject implements Delta, DataSerializable {
 
     private static final AtomicBoolean fromDeltaInvoked = new AtomicBoolean();
 
     private int value = 0;
 
+    public DeltaEnabledObject() {}
+
     public void setValue(int value) {
       this.value = value;
     }
@@ -304,5 +307,15 @@ public class ClientProxyWithDeltaTest implements Serializable {
     static boolean fromDeltaInvoked() {
       return fromDeltaInvoked.get();
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeInt(value);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      value = in.readInt();
+    }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
index d3b97b8..d0b5182 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilDUnitTest.java
@@ -15,8 +15,17 @@
 
 package org.apache.geode.management.internal.cli;
 
+import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.Arrays;
 import java.util.Properties;
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java
index 5714829..ffbd908 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java
@@ -156,7 +156,7 @@ public abstract class CliCommandTestBase extends JUnit4CacheTestCase {
   protected Object[] setUpJMXManagerOnVM(int vm, final Properties props, String jsonFile) {
     Object[] result = Host.getHost(0).getVM(vm).invoke("setUpJmxManagerOnVm" + vm, () -> {
       final Object[] results = new Object[3];
-      final Properties localProps = (props != null ? props : new Properties());
+      final Properties localProps = (props != null ? props : getDistributedSystemProperties());
 
       try {
         this.jmxHost = InetAddress.getLocalHost().getHostName();
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
index 4d2c0b9..4e273db 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
@@ -53,6 +53,7 @@ import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.cache.query.internal.CompiledValue;
 import org.apache.geode.cache.query.internal.QCompiler;
 import org.apache.geode.cache.util.CacheListenerAdapter;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalCache;
@@ -132,10 +133,18 @@ public class GemfireDataCommandsDUnitTest extends CliCommandTestBase {
     return cache.getDistributedSystem().getDistributedMember().getId();
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties properties = super.getDistributedSystemProperties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.management.internal.cli.dto.**");
+    return properties;
+  }
+
   void setupForGetPutRemoveLocateEntry(String testName) {
     final VM vm1 = Host.getHost(0).getVM(1);
     final VM vm2 = Host.getHost(0).getVM(2);
-    Properties props = new Properties();
+    Properties props = getDistributedSystemProperties();
     props.setProperty(NAME, testName + "Manager");
     HeadlessGfsh gfsh = setUpJmxManagerOnVm0ThenConnect(props);
     assertNotNull(gfsh);
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationDUnitTest.java
index 779a5aa..3275c87 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationDUnitTest.java
@@ -32,13 +32,16 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import org.apache.geode.cache.operations.OperationContext.OperationCode;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
 import org.apache.geode.security.generator.AuthzCredentialGenerator;
 import org.apache.geode.security.generator.CredentialGenerator;
 import org.apache.geode.security.generator.DummyCredentialGenerator;
 import org.apache.geode.security.generator.XmlAuthzCredentialGenerator;
 import org.apache.geode.security.templates.UserPasswordAuthInit;
+import org.apache.geode.security.templates.UsernamePrincipal;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.standalone.VersionManager;
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationTestCase.java b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationTestCase.java
index 9509f6c..bc42f3e 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationTestCase.java
@@ -71,8 +71,11 @@ import org.apache.geode.cache.query.QueryInvocationTargetException;
 import org.apache.geode.cache.query.QueryService;
 import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.Struct;
+import org.apache.geode.distributed.ConfigurationProperties;
+import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.internal.AvailablePort.Keeper;
 import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.LocalRegion;
 import org.apache.geode.internal.cache.entries.AbstractRegionEntry;
 import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
@@ -81,6 +84,7 @@ import org.apache.geode.security.generator.AuthzCredentialGenerator.ClassCode;
 import org.apache.geode.security.generator.CredentialGenerator;
 import org.apache.geode.security.generator.DummyCredentialGenerator;
 import org.apache.geode.security.generator.XmlAuthzCredentialGenerator;
+import org.apache.geode.security.templates.UsernamePrincipal;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.WaitCriterion;
@@ -214,6 +218,10 @@ public abstract class ClientAuthorizationTestCase extends JUnit4DistributedTestC
         authProps.setProperty(SECURITY_CLIENT_ACCESSOR, accessor);
       }
     }
+    if (Version.CURRENT_ORDINAL >= 75) {
+      authProps.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+          UsernamePrincipal.class.getName());
+    }
     return concatProperties(new Properties[] {authProps, extraAuthProps, extraAuthzProps});
   }
 
@@ -231,7 +239,13 @@ public abstract class ClientAuthorizationTestCase extends JUnit4DistributedTestC
     if (locatorPort == 0) {
       locatorPort = getRandomAvailablePort(SOCKET);
     }
-    return SecurityTestUtils.createCacheServer(authProps, javaProps, locatorPort, null, serverPort,
+    Properties jprops = javaProps;
+    if (jprops == null) {
+      jprops = new Properties();
+    }
+    jprops.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.security.templates.UsernamePrincipal");
+    return SecurityTestUtils.createCacheServer(authProps, jprops, locatorPort, null, serverPort,
         true, NO_EXCEPTION);
   }
 
@@ -791,18 +805,29 @@ public abstract class ClientAuthorizationTestCase extends JUnit4DistributedTestC
 
         Properties clientProps =
             concatProperties(new Properties[] {opCredentials, extraAuthProps, extraAuthzProps});
+
         // Start the client with valid credentials but allowed or disallowed to perform an operation
         System.out.println("executeOpBlock: For client" + clientNum + credentialsTypeStr
             + " credentials: " + opCredentials);
         boolean setupDynamicRegionFactory = (opFlags & OpFlags.ENABLE_DRF) > 0;
 
         if (useThisVM) {
+          clientProps.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+              "org.apache.geode.security.templates.UsernamePrincipal");
           SecurityTestUtils.createCacheClientWithDynamicRegion(authInit, clientProps, javaProps, 0,
               setupDynamicRegionFactory, NO_EXCEPTION);
         } else {
-          clientVM.invoke("SecurityTestUtils.createCacheClientWithDynamicRegion",
-              () -> SecurityTestUtils.createCacheClientWithDynamicRegion(authInit, clientProps,
-                  javaProps, 0, setupDynamicRegionFactory, NO_EXCEPTION));
+          clientVM.invoke("SecurityTestUtils.createCacheClientWithDynamicRegion", () -> {
+            try {
+              DistributionConfig.class.getDeclaredMethod("getSerializableObjectFilter");
+              clientProps.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+                  "org.apache.geode.security.templates.UsernamePrincipal");
+            } catch (NoSuchMethodException e) {
+              // running an old version of Geode
+            }
+            SecurityTestUtils.createCacheClientWithDynamicRegion(authInit, clientProps, javaProps,
+                0, setupDynamicRegionFactory, NO_EXCEPTION);
+          });
         }
       }
 
diff --git a/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtil.java b/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtil.java
index 1a1e105..6b4c592 100644
--- a/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtil.java
+++ b/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtil.java
@@ -18,6 +18,7 @@ package org.apache.geode.security;
 import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
 import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_CLIENT_AUTH_INIT;
+import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.util.Properties;
@@ -28,6 +29,7 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.cache.client.ClientCache;
 import org.apache.geode.cache.client.ClientCacheFactory;
 import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.internal.Version;
 import org.apache.geode.security.templates.UserPasswordAuthInit;
 
 public class SecurityTestUtil {
@@ -39,6 +41,9 @@ public class SecurityTestUtil {
     props.setProperty(SECURITY_CLIENT_AUTH_INIT, UserPasswordAuthInit.class.getName());
     props.setProperty(LOCATORS, "");
     props.setProperty(MCAST_PORT, "0");
+    if (Version.CURRENT.ordinal() >= 75) {
+      props.setProperty(SERIALIZABLE_OBJECT_FILTER, "org.apache.geode.security.query.data.*");
+    }
     ClientCache cache = new ClientCacheFactory(props).setPoolSubscriptionEnabled(true)
         .addPoolServer("localhost", serverPort).create();
     return cache;
diff --git a/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtils.java b/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtils.java
index 828210c..c222277 100644
--- a/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtils.java
+++ b/geode-core/src/test/java/org/apache/geode/security/SecurityTestUtils.java
@@ -73,12 +73,15 @@ import org.apache.geode.cache.query.Query;
 import org.apache.geode.cache.query.QueryInvocationTargetException;
 import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.Locator;
 import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.Version;
 import org.apache.geode.pdx.PdxReader;
 import org.apache.geode.pdx.PdxSerializable;
 import org.apache.geode.pdx.PdxWriter;
+import org.apache.geode.security.templates.UsernamePrincipal;
 import org.apache.geode.test.dunit.WaitCriterion;
 import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
 
@@ -350,6 +353,10 @@ public class SecurityTestUtils {
     authProps.setProperty(MCAST_PORT, "0");
     authProps.setProperty(LOCATORS, "");
     authProps.setProperty(SECURITY_LOG_LEVEL, "finest");
+    if (Version.CURRENT_ORDINAL >= 75) {
+      authProps.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+          UsernamePrincipal.class.getName());
+    }
     // TODO (ashetkar) Add " && (!multiUserAuthMode)" below.
     if (authInitModule != null) {
       authProps.setProperty(SECURITY_CLIENT_AUTH_INIT, authInitModule);
@@ -490,6 +497,11 @@ public class SecurityTestUtils {
           String.valueOf(DistributionConfig.DEFAULT_DURABLE_CLIENT_TIMEOUT));
     }
 
+    if (Version.CURRENT.ordinal() >= 75) {
+      props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+          "org.apache.geode.security.templates.UsernamePrincipal");
+    }
+
     SecurityTestUtils tmpInstance = new SecurityTestUtils("temp");
     tmpInstance.createSystem(props, javaProps);
 
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/DistributedTestUtils.java b/geode-core/src/test/java/org/apache/geode/test/dunit/DistributedTestUtils.java
index 0eb3a94..7c9f72d 100755
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/DistributedTestUtils.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/DistributedTestUtils.java
@@ -28,6 +28,7 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper;
 import org.apache.geode.internal.InternalDataSerializer;
 import org.apache.geode.internal.InternalInstantiator;
+import org.apache.geode.internal.Version;
 
 /**
  * {@code DistributedTestUtils} provides static utility methods that affect the runtime environment
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java b/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java
index d0fe3d5..fdd41c5 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java
@@ -15,6 +15,7 @@
 package org.apache.geode.test.dunit.cache.internal;
 
 import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER;
 import static org.apache.geode.distributed.internal.DistributionConfig.GEMFIRE_PREFIX;
 
 import java.io.File;
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
index c58df8d..638b1e6 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
@@ -51,6 +51,7 @@ import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionMessageObserver;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.admin.ClientStatsManager;
 import org.apache.geode.internal.cache.CacheServerLauncher;
 import org.apache.geode.internal.cache.DiskStoreObserver;
@@ -177,6 +178,10 @@ public abstract class JUnit4DistributedTestCase implements DistributedTestFixtur
         String oldStatFile = p.getProperty(STATISTIC_ARCHIVE_FILE);
         p.put(STATISTIC_ARCHIVE_FILE, oldStatFile.replace("statArchive.gfs", testName + ".gfs"));
       }
+      if (Version.CURRENT_ORDINAL < 75) {
+        p.remove("validate-serializable-objects");
+        p.remove("serializable-object-filter");
+      }
       system = (InternalDistributedSystem) DistributedSystem.connect(p);
       lastSystemProperties = p;
 
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
index fdc50ad..8eb7257 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
@@ -21,6 +21,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
 import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
 import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.ConfigurationProperties.VALIDATE_SERIALIZABLE_OBJECTS;
 import static org.apache.geode.distributed.internal.DistributionConfig.GEMFIRE_PREFIX;
 
 import java.io.BufferedReader;
@@ -61,6 +62,7 @@ import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalLocator;
 import org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave;
 import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.test.dunit.DUnitEnv;
 import org.apache.geode.test.dunit.Host;
@@ -253,6 +255,7 @@ public class DUnitLauncher {
     p.setProperty(MCAST_PORT, "0");
     p.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
     p.setProperty(USE_CLUSTER_CONFIGURATION, "false");
+    p.setProperty(VALIDATE_SERIALIZABLE_OBJECTS, "true");
     p.setProperty(LOG_LEVEL, logLevel);
     return p;
   }
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
index 5f4447e..06c4c7d 100755
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
@@ -36,6 +36,7 @@ import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalLocator;
 import org.apache.geode.test.dunit.VM;
@@ -253,6 +254,8 @@ public class ProcessManager {
     cmds.add("-D" + DistributionConfig.GEMFIRE_PREFIX + "DEFAULT_MAX_OPLOG_SIZE=10");
     cmds.add("-D" + DistributionConfig.GEMFIRE_PREFIX + "disallowMcastDefaults=true");
     cmds.add("-D" + DistributionConfig.RESTRICT_MEMBERSHIP_PORT_RANGE + "=true");
+    cmds.add("-D" + DistributionConfig.GEMFIRE_PREFIX
+        + ConfigurationProperties.VALIDATE_SERIALIZABLE_OBJECTS + "=true");
     cmds.add("-ea");
     cmds.add("-XX:MetaspaceSize=512m");
     cmds.add("-XX:+PrintGC");
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index d218f77..abf32d6 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -1,127 +1,58 @@
-org.apache.geode.internal.security.SecurableCommunicationChannel
-org/apache/geode/admin/internal/BackupStatusImpl
-org/apache/geode/cache/operations/CloseCQOperationContext
-org/apache/geode/cache/operations/DestroyOperationContext
-org/apache/geode/cache/operations/ExecuteCQOperationContext
-org/apache/geode/cache/operations/ExecuteFunctionOperationContext
-org/apache/geode/cache/operations/GetDurableCQsOperationContext
-org/apache/geode/cache/operations/GetOperationContext
-org/apache/geode/cache/operations/InterestOperationContext
-org/apache/geode/cache/operations/InvalidateOperationContext
-org/apache/geode/cache/operations/KeyOperationContext
-org/apache/geode/cache/operations/KeySetOperationContext
-org/apache/geode/cache/operations/KeyValueOperationContext
-org/apache/geode/cache/operations/OperationContext
-org/apache/geode/cache/operations/PutAllOperationContext
-org/apache/geode/cache/operations/PutOperationContext
-org/apache/geode/cache/operations/QueryOperationContext
-org/apache/geode/cache/operations/RegionClearOperationContext
-org/apache/geode/cache/operations/RegionCreateOperationContext
-org/apache/geode/cache/operations/RegionDestroyOperationContext
-org/apache/geode/cache/operations/RegionOperationContext
-org/apache/geode/cache/operations/RegisterInterestOperationContext
-org/apache/geode/cache/operations/RemoveAllOperationContext
-org/apache/geode/cache/operations/StopCQOperationContext
-org/apache/geode/cache/operations/UnregisterInterestOperationContext
-org/apache/geode/cache/operations/internal/GetOperationContextImpl
+org/apache/geode/GemFireCacheException
+org/apache/geode/admin/AlertLevel
 org/apache/geode/cache/operations/internal/UpdateOnlyMap
-org/apache/geode/cache/query/CqAttributesFactory
-org/apache/geode/cache/query/internal/index/CompactRangeIndex
 org/apache/geode/cache/query/internal/index/CompactRangeIndex$1
-org/apache/geode/cache/query/internal/index/CompactRangeIndex$IMQEvaluator$1
-org/apache/geode/distributed/LocatorLauncher
 org/apache/geode/distributed/LocatorLauncher$Command
-org/apache/geode/distributed/ServerLauncher
 org/apache/geode/distributed/ServerLauncher$Command
 org/apache/geode/distributed/internal/DistributionConfigImpl
-org/apache/geode/distributed/internal/DistributionManager
+org/apache/geode/distributed/internal/OverflowQueueWithDMStats
+org/apache/geode/distributed/internal/ThrottlingMemLinkedQueueWithDMStats
+org/apache/geode/distributed/internal/membership/gms/messenger/JGAddress
+org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager$BoundedLinkedHashMap
 org/apache/geode/distributed/internal/tcpserver/LocatorCancelException
+org/apache/geode/internal/AbstractConfig$SortedProperties
 org/apache/geode/internal/AvailablePort$Keeper
 org/apache/geode/internal/ExitCode
 org/apache/geode/internal/JarDeployer
+org/apache/geode/internal/ObjIdConcurrentMap
+org/apache/geode/internal/ObjIdConcurrentMap$Segment
 org/apache/geode/internal/cache/backup/BackupLock
-org/apache/geode/internal/cache/DiskStoreAttributesCreation
 org/apache/geode/internal/cache/DiskStoreMonitor$DiskState
-org/apache/geode/internal/cache/EventStateHelper
 org/apache/geode/internal/cache/InitialImageOperation$GIITestHook
 org/apache/geode/internal/cache/Oplog$OPLOG_TYPE
 org/apache/geode/internal/cache/UserSpecifiedDiskStoreAttributes
 org/apache/geode/internal/cache/client/protocol/exception/ServiceLoadingFailureException
 org/apache/geode/internal/cache/client/protocol/exception/ServiceVersionNotFoundException
-org/apache/geode/internal/cache/operations/ContainsKeyOperationContext
+org/apache/geode/internal/cache/UserSpecifiedDiskStoreAttributes
+org/apache/geode/internal/cache/client/protocol/exception/ServiceLoadingFailureException
+org/apache/geode/internal/cache/client/protocol/exception/ServiceVersionNotFoundException
 org/apache/geode/internal/cache/tier/CommunicationMode
 org/apache/geode/internal/cache/tier/InternalClientMembership$EventType
 org/apache/geode/internal/cache/tier/sockets/ClientUpdateMessageImpl$ClientCqConcurrentMap
 org/apache/geode/internal/cache/tier/sockets/ClientUpdateMessageImpl$CqNameToOpHashMap
+org/apache/geode/internal/cache/xmlcache/DiskStoreAttributesCreation
+org/apache/geode/internal/cache/xmlcache/RegionAttributesCreation
 org/apache/geode/internal/datasource/FacetsJCAConnectionManagerImpl
 org/apache/geode/internal/exception/InvalidExecutionContextException
-org/apache/geode/internal/logging/GemFireLevel
-org/apache/geode/internal/logging/LogWriterImpl
-org/apache/geode/internal/logging/LoggingThreadGroup
-org/apache/geode/internal/logging/log4j/ConfigurableLogger
-org/apache/geode/internal/logging/log4j/CustomGemFireLogger
-org/apache/geode/internal/logging/log4j/ExtendedGemFireLogger
+org/apache/geode/internal/hll/HyperLogLog
+org/apache/geode/internal/hll/HyperLogLog$Builder
+org/apache/geode/internal/hll/HyperLogLog$HyperLogLogMergeException
+org/apache/geode/internal/hll/HyperLogLog$SerializationHolder
+org/apache/geode/internal/hll/HyperLogLogPlus
+org/apache/geode/internal/hll/HyperLogLogPlus$Builder
+org/apache/geode/internal/hll/HyperLogLogPlus$Format
+org/apache/geode/internal/hll/HyperLogLogPlus$HyperLogLogPlusMergeException
+org/apache/geode/internal/hll/HyperLogLogPlus$SerializationHolder
 org/apache/geode/internal/logging/log4j/FastLogger
 org/apache/geode/internal/logging/log4j/LocalizedMessage
-org/apache/geode/internal/logging/log4j/LogWriterAppenders
 org/apache/geode/internal/logging/log4j/LogWriterAppenders$Identifier
 org/apache/geode/internal/logging/log4j/LogWriterLogger
 org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessage
 org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessageFactory
-org/apache/geode/internal/memcached/Command
-org/apache/geode/internal/memcached/Command$1
-org/apache/geode/internal/memcached/Command$10
-org/apache/geode/internal/memcached/Command$11
-org/apache/geode/internal/memcached/Command$12
-org/apache/geode/internal/memcached/Command$13
-org/apache/geode/internal/memcached/Command$14
-org/apache/geode/internal/memcached/Command$15
-org/apache/geode/internal/memcached/Command$16
-org/apache/geode/internal/memcached/Command$17
-org/apache/geode/internal/memcached/Command$18
-org/apache/geode/internal/memcached/Command$19
-org/apache/geode/internal/memcached/Command$2
-org/apache/geode/internal/memcached/Command$20
-org/apache/geode/internal/memcached/Command$21
-org/apache/geode/internal/memcached/Command$22
-org/apache/geode/internal/memcached/Command$23
-org/apache/geode/internal/memcached/Command$24
-org/apache/geode/internal/memcached/Command$25
-org/apache/geode/internal/memcached/Command$26
-org/apache/geode/internal/memcached/Command$27
-org/apache/geode/internal/memcached/Command$28
-org/apache/geode/internal/memcached/Command$29
-org/apache/geode/internal/memcached/Command$3
-org/apache/geode/internal/memcached/Command$30
-org/apache/geode/internal/memcached/Command$31
-org/apache/geode/internal/memcached/Command$32
-org/apache/geode/internal/memcached/Command$33
-org/apache/geode/internal/memcached/Command$34
-org/apache/geode/internal/memcached/Command$4
-org/apache/geode/internal/memcached/Command$5
-org/apache/geode/internal/memcached/Command$6
-org/apache/geode/internal/memcached/Command$7
-org/apache/geode/internal/memcached/Command$8
-org/apache/geode/internal/memcached/Command$9
 org/apache/geode/internal/offheap/RefCountChangeInfo
-org/apache/geode/internal/process/BlockingProcessStreamReader
-org/apache/geode/internal/process/ClusterConfigurationNotAvailableException
-org/apache/geode/internal/process/NonBlockingProcessStreamReader
-org/apache/geode/internal/process/ProcessStreamReader
 org/apache/geode/internal/process/ProcessStreamReader$ReadingMode
-org/apache/geode/internal/process/ProcessTerminatedAbnormallyException
 org/apache/geode/internal/process/ProcessType
-org/apache/geode/internal/process/ProcessUtils
-org/apache/geode/internal/process/SharedConfigurationNotAvailableException
 org/apache/geode/internal/process/UnableToControlProcessException
-org/apache/geode/internal/ra/GFConnectionFactoryImpl
-org/apache/geode/internal/ra/GFConnectionImpl
-org/apache/geode/internal/ra/spi/JCAManagedConnectionFactory
-org/apache/geode/internal/redis/RegionCreationException
-org/apache/geode/internal/security/GeodeSecurityUtil
-org/apache/geode/internal/security/IntegratedSecurityService
-org/apache/geode/internal/security/IntegratedSecurityService$SerializationProxy
-org/apache/geode/internal/security/SecurityService
 org/apache/geode/internal/security/shiro/GeodeAuthenticationToken
 org/apache/geode/internal/shared/NativeErrorException
 org/apache/geode/internal/shared/OSType
@@ -132,198 +63,22 @@ org/apache/geode/internal/shared/OSType$4
 org/apache/geode/internal/shared/OSType$5
 org/apache/geode/internal/shared/TCPSocketOptions
 org/apache/geode/internal/statistics/platform/LinuxProcFsStatistics$CPU
+org/apache/geode/internal/tcp/VersionedByteBufferInputStream
 org/apache/geode/internal/util/concurrent/StoppableReadWriteLock
-org/apache/geode/management/internal/BackupStatusImpl
 org/apache/geode/management/internal/cli/commands/ShowMetricsCommand$Category
 org/apache/geode/management/internal/cli/exceptions/UserErrorException
-org/apache/geode/pdx/JSONFormatter$states
-org/apache/geode/redis/internal/RedisCommandType
-org/apache/geode/redis/internal/RedisCommandType$1
-org/apache/geode/redis/internal/RedisCommandType$10
-org/apache/geode/redis/internal/RedisCommandType$100
-org/apache/geode/redis/internal/RedisCommandType$101
-org/apache/geode/redis/internal/RedisCommandType$102
-org/apache/geode/redis/internal/RedisCommandType$103
-org/apache/geode/redis/internal/RedisCommandType$104
-org/apache/geode/redis/internal/RedisCommandType$105
-org/apache/geode/redis/internal/RedisCommandType$106
-org/apache/geode/redis/internal/RedisCommandType$107
-org/apache/geode/redis/internal/RedisCommandType$108
-org/apache/geode/redis/internal/RedisCommandType$109
-org/apache/geode/redis/internal/RedisCommandType$11
-org/apache/geode/redis/internal/RedisCommandType$110
-org/apache/geode/redis/internal/RedisCommandType$111
-org/apache/geode/redis/internal/RedisCommandType$112
-org/apache/geode/redis/internal/RedisCommandType$113
-org/apache/geode/redis/internal/RedisCommandType$12
-org/apache/geode/redis/internal/RedisCommandType$13
-org/apache/geode/redis/internal/RedisCommandType$14
-org/apache/geode/redis/internal/RedisCommandType$15
-org/apache/geode/redis/internal/RedisCommandType$16
-org/apache/geode/redis/internal/RedisCommandType$17
-org/apache/geode/redis/internal/RedisCommandType$18
-org/apache/geode/redis/internal/RedisCommandType$19
-org/apache/geode/redis/internal/RedisCommandType$2
-org/apache/geode/redis/internal/RedisCommandType$20
-org/apache/geode/redis/internal/RedisCommandType$21
-org/apache/geode/redis/internal/RedisCommandType$22
-org/apache/geode/redis/internal/RedisCommandType$23
-org/apache/geode/redis/internal/RedisCommandType$24
-org/apache/geode/redis/internal/RedisCommandType$25
-org/apache/geode/redis/internal/RedisCommandType$26
-org/apache/geode/redis/internal/RedisCommandType$27
-org/apache/geode/redis/internal/RedisCommandType$28
-org/apache/geode/redis/internal/RedisCommandType$29
-org/apache/geode/redis/internal/RedisCommandType$3
-org/apache/geode/redis/internal/RedisCommandType$30
-org/apache/geode/redis/internal/RedisCommandType$31
-org/apache/geode/redis/internal/RedisCommandType$32
-org/apache/geode/redis/internal/RedisCommandType$33
-org/apache/geode/redis/internal/RedisCommandType$34
-org/apache/geode/redis/internal/RedisCommandType$35
-org/apache/geode/redis/internal/RedisCommandType$36
-org/apache/geode/redis/internal/RedisCommandType$37
-org/apache/geode/redis/internal/RedisCommandType$38
-org/apache/geode/redis/internal/RedisCommandType$39
-org/apache/geode/redis/internal/RedisCommandType$4
-org/apache/geode/redis/internal/RedisCommandType$40
-org/apache/geode/redis/internal/RedisCommandType$41
-org/apache/geode/redis/internal/RedisCommandType$42
-org/apache/geode/redis/internal/RedisCommandType$43
-org/apache/geode/redis/internal/RedisCommandType$44
-org/apache/geode/redis/internal/RedisCommandType$45
-org/apache/geode/redis/internal/RedisCommandType$46
-org/apache/geode/redis/internal/RedisCommandType$47
-org/apache/geode/redis/internal/RedisCommandType$48
-org/apache/geode/redis/internal/RedisCommandType$49
-org/apache/geode/redis/internal/RedisCommandType$5
-org/apache/geode/redis/internal/RedisCommandType$50
-org/apache/geode/redis/internal/RedisCommandType$51
-org/apache/geode/redis/internal/RedisCommandType$52
-org/apache/geode/redis/internal/RedisCommandType$53
-org/apache/geode/redis/internal/RedisCommandType$54
-org/apache/geode/redis/internal/RedisCommandType$55
-org/apache/geode/redis/internal/RedisCommandType$56
-org/apache/geode/redis/internal/RedisCommandType$57
-org/apache/geode/redis/internal/RedisCommandType$58
-org/apache/geode/redis/internal/RedisCommandType$59
-org/apache/geode/redis/internal/RedisCommandType$6
-org/apache/geode/redis/internal/RedisCommandType$60
-org/apache/geode/redis/internal/RedisCommandType$61
-org/apache/geode/redis/internal/RedisCommandType$62
-org/apache/geode/redis/internal/RedisCommandType$63
-org/apache/geode/redis/internal/RedisCommandType$64
-org/apache/geode/redis/internal/RedisCommandType$65
-org/apache/geode/redis/internal/RedisCommandType$66
-org/apache/geode/redis/internal/RedisCommandType$67
-org/apache/geode/redis/internal/RedisCommandType$68
-org/apache/geode/redis/internal/RedisCommandType$69
-org/apache/geode/redis/internal/RedisCommandType$7
-org/apache/geode/redis/internal/RedisCommandType$70
-org/apache/geode/redis/internal/RedisCommandType$71
-org/apache/geode/redis/internal/RedisCommandType$72
-org/apache/geode/redis/internal/RedisCommandType$73
-org/apache/geode/redis/internal/RedisCommandType$74
-org/apache/geode/redis/internal/RedisCommandType$75
-org/apache/geode/redis/internal/RedisCommandType$76
-org/apache/geode/redis/internal/RedisCommandType$77
-org/apache/geode/redis/internal/RedisCommandType$78
-org/apache/geode/redis/internal/RedisCommandType$79
-org/apache/geode/redis/internal/RedisCommandType$8
-org/apache/geode/redis/internal/RedisCommandType$80
-org/apache/geode/redis/internal/RedisCommandType$81
-org/apache/geode/redis/internal/RedisCommandType$82
-org/apache/geode/redis/internal/RedisCommandType$83
-org/apache/geode/redis/internal/RedisCommandType$84
-org/apache/geode/redis/internal/RedisCommandType$85
-org/apache/geode/redis/internal/RedisCommandType$86
-org/apache/geode/redis/internal/RedisCommandType$87
-org/apache/geode/redis/internal/RedisCommandType$88
-org/apache/geode/redis/internal/RedisCommandType$89
-org/apache/geode/redis/internal/RedisCommandType$9
-org/apache/geode/redis/internal/RedisCommandType$90
-org/apache/geode/redis/internal/RedisCommandType$91
-org/apache/geode/redis/internal/RedisCommandType$92
-org/apache/geode/redis/internal/RedisCommandType$93
-org/apache/geode/redis/internal/RedisCommandType$94
-org/apache/geode/redis/internal/RedisCommandType$95
-org/apache/geode/redis/internal/RedisCommandType$96
-org/apache/geode/redis/internal/RedisCommandType$97
-org/apache/geode/redis/internal/RedisCommandType$98
-org/apache/geode/redis/internal/RedisCommandType$99
-org/apache/geode/redis/internal/RedisCommandType,false
-org/apache/geode/redis/internal/RedisDataType
-org/apache/geode/redis/internal/RedisDataType$1
-org/apache/geode/redis/internal/RedisDataType$2
-org/apache/geode/redis/internal/RedisDataType$3
-org/apache/geode/redis/internal/RedisDataType$4
-org/apache/geode/redis/internal/RedisDataType$5
-org/apache/geode/redis/internal/RedisDataType$6
-org/apache/geode/redis/internal/RedisDataType$7
-org/apache/geode/redis/internal/RedisDataType$8
-org/apache/geode/redis/internal/executor/ListQuery
-org/apache/geode/redis/internal/executor/ListQuery$1
-org/apache/geode/redis/internal/executor/ListQuery$2
-org/apache/geode/redis/internal/executor/ListQuery$3
-org/apache/geode/redis/internal/executor/ListQuery$4
-org/apache/geode/redis/internal/executor/ListQuery$5
-org/apache/geode/redis/internal/executor/ListQuery$6
-org/apache/geode/redis/internal/executor/ListQuery$7
-org/apache/geode/redis/internal/executor/SortedSetQuery
-org/apache/geode/redis/internal/executor/SortedSetQuery$1
-org/apache/geode/redis/internal/executor/SortedSetQuery$10
-org/apache/geode/redis/internal/executor/SortedSetQuery$11
-org/apache/geode/redis/internal/executor/SortedSetQuery$12
-org/apache/geode/redis/internal/executor/SortedSetQuery$13
-org/apache/geode/redis/internal/executor/SortedSetQuery$14
-org/apache/geode/redis/internal/executor/SortedSetQuery$15
-org/apache/geode/redis/internal/executor/SortedSetQuery$16
-org/apache/geode/redis/internal/executor/SortedSetQuery$17
-org/apache/geode/redis/internal/executor/SortedSetQuery$18
-org/apache/geode/redis/internal/executor/SortedSetQuery$19
-org/apache/geode/redis/internal/executor/SortedSetQuery$2
-org/apache/geode/redis/internal/executor/SortedSetQuery$20
-org/apache/geode/redis/internal/executor/SortedSetQuery$21
-org/apache/geode/redis/internal/executor/SortedSetQuery$22
-org/apache/geode/redis/internal/executor/SortedSetQuery$23
-org/apache/geode/redis/internal/executor/SortedSetQuery$24
-org/apache/geode/redis/internal/executor/SortedSetQuery$25
-org/apache/geode/redis/internal/executor/SortedSetQuery$26
-org/apache/geode/redis/internal/executor/SortedSetQuery$27
-org/apache/geode/redis/internal/executor/SortedSetQuery$28
-org/apache/geode/redis/internal/executor/SortedSetQuery$29
-org/apache/geode/redis/internal/executor/SortedSetQuery$3
-org/apache/geode/redis/internal/executor/SortedSetQuery$30
-org/apache/geode/redis/internal/executor/SortedSetQuery$31
-org/apache/geode/redis/internal/executor/SortedSetQuery$32
-org/apache/geode/redis/internal/executor/SortedSetQuery$33
-org/apache/geode/redis/internal/executor/SortedSetQuery$34
-org/apache/geode/redis/internal/executor/SortedSetQuery$35
-org/apache/geode/redis/internal/executor/SortedSetQuery$36
-org/apache/geode/redis/internal/executor/SortedSetQuery$37
-org/apache/geode/redis/internal/executor/SortedSetQuery$38
-org/apache/geode/redis/internal/executor/SortedSetQuery$39
-org/apache/geode/redis/internal/executor/SortedSetQuery$4
-org/apache/geode/redis/internal/executor/SortedSetQuery$40
-org/apache/geode/redis/internal/executor/SortedSetQuery$41
-org/apache/geode/redis/internal/executor/SortedSetQuery$42
-org/apache/geode/redis/internal/executor/SortedSetQuery$43
-org/apache/geode/redis/internal/executor/SortedSetQuery$44
-org/apache/geode/redis/internal/executor/SortedSetQuery$45
-org/apache/geode/redis/internal/executor/SortedSetQuery$5
-org/apache/geode/redis/internal/executor/SortedSetQuery$6
-org/apache/geode/redis/internal/executor/SortedSetQuery$7
-org/apache/geode/redis/internal/executor/SortedSetQuery$8
-org/apache/geode/redis/internal/executor/SortedSetQuery$9
-org/apache/geode/redis/internal/executor/list/ListExecutor$ListDirection
-org/apache/geode/rest/internal/web/controllers/support/JSONTypes
-org/apache/geode/rest/internal/web/controllers/support/QueryResultTypes
-org/apache/geode/rest/internal/web/controllers/support/UpdateOp
-org/apache/geode/rest/internal/web/exception.GemfireRestException
-org/apache/geode/rest/internal/web/exception/MalformedJsonException
-org/apache/geode/rest/internal/web/exception/RegionNotFoundException
-org/apache/geode/rest/internal/web/exception/ResourceNotFoundException
 org/apache/geode/security/ResourcePermission
 org/apache/geode/security/ResourcePermission$Operation
 org/apache/geode/security/ResourcePermission$Resource
 org/apache/geode/security/ResourcePermission$Target
+org/apache/geode/internal/cache/PartitionedRegion$7
+org/apache/geode/internal/cache/TXFarSideCMTracker$2
+org/apache/geode/internal/cache/TXManagerImpl$1
+org/apache/geode/internal/cache/partitioned/FetchEntriesMessage$FetchEntriesResponse$1
+org/apache/geode/pdx/internal/AutoSerializableManager$1
+org/apache/geode/cache/InterestResultPolicy
+org/apache/geode/distributed/internal/DistributionConfigSnapshot
+org/apache/geode/distributed/internal/RuntimeDistributionConfigImpl
+org/apache/geode/pdx/internal/PdxInstanceEnum
+org/apache/geode/pdx/internal/PdxInstanceImpl
+org/apache/geode/pdx/internal/WritablePdxInstanceImpl
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
index 3be83db..af8c45a 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
@@ -17,4 +17,6 @@
 # these are failures from testSerializables
 
 
+# ~~~~~~~~~~~~~~~~~~~ Whitelist Testing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java b/geode-cq/src/main/java/org/apache/geode/internal/CQDistributedSystemService.java
similarity index 50%
copy from geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
copy to geode-cq/src/main/java/org/apache/geode/internal/CQDistributedSystemService.java
index 09535d5..17e9d50 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
+++ b/geode-cq/src/main/java/org/apache/geode/internal/CQDistributedSystemService.java
@@ -12,46 +12,31 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+package org.apache.geode.internal;
 
-package org.apache.geode.cache.query.internal.parse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
 
-import antlr.*;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
-import org.apache.geode.cache.query.internal.QCompiler;
-
-/**
- *
- */
-public class GemFireAST extends CommonAST {
-  private static final long serialVersionUID = 779964802274305208L;
-
-  public GemFireAST() {
-    super();
-  }
+public class CQDistributedSystemService implements DistributedSystemService {
+  @Override
+  public void init(InternalDistributedSystem internalDistributedSystem) {
 
-  public GemFireAST(Token tok) {
-    super(tok);
   }
 
   @Override
-  public String getText() {
-    String txt = super.getText();
-    if (txt == null) {
-      return "[no text]";
-    }
-    return txt;
-  }
-
-  public void compile(QCompiler compiler) {
-    childrenCompile(compiler);
+  public Class getInterface() {
+    return getClass();
   }
 
-  public void childrenCompile(QCompiler compiler) {
-    GemFireAST child = (GemFireAST) getFirstChild();
-    while (child != null) {
-      child.compile(compiler);
-      child = (GemFireAST) child.getNextSibling();
-    }
+  @Override
+  public Collection<String> getSerializationWhitelist() throws IOException {
+    URL sanctionedSerializables = ClassPathLoader.getLatest().getResource(getClass(),
+        "sanctioned-geode-cq-serializables.txt");
+    return InternalDataSerializer.loadClassNames(sanctionedSerializables);
   }
-
 }
diff --git a/geode-cq/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService b/geode-cq/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
new file mode 100644
index 0000000..8669119
--- /dev/null
+++ b/geode-cq/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
@@ -0,0 +1,16 @@
+# 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.
+org.apache.geode.internal.CQDistributedSystemService
+
diff --git a/geode-cq/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-cq/src/main/resources/org/apache/geode/internal/sanctioned-geode-cq-serializables.txt
similarity index 100%
rename from geode-cq/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
rename to geode-cq/src/main/resources/org/apache/geode/internal/sanctioned-geode-cq-serializables.txt
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/snapshot/ClientSnapshotDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/snapshot/ClientSnapshotDUnitTest.java
index ca9e2ae..6796700 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/snapshot/ClientSnapshotDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/snapshot/ClientSnapshotDUnitTest.java
@@ -18,6 +18,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.*;
 import static org.junit.Assert.*;
 
 import java.io.File;
+import java.util.Properties;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.examples.snapshot.MyObject;
@@ -42,6 +43,7 @@ import org.apache.geode.cache.snapshot.SnapshotOptions.SnapshotFormat;
 import org.apache.geode.cache.util.CacheListenerAdapter;
 import org.apache.geode.cache.util.CacheWriterAdapter;
 import org.apache.geode.cache.util.CqListenerAdapter;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.AvailablePortHelper;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.LogWriterUtils;
@@ -94,6 +96,14 @@ public class ClientSnapshotDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "com.examples.snapshot.MyObject");
+    return result;
+  }
+
   @Test
   public void testImport() throws Exception {
     int count = 1000;
@@ -250,6 +260,7 @@ public class ClientSnapshotDUnitTest extends JUnit4CacheTestCase {
   @SuppressWarnings("serial")
   public void loadCache() throws Exception {
     CacheFactory cf = new CacheFactory().setPdxSerializer(new MyPdxSerializer());
+    cf.set(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, "com.examples.snapshot.MyObject");
     Cache cache = getCache(cf);
 
     CacheServer server = cache.addCacheServer();
@@ -269,6 +280,8 @@ public class ClientSnapshotDUnitTest extends JUnit4CacheTestCase {
                 .setPdxSerializer(new MyPdxSerializer())
                 .addPoolServer(NetworkUtils.getServerHostName(host), port)
                 .setPoolSubscriptionEnabled(true).setPoolPRSingleHopEnabled(false);
+        cf.set(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+            "com.examples.snapshot.MyObject");
 
         ClientCache cache = getClientCache(cf);
         Region r = cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY_HEAP_LRU)
@@ -282,6 +295,8 @@ public class ClientSnapshotDUnitTest extends JUnit4CacheTestCase {
       @Override
       public Object call() throws Exception {
         CacheFactory cf = new CacheFactory().setPdxSerializer(new MyPdxSerializer());
+        cf.set(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+            "com.examples.snapshot.MyObject");
         Cache cache = getCache(cf);
 
         cache.<Integer, MyObject>createRegionFactory(RegionShortcut.REPLICATE).create("clienttest");
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java b/geode-lucene/src/main/java/org/apache/geode/internal/LuceneDistributedSystemService.java
similarity index 51%
copy from geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
copy to geode-lucene/src/main/java/org/apache/geode/internal/LuceneDistributedSystemService.java
index 09535d5..67dc4d6 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
+++ b/geode-lucene/src/main/java/org/apache/geode/internal/LuceneDistributedSystemService.java
@@ -12,46 +12,30 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+package org.apache.geode.internal;
 
-package org.apache.geode.cache.query.internal.parse;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
 
-import antlr.*;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
-import org.apache.geode.cache.query.internal.QCompiler;
-
-/**
- *
- */
-public class GemFireAST extends CommonAST {
-  private static final long serialVersionUID = 779964802274305208L;
-
-  public GemFireAST() {
-    super();
-  }
+public class LuceneDistributedSystemService implements DistributedSystemService {
+  @Override
+  public void init(InternalDistributedSystem internalDistributedSystem) {
 
-  public GemFireAST(Token tok) {
-    super(tok);
   }
 
   @Override
-  public String getText() {
-    String txt = super.getText();
-    if (txt == null) {
-      return "[no text]";
-    }
-    return txt;
-  }
-
-  public void compile(QCompiler compiler) {
-    childrenCompile(compiler);
+  public Class getInterface() {
+    return getClass();
   }
 
-  public void childrenCompile(QCompiler compiler) {
-    GemFireAST child = (GemFireAST) getFirstChild();
-    while (child != null) {
-      child.compile(compiler);
-      child = (GemFireAST) child.getNextSibling();
-    }
+  @Override
+  public Collection<String> getSerializationWhitelist() throws IOException {
+    URL sanctionedSerializables = ClassPathLoader.getLatest().getResource(getClass(),
+        "sanctioned-geode-lucene-serializables.txt");
+    return InternalDataSerializer.loadClassNames(sanctionedSerializables);
   }
-
 }
diff --git a/geode-lucene/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService b/geode-lucene/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
new file mode 100644
index 0000000..b6b88e3
--- /dev/null
+++ b/geode-lucene/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
@@ -0,0 +1,16 @@
+# 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.
+org.apache.geode.internal.LuceneDistributedSystemService
+
diff --git a/geode-lucene/src/main/resources/org/apache/geode/internal/sanctioned-geode-lucene-serializables.txt b/geode-lucene/src/main/resources/org/apache/geode/internal/sanctioned-geode-lucene-serializables.txt
new file mode 100755
index 0000000..8b513a6
--- /dev/null
+++ b/geode-lucene/src/main/resources/org/apache/geode/internal/sanctioned-geode-lucene-serializables.txt
@@ -0,0 +1,20 @@
+org/apache/geode/cache/lucene/LuceneIndexDestroyedException,false,indexName:java/lang/String,regionPath:java/lang/String
+org/apache/geode/cache/lucene/LuceneIndexExistsException,false,indexName:java/lang/String,regionPath:java/lang/String
+org/apache/geode/cache/lucene/LuceneIndexNotFoundException,false,indexName:java/lang/String,regionPath:java/lang/String
+org/apache/geode/cache/lucene/LuceneQueryException,false
+org/apache/geode/cache/lucene/internal/LuceneServiceImpl$validateCommandParameters,false
+org/apache/geode/cache/lucene/internal/cli/LuceneDestroyIndexInfo,false,definedDestroyOnly:boolean
+org/apache/geode/cache/lucene/internal/cli/LuceneFunctionSerializable,false,indexName:java/lang/String,regionPath:java/lang/String
+org/apache/geode/cache/lucene/internal/cli/LuceneIndexDetails,true,1,fieldAnalyzers:java/util/Map,indexStats:java/util/Map,initialized:boolean,searchableFieldNames:java/lang/String[],serializer:java/lang/String,serverName:java/lang/String
+org/apache/geode/cache/lucene/internal/cli/LuceneIndexInfo,true,1,fieldAnalyzers:java/lang/String[],searchableFieldNames:java/lang/String[],serializer:java/lang/String
+org/apache/geode/cache/lucene/internal/cli/LuceneQueryInfo,true,1,defaultField:java/lang/String,keysOnly:boolean,limit:int,queryString:java/lang/String
+org/apache/geode/cache/lucene/internal/cli/LuceneSearchResults,false,exceptionFlag:boolean,exceptionMessage:java/lang/String,key:java/lang/String,score:float,value:java/lang/String
+org/apache/geode/cache/lucene/internal/cli/functions/LuceneCreateIndexFunction,false
+org/apache/geode/cache/lucene/internal/cli/functions/LuceneDescribeIndexFunction,false
+org/apache/geode/cache/lucene/internal/cli/functions/LuceneDestroyIndexFunction,false
+org/apache/geode/cache/lucene/internal/cli/functions/LuceneListIndexFunction,false
+org/apache/geode/cache/lucene/internal/cli/functions/LuceneSearchIndexFunction,false
+org/apache/geode/cache/lucene/internal/directory/DumpDirectoryFiles,true,1
+org/apache/geode/cache/lucene/internal/distributed/LuceneQueryFunction,true,1
+org/apache/geode/cache/lucene/internal/distributed/WaitUntilFlushedFunction,true,1
+org/apache/geode/cache/lucene/internal/results/LuceneGetPageFunction,true,1
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneClientSecurityDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneClientSecurityDUnitTest.java
index 8442318..378ea89 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneClientSecurityDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneClientSecurityDUnitTest.java
@@ -45,6 +45,7 @@ import org.apache.geode.cache.client.ClientRegionShortcut;
 import org.apache.geode.cache.client.ServerOperationException;
 import org.apache.geode.cache.lucene.test.TestObject;
 import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.security.NotAuthorizedException;
 import org.apache.geode.security.SimpleTestSecurityManager;
 import org.apache.geode.security.templates.UserPasswordAuthInit;
@@ -72,6 +73,8 @@ public class LuceneClientSecurityDUnitTest extends LuceneQueriesAccessorBase {
 
   private int startCacheServer() throws IOException {
     Properties props = new Properties();
+    props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.lucene.test.TestObject");
     props.setProperty(SECURITY_MANAGER, SimpleTestSecurityManager.class.getName());
     final Cache cache = getCache(props);
     final CacheServer server = cache.addCacheServer();
@@ -88,6 +91,8 @@ public class LuceneClientSecurityDUnitTest extends LuceneQueriesAccessorBase {
 
   private void startClient(String userName, int serverPort) {
     Properties props = new Properties();
+    props.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.lucene.test.TestObject");
     props.setProperty("security-username", userName);
     props.setProperty("security-password", userName);
     props.setProperty(SECURITY_CLIENT_AUTH_INIT, UserPasswordAuthInit.class.getName());
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java
index abf4965..c3f5dc2 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java
@@ -16,6 +16,8 @@ package org.apache.geode.cache.lucene;
 
 import static org.apache.geode.cache.lucene.test.LuceneTestUtilities.*;
 
+import java.util.Properties;
+
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.EvictionAction;
 import org.apache.geode.cache.EvictionAttributes;
@@ -26,12 +28,12 @@ import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.cache.lucene.test.LuceneTestUtilities;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.Host;
 import org.apache.geode.test.dunit.SerializableRunnableIF;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
 
-
 public abstract class LuceneDUnitTest extends JUnit4CacheTestCase {
   protected VM dataStore1;
   protected VM dataStore2;
@@ -75,6 +77,17 @@ public abstract class LuceneDUnitTest extends JUnit4CacheTestCase {
     return parameters;
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.cache.lucene.test.TestObject;org.apache.geode.cache.lucene.LuceneQueriesAccessorBase$TestObject"
+            + ";org.apache.geode.cache.lucene.LuceneDUnitTest"
+            + ";org.apache.geode.cache.lucene.LuceneQueriesAccessorBase"
+            + ";org.apache.geode.test.dunit.**");
+    return result;
+  }
+
   public enum RegionTestableType {
     PARTITION(RegionShortcut.PARTITION_PROXY, RegionShortcut.PARTITION),
     PARTITION_REDUNDANT_PERSISTENT(RegionShortcut.PARTITION_PROXY_REDUNDANT,
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesAccessorBase.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesAccessorBase.java
index df9b2ba..ecb5d7c 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesAccessorBase.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesAccessorBase.java
@@ -24,6 +24,9 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.HashMap;
@@ -31,6 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.control.RebalanceOperation;
@@ -189,10 +193,12 @@ public class LuceneQueriesAccessorBase extends LuceneDUnitTest {
     });
   }
 
-  protected static class TestObject implements Serializable {
+  protected static class TestObject implements DataSerializable {
     private static final long serialVersionUID = 1L;
     private String text;
 
+    public TestObject() {}
+
     public TestObject(String text) {
       this.text = text;
     }
@@ -226,5 +232,15 @@ public class LuceneQueriesAccessorBase extends LuceneDUnitTest {
     public String toString() {
       return "TestObject[" + text + "]";
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeUTF(text);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      text = in.readUTF();
+    }
   }
 }
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesDUnitTest.java
index 20e2a67..08e0e05 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesDUnitTest.java
@@ -17,6 +17,8 @@ package org.apache.geode.cache.lucene;
 import static org.apache.geode.cache.lucene.test.LuceneTestUtilities.*;
 import static org.junit.Assert.*;
 
+import java.util.Properties;
+
 import junitparams.JUnitParamsRunner;
 import junitparams.Parameters;
 import org.apache.lucene.index.Term;
@@ -29,6 +31,7 @@ import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.lucene.internal.LuceneQueryImpl;
 import org.apache.geode.cache.lucene.test.LuceneTestUtilities;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.SerializableRunnableIF;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.junit.categories.DistributedTest;
@@ -212,4 +215,12 @@ public class LuceneQueriesDUnitTest extends LuceneQueriesAccessorBase {
     });
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    String filter = (String) result.get(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER);
+    filter += ";org.apache.geode.cache.lucene.LuceneQueriesDUnitTest*";
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, filter);
+    return result;
+  }
 }
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/MixedObjectIndexDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/MixedObjectIndexDUnitTest.java
index 90bf44a..1381b58 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/MixedObjectIndexDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/MixedObjectIndexDUnitTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Properties;
 import java.util.stream.IntStream;
 
 import junitparams.JUnitParamsRunner;
@@ -33,6 +34,7 @@ import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
 import org.apache.geode.cache.Region;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.test.dunit.SerializableRunnableIF;
 import org.apache.geode.test.junit.categories.DistributedTest;
 
@@ -47,6 +49,17 @@ public class MixedObjectIndexDUnitTest extends LuceneQueriesAccessorBase {
 
   }
 
+  @Override
+  public Properties getDistributedSystemProperties() {
+    Properties result = super.getDistributedSystemProperties();
+    String filter = (String) result.get(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER);
+    filter +=
+        ";org.apache.geode.cache.lucene.MixedObjectIndexDUnitTest*;org.apache.geode.cache.lucene.test.LuceneTestUtilities*";
+    result.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER, filter);
+    return result;
+  }
+
+
   @Test
   @Parameters(method = "getPartitionRegionTypes")
   public void luceneCanIndexFieldsWithSameNameButInDifferentObjects(
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
index eac5f45..9fd34bf 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/management/LuceneManagementDUnitTest.java
@@ -17,7 +17,11 @@ package org.apache.geode.cache.lucene.internal.management;
 import static org.apache.geode.cache.lucene.test.LuceneTestUtilities.INDEX_NAME;
 import static org.junit.Assert.*;
 
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
 import java.io.Serializable;
+import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
@@ -27,6 +31,7 @@ import org.awaitility.Awaitility;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.DataSerializable;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.lucene.LuceneQuery;
 import org.apache.geode.cache.lucene.LuceneQueryException;
@@ -34,6 +39,7 @@ import org.apache.geode.cache.lucene.LuceneService;
 import org.apache.geode.cache.lucene.LuceneServiceProvider;
 import org.apache.geode.cache.lucene.management.LuceneIndexMetrics;
 import org.apache.geode.cache.lucene.management.LuceneServiceMXBean;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.management.ManagementTestBase;
@@ -256,7 +262,7 @@ public class LuceneManagementDUnitTest extends ManagementTestBase {
     assertEquals(expectedHits, totalHits);
   }
 
-  protected static class TestObject implements Serializable {
+  protected static class TestObject implements DataSerializable {
     private static final long serialVersionUID = 1L;
     private String field0;
 
@@ -264,9 +270,21 @@ public class LuceneManagementDUnitTest extends ManagementTestBase {
       this.field0 = value;
     }
 
+    public TestObject() {}
+
     public String toString() {
       return new StringBuilder().append(getClass().getSimpleName()).append("[").append("field0=")
           .append(this.field0).append("]").toString();
     }
+
+    @Override
+    public void toData(DataOutput out) throws IOException {
+      out.writeUTF(field0);
+    }
+
+    @Override
+    public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+      field0 = in.readUTF();
+    }
   }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/codeAnalysis/AnalyzeLuceneSerializablesJUnitTest.java
old mode 100644
new mode 100755
similarity index 60%
copy from geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
copy to geode-lucene/src/test/java/org/apache/geode/codeAnalysis/AnalyzeLuceneSerializablesJUnitTest.java
index dcf2a85..c489afd
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/codeAnalysis/AnalyzeLuceneSerializablesJUnitTest.java
@@ -12,24 +12,17 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.cache;
+package org.apache.geode.codeAnalysis;
 
-import static org.junit.Assert.*;
-
-import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-
-@Category(DistributedTest.class)
-public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
+import org.apache.geode.test.junit.categories.IntegrationTest;
 
-  private static final long serialVersionUID = 5960292521068781262L;
+@Category(IntegrationTest.class)
+public class AnalyzeLuceneSerializablesJUnitTest extends AnalyzeSerializablesJUnitTest {
 
   @Override
-  protected boolean getConcurrencyChecksEnabled() {
-    return true;
+  protected String getModuleName() {
+    return "geode-lucene";
   }
 }
diff --git a/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
new file mode 100644
index 0000000..8ce0692
--- /dev/null
+++ b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -0,0 +1,2 @@
+# e.g.,
+#org/apache/geode/cache/query/CqAttributesFactory
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
similarity index 99%
copy from geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
copy to geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
index 3be83db..f41f6f0 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
+++ b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
@@ -13,6 +13,7 @@
 # ~~~~~~~~~~~~~~~~~~~ DataSerializables ~~~~~~~~~~~~~~~~~~~~~~~~~
 # these are failures from testDataSerializables
 
+
 # ~~~~~~~~~~~~~~~~~~~ Serializables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # these are failures from testSerializables
 
diff --git a/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
new file mode 100644
index 0000000..feaa08c
--- /dev/null
+++ b/geode-lucene/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -0,0 +1,44 @@
+org/apache/geode/cache/lucene/internal/DestroyLuceneIndexMessage,2
+fromData,32,2a2bb700262a2bb900270100b500032a2bb80028b500042a2bb80028b50005b1
+toData,32,2a2bb700232b2ab40003b9002402002ab400042bb800252ab400052bb80025b1
+org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile,4
+fromData,14,2a2bb600342a2bb80035b50004b1
+fromDataPre_GEODE_1_3_0_0,41,2a2bb80035b500052a2bb80035b500062a2bb80036b500072a2bb80035b500092a2bb80037b5000bb1
+toData,14,2a2bb600302ab400042bb80031b1
+toDataPre_GEODE_1_3_0_0,41,2ab400052bb800312ab400062bb800312ab400072bb800322ab400092bb800312ab4000b2bb80033b1
+org/apache/geode/cache/lucene/internal/LuceneResultStructImpl,2
+fromData,27,2a2bb80017b500022a2bb80017b500032a2bb900180100b50004b1
+toData,27,2ab400022bb800152ab400032bb800152b2ab40004b900160200b1
+org/apache/geode/cache/lucene/internal/StringQueryProvider,2
+fromData,17,2a2bb80024b500032a2bb80024b50004b1
+toData,17,2ab400032bb800232ab400042bb80023b1
+org/apache/geode/cache/lucene/internal/distributed/EntryScore,2
+fromData,19,2a2bb8000fb500022a2bb900100100b50003b1
+toData,19,2ab400022bb8000d2b2ab40003b9000e0200b1
+org/apache/geode/cache/lucene/internal/distributed/LuceneFunctionContext,2
+fromData,41,2a2bb9000d0100b500082a2bb8000ec0000fb500052a2bb8000ec00010b500072a2bb80011b50006b1
+toData,35,2b2ab40008b9000a02002ab400052bb8000b2ab400072bb8000b2ab400062bb8000cb1
+org/apache/geode/cache/lucene/internal/distributed/TopEntries,2
+fromData,22,2a2bb900150100b5000c2a2bb80016c00017b50006b1
+toData,19,2b2ab4000cb9001302002ab400062bb80014b1
+org/apache/geode/cache/lucene/internal/distributed/TopEntriesCollector,2
+fromData,20,2a2bb80012b500052a2bb80013c00006b50008b1
+toData,17,2ab400052bb800102ab400082bb80011b1
+org/apache/geode/cache/lucene/internal/distributed/TopEntriesCollectorManager,2
+fromData,19,2a2bb80033b500072a2bb900340100b50004b1
+toData,19,2ab400072bb800312b2ab40004b900320200b1
+org/apache/geode/cache/lucene/internal/distributed/WaitUntilFlushedFunctionContext,2
+fromData,32,2a2bb8000bb500042a2bb9000c0100b500052a120d2bb8000ec0000db50006b1
+toData,27,2ab400042bb800082b2ab40005b9000903002ab400062bb8000ab1
+org/apache/geode/cache/lucene/internal/filesystem/ChunkKey,2
+fromData,40,2a2bb9000c0100b500032bb9000d0100412bb9000d010037042abb000e59201604b7000fb50002b1
+toData,37,2b2ab40003b9000802002b2ab40002b60009b9000a03002b2ab40002b6000bb9000a0300b1
+org/apache/geode/cache/lucene/internal/filesystem/File,2
+fromData,88,2a2bb8001bb5000b2a2bb9001c0100b500022a2bb9001d0100b500032a2bb9001c0100b500052a2bb9001c0100b500062bb9001c0100412bb9001c010037042abb001e59201604b7001fb500082a2bb900200100b50009b1
+toData,85,2ab4000b2bb800152b2ab40002b9001603002b2ab40003b9001702002b2ab40005b9001603002b2ab40006b9001603002b2ab40008b60018b9001603002b2ab40008b60019b9001603002b2ab40009b9001a0200b1
+org/apache/geode/cache/lucene/internal/results/PageEntry,2
+fromData,17,2a2bb8000cb500022a2bb8000cb50003b1
+toData,94,2ab400022bb800062ab40003c100079900112ab40003c000072bb900080200b12ab40003c1000499002e2a2ab40003c00004b900090100b500032ab40003c1000a9900142b2ab40003c0000ac0000ab9000b0200b12ab400032bb80006b1
+org/apache/geode/cache/lucene/internal/results/PageResults,2
+fromData,43,2bb9000b01003d033e1d1ca2001fbb000959b7000c3a0419042bb6000d2a1904b6000e57840301a7ffe2b1
+toData,43,2b2ab60004b9000502002ab600064d2cb9000701009900152cb900080100c000094e2d2bb6000aa7ffe8b1
diff --git a/geode-old-client-support/src/test/java/org/apache/geode/OldClientSupportDUnitTest.java b/geode-old-client-support/src/test/java/org/apache/geode/OldClientSupportDUnitTest.java
index e32df3e..732d533 100644
--- a/geode-old-client-support/src/test/java/org/apache/geode/OldClientSupportDUnitTest.java
+++ b/geode-old-client-support/src/test/java/org/apache/geode/OldClientSupportDUnitTest.java
@@ -19,15 +19,21 @@ import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.lang.reflect.Constructor;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Properties;
 
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.Cache;
+import org.apache.geode.distributed.ConfigurationProperties;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.DistributionConfigImpl;
 import org.apache.geode.internal.ByteArrayDataInput;
 import org.apache.geode.internal.HeapDataOutputStream;
 import org.apache.geode.internal.InternalDataSerializer;
@@ -173,6 +179,12 @@ public class OldClientSupportDUnitTest extends JUnit4CacheTestCase {
    */
   @Test
   public void oldClientObjectTranslatesToGeodeObject_javaSerialization() throws Exception {
+    Properties properties = new Properties();
+    properties.put(ConfigurationProperties.SERIALIZABLE_OBJECT_FILTER,
+        "org.apache.geode.ClientSerializableObjec");
+    DistributionConfig config = new DistributionConfigImpl(properties);
+    InternalDataSerializer.initialize(config, new ArrayList<DistributedSystemService>());
+
     com.gemstone.gemfire.ClientSerializableObject gemfireObject =
         new com.gemstone.gemfire.ClientSerializableObject();
     com.gemstone.gemfire.ClientSerializableObject subObject =
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java b/geode-wan/src/main/java/org/apache/geode/internal/WANDistributedSystemService.java
similarity index 50%
copy from geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
copy to geode-wan/src/main/java/org/apache/geode/internal/WANDistributedSystemService.java
index 09535d5..7c9fe63 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/parse/GemFireAST.java
+++ b/geode-wan/src/main/java/org/apache/geode/internal/WANDistributedSystemService.java
@@ -12,46 +12,31 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+package org.apache.geode.internal;
 
-package org.apache.geode.cache.query.internal.parse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
 
-import antlr.*;
+import org.apache.geode.distributed.internal.DistributedSystemService;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
 
-import org.apache.geode.cache.query.internal.QCompiler;
-
-/**
- *
- */
-public class GemFireAST extends CommonAST {
-  private static final long serialVersionUID = 779964802274305208L;
-
-  public GemFireAST() {
-    super();
-  }
+public class WANDistributedSystemService implements DistributedSystemService {
+  @Override
+  public void init(InternalDistributedSystem internalDistributedSystem) {
 
-  public GemFireAST(Token tok) {
-    super(tok);
   }
 
   @Override
-  public String getText() {
-    String txt = super.getText();
-    if (txt == null) {
-      return "[no text]";
-    }
-    return txt;
-  }
-
-  public void compile(QCompiler compiler) {
-    childrenCompile(compiler);
+  public Class getInterface() {
+    return getClass();
   }
 
-  public void childrenCompile(QCompiler compiler) {
-    GemFireAST child = (GemFireAST) getFirstChild();
-    while (child != null) {
-      child.compile(compiler);
-      child = (GemFireAST) child.getNextSibling();
-    }
+  @Override
+  public Collection<String> getSerializationWhitelist() throws IOException {
+    URL sanctionedSerializables = ClassPathLoader.getLatest().getResource(getClass(),
+        "sanctioned-geode-wan-serializables.txt");
+    return InternalDataSerializer.loadClassNames(sanctionedSerializables);
   }
-
 }
diff --git a/geode-wan/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService b/geode-wan/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
new file mode 100644
index 0000000..f62960b
--- /dev/null
+++ b/geode-wan/src/main/resources/META-INF/services/org.apache.geode.distributed.internal.DistributedSystemService
@@ -0,0 +1,15 @@
+# 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.
+org.apache.geode.internal.WANDistributedSystemService
diff --git a/geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-wan/src/main/resources/org/apache/geode/internal/sanctioned-geode-wan-serializables.txt
similarity index 100%
copy from geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
copy to geode-wan/src/main/resources/org/apache/geode/internal/sanctioned-geode-wan-serializables.txt
diff --git a/geode-web-api/build.gradle b/geode-web-api/build.gradle
index 795812f..b55a9d9 100755
--- a/geode-web-api/build.gradle
+++ b/geode-web-api/build.gradle
@@ -57,6 +57,7 @@ dependencies {
   }
 
   testCompile project(':geode-junit')
+  testCompile files(project(':geode-core').sourceSets.test.output)
 
   provided 'javax.servlet:javax.servlet-api:' + project.'javax.servlet-api.version'
   provided project(':geode-core')
diff --git a/geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-web-api/src/main/resources/org/apache/geode/internal/sanctioned-geode-web-api-serializables.txt
old mode 100755
new mode 100644
similarity index 100%
copy from geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
copy to geode-web-api/src/main/resources/org/apache/geode/internal/sanctioned-geode-web-api-serializables.txt
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java b/geode-web-api/src/test/java/org/apache/geode/codeAnalysis/AnalyzeWebApiSerializablesJUnitTest.java
similarity index 60%
copy from geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
copy to geode-web-api/src/test/java/org/apache/geode/codeAnalysis/AnalyzeWebApiSerializablesJUnitTest.java
index dcf2a85..deb8659 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/RemoteTransactionCCEDUnitTest.java
+++ b/geode-web-api/src/test/java/org/apache/geode/codeAnalysis/AnalyzeWebApiSerializablesJUnitTest.java
@@ -12,24 +12,17 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.cache;
+package org.apache.geode.codeAnalysis;
 
-import static org.junit.Assert.*;
-
-import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-
-@Category(DistributedTest.class)
-public class RemoteTransactionCCEDUnitTest extends RemoteTransactionDUnitTest {
+import org.apache.geode.test.junit.categories.IntegrationTest;
 
-  private static final long serialVersionUID = 5960292521068781262L;
+@Category(IntegrationTest.class)
+public class AnalyzeWebApiSerializablesJUnitTest extends AnalyzeSerializablesJUnitTest {
 
   @Override
-  protected boolean getConcurrencyChecksEnabled() {
-    return true;
+  protected String getModuleName() {
+    return "geode-web-api";
   }
 }
diff --git a/geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
new file mode 100644
index 0000000..854a121
--- /dev/null
+++ b/geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -0,0 +1,8 @@
+org/apache/geode/rest/internal/web/controllers/support/JSONTypes
+org/apache/geode/rest/internal/web/controllers/support/QueryResultTypes
+org/apache/geode/rest/internal/web/controllers/support/UpdateOp
+org/apache/geode/rest/internal/web/exception/MalformedJsonException
+org/apache/geode/rest/internal/web/exception/RegionNotFoundException
+org/apache/geode/rest/internal/web/exception/ResourceNotFoundException
+org/apache/geode/rest/internal/web/exception/DataTypeNotSupportedException
+org/apache/geode/rest/internal/web/exception/GemfireRestException
diff --git a/geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
old mode 100755
new mode 100644
similarity index 100%
copy from geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
copy to geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/openBugs.txt
diff --git a/geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
old mode 100755
new mode 100644
similarity index 100%
rename from geode-wan/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
rename to geode-web-api/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
diff --git a/gradle.properties b/gradle.properties
index 50c9788..8ee572d 100755
--- a/gradle.properties
+++ b/gradle.properties
@@ -56,3 +56,6 @@ dunitParallelForks = 8
 dunitDockerImage = apachegeode/geode-build
 # Docker user for parallel dunit tests
 dunitDockerUser = root
+
+#JVM to be used by tests
+#testJVM=
diff --git a/gradle/test.gradle b/gradle/test.gradle
index d321f28..d124396 100644
--- a/gradle/test.gradle
+++ b/gradle/test.gradle
@@ -249,6 +249,9 @@ subprojects {
         maxHeapSize '768m'
 //        jvmArgs = ['-XX:+HeapDumpOnOutOfMemoryError', '-ea',"-XX:+PrintGC", "-XX:+PrintGCDetails","-XX:+PrintGCTimeStamps"]
         jvmArgs = ['-XX:+HeapDumpOnOutOfMemoryError', '-ea']
+//        if(!testJVM.trim().isEmpty()) {
+//          executable="${testJVM}/bin/java"
+//        }
 
         systemProperty 'gemfire.DEFAULT_MAX_OPLOG_SIZE', '10'
         systemProperty 'gemfire.disallowMcastDefaults', 'true'

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