You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2018/08/02 20:16:19 UTC

[geode] branch feature/CleanMicrometer updated: MORE WIP

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

udo pushed a commit to branch feature/CleanMicrometer
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/CleanMicrometer by this push:
     new 52bf5ca  MORE WIP
52bf5ca is described below

commit 52bf5ca1d4d2c4d4e7c8858dcd8c44c9ff134701
Author: Udo Kohlmeyer <uk...@pivotal.io>
AuthorDate: Thu Aug 2 13:16:07 2018 -0700

    MORE WIP
---
 .../apache/geode/admin/AdminDistributedSystem.java |   1 +
 .../java/org/apache/geode/admin/Statistic.java     |  63 --
 .../geode/admin/internal/CacheHealthEvaluator.java | 136 ++--
 .../internal/DistributedSystemHealthMonitor.java   |  60 +-
 .../admin/internal/StatisticResourceImpl.java      | 149 ++--
 .../admin/internal/SystemMemberCacheImpl.java      |  90 ++-
 .../geode/admin/internal/SystemMemberImpl.java     |  37 +-
 .../internal/AdminDistributedSystemJmxImpl.java    | 790 ++++++++++-----------
 .../admin/jmx/internal/StatAlertsAggregator.java   |  13 +-
 .../client/internal/GetClientPRMetaDataOp.java     |   5 +-
 .../geode/cache/client/internal/GetPDXEnumsOp.java |   1 +
 .../geode/cache/client/internal/PrimaryAckOp.java  |   1 +
 .../cache/client/internal/QueueConnectionImpl.java |   1 +
 .../cache/client/internal/RegisterInterestOp.java  |   1 +
 .../cache/query/internal/SortedResultsBag.java     |   1 -
 .../internal/InternalDistributedSystem.java        |  44 +-
 .../membership/gms/messenger/JGroupsMessenger.java |   7 +-
 .../org/apache/geode/internal/SystemAdmin.java     |  34 +-
 .../org/apache/geode/internal/admin/CacheInfo.java |   2 +-
 .../org/apache/geode/internal/admin/GemFireVM.java |  36 +-
 .../internal/admin/remote/RemoteGemFireVM.java     | 321 ++++-----
 .../geode/internal/admin/remote/RemoteStat.java    |   7 +-
 .../internal/cache/DistTXRollbackMessage.java      |  53 +-
 .../geode/internal/cache/InternalRegion.java       |   3 +-
 .../apache/geode/internal/cache/LocalRegion.java   |  14 +-
 .../internal/cache/control/HeapMemoryMonitor.java  |  12 +-
 .../cache/eviction/AbstractEvictionController.java |   3 +
 .../cache/eviction/CountLRUStatistics.java         | 111 ---
 .../internal/cache/eviction/EvictionCounters.java  |   4 +
 .../internal/cache/eviction/HeapLRUStatistics.java | 108 ---
 .../cache/eviction/MemoryLRUStatistics.java        | 110 ---
 .../geode/internal/cache/tx/RemoteSizeMessage.java |   3 +-
 .../wan/parallel/ParallelGatewaySenderQueue.java   | 138 ++--
 .../serial/SerialGatewaySenderEventProcessor.java  |   2 +-
 .../internal/statistics/LocalStatListener.java     |   0
 .../internal/statistics/StatArchiveDescriptor.java |   0
 .../internal/statistics/StatArchiveFormat.java     |   0
 .../internal/statistics/StatArchiveHandler.java    |   0
 .../statistics/StatArchiveHandlerConfig.java       |   0
 .../internal/statistics/StatArchiveReader.java     |   0
 .../internal/statistics/StatArchiveWriter.java     |   0
 .../management/internal/FederatingManager.java     |   6 +-
 .../geode/management/internal/LocalManager.java    |   9 +-
 .../internal/beans/DiskRegionBridge.java           | 153 ++--
 .../internal/beans/MemberMBeanBridge.java          |  18 +-
 .../internal/beans/PartitionedRegionBridge.java    | 311 ++++----
 .../internal/beans/RegionMBeanBridge.java          | 290 ++++----
 .../geode/statistics/cache/CachePerfStats.kt       |  28 +-
 .../geode/statistics/disk/DiskRegionStats.kt       |   4 +
 .../statistics/eviction/CountLRUStatistics.kt      |  42 ++
 .../geode/statistics/eviction/EvictionStats.kt     |  28 +-
 .../geode/statistics/eviction/EvictionStatsImpl.kt |  36 +
 .../geode/statistics/eviction/HeapLRUStatistics.kt |  39 +
 .../statistics/eviction/MemoryLRUStatistics.kt     |  41 ++
 .../java/org/apache/geode/internal/admin/Stat.java |   0
 .../org/apache/geode/internal/admin/StatAlert.java |   0
 .../geode/internal/admin/StatAlertDefinition.java  |   0
 .../geode/internal/admin/StatAlertsManager.java    |  14 +-
 .../apache/geode/internal/admin/StatListener.java  |   0
 .../apache/geode/internal/admin/StatResource.java  |   0
 .../admin/statalerts/BaseDecoratorImpl.java        |   0
 .../admin/statalerts/DummyStatisticInfoImpl.java   |   2 -
 .../admin/statalerts/FunctionDecoratorImpl.java    |   0
 .../internal/admin/statalerts/FunctionHelper.java  |   0
 .../statalerts/GaugeThresholdDecoratorImpl.java    |   0
 .../admin/statalerts/MultiAttrDefinitionImpl.java  |   0
 .../statalerts/NumberThresholdDecoratorImpl.java   |   0
 .../admin/statalerts/SingleAttrDefinitionImpl.java |   0
 .../internal/admin/statalerts/StatisticInfo.java   |   0
 .../admin/statalerts/StatisticInfoImpl.java        |   0
 70 files changed, 1553 insertions(+), 1829 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/admin/AdminDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/admin/AdminDistributedSystem.java
index e6d6045..658d76a 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/AdminDistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/AdminDistributedSystem.java
@@ -23,6 +23,7 @@ import java.util.UUID;
 import org.apache.geode.cache.DataPolicy;
 import org.apache.geode.cache.persistence.PersistentID;
 import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.admin.AlertListener;
 
 /**
  * Administrative interface for managing an entire GemFire distributed system. This interface should
diff --git a/geode-core/src/main/java/org/apache/geode/admin/Statistic.java b/geode-core/src/main/java/org/apache/geode/admin/Statistic.java
deleted file mode 100755
index dd9b4b1..0000000
--- a/geode-core/src/main/java/org/apache/geode/admin/Statistic.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package org.apache.geode.admin;
-
-/**
- * Interface to represent a single statistic of a <code>StatisticResource</code>
- *
- * @since GemFire 3.5
- *
- * @deprecated as of 7.0 use the <code><a href=
- *             "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code>
- *             package instead
- */
-public interface Statistic extends java.io.Serializable {
-
-  /**
-   * Gets the identifying name of this statistic.
-   *
-   * @return the identifying name of this statistic
-   */
-  String getName();
-
-  /**
-   * Gets the value of this statistic as a <code>java.lang.Number</code>.
-   *
-   * @return the value of this statistic
-   */
-  Number getValue();
-
-  /**
-   * Gets the unit of measurement (if any) this statistic represents.
-   *
-   * @return the unit of measurement (if any) this statistic represents
-   */
-  String getUnits();
-
-  /**
-   * Returns true if this statistic represents a numeric value which always increases.
-   *
-   * @return true if this statistic represents a value which always increases
-   */
-  boolean isCounter();
-
-  /**
-   * Gets the full description of this statistic.
-   *
-   * @return the full description of this statistic
-   */
-  String getDescription();
-}
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
index adf03ca..3081eb1 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/CacheHealthEvaluator.java
@@ -26,11 +26,11 @@ import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.OSProcess;
 import org.apache.geode.internal.cache.CacheLifecycleListener;
-import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.statistics.cache.CachePerfStats;
 
 /**
  * Contains the logic for evaluating the health of a GemFire {@code Cache} instance according to the
@@ -132,30 +132,30 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
    * interval is less than the {@linkplain CacheHealthConfig#getMaxNetSearchTime threshold}. If not,
    * the status is "okay" health.
    *
-   * @see CachePerfStats#getNetsearchTime
+//   * @see CachePerfStats#getNetsearchTime
    * @see CachePerfStats#getNetsearchesCompleted
    */
   private void checkNetSearchTime(List status) {
-    if (this.cacheStats == null || isFirstEvaluation() || this.cacheStats.isClosed()) {
+    if (this.cacheStats == null || isFirstEvaluation()) {
       return;
     }
 
-    long deltaNetsearchTime = this.cacheStats.getNetsearchTime() - this.prevNetsearchTime;
-    long deltaNetsearchesCompleted =
-        this.cacheStats.getNetsearchesCompleted() - this.prevNetsearchesCompleted;
-
-    if (deltaNetsearchesCompleted != 0) {
-      long ratio = deltaNetsearchTime / deltaNetsearchesCompleted;
-      ratio /= 1000000;
-      long threshold = this.config.getMaxNetSearchTime();
-
-      if (ratio > threshold) {
-        String s =
-            LocalizedStrings.CacheHealthEvaluator_THE_AVERAGE_DURATION_OF_A_CACHE_NETSEARCH_0_MS_EXCEEDS_THE_THRESHOLD_1_MS
-                .toLocalizedString(ratio, threshold);
-        status.add(okayHealth(s));
-      }
-    }
+//    long deltaNetsearchTime = this.cacheStats.getNetsearchTime() - this.prevNetsearchTime;
+//    long deltaNetsearchesCompleted =
+//        this.cacheStats.getNetsearchesCompleted() - this.prevNetsearchesCompleted;
+//
+//    if (deltaNetsearchesCompleted != 0) {
+//      long ratio = deltaNetsearchTime / deltaNetsearchesCompleted;
+//      ratio /= 1000000;
+//      long threshold = this.config.getMaxNetSearchTime();
+//
+//      if (ratio > threshold) {
+//        String s =
+//            LocalizedStrings.CacheHealthEvaluator_THE_AVERAGE_DURATION_OF_A_CACHE_NETSEARCH_0_MS_EXCEEDS_THE_THRESHOLD_1_MS
+//                .toLocalizedString(ratio, threshold);
+        status.add(okayHealth("TODO fix health check"));
+//      }
+//    }
   }
 
   /**
@@ -163,39 +163,38 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
    * interval is less than the {@linkplain CacheHealthConfig#getMaxLoadTime threshold}. If not, the
    * status is "okay" health.
    *
-   * @see CachePerfStats#getLoadTime
-   * @see CachePerfStats#getLoadsCompleted
+//   * @see CachePerfStats#getLoadTime
+//   * @see CachePerfStats#getLoadsCompleted
    */
   private void checkLoadTime(List<HealthStatus> status) {
-    if (this.cacheStats == null || isFirstEvaluation() || this.cacheStats.isClosed()) {
+    if (this.cacheStats == null || isFirstEvaluation()) {
       return;
     }
 
-    if (!isFirstEvaluation()) {
-      long deltaLoadTime = this.cacheStats.getLoadTime() - this.prevLoadTime;
-      long deltaLoadsCompleted = this.cacheStats.getLoadsCompleted() - this.prevLoadsCompleted;
-
-      if (logger.isDebugEnabled()) {
-        logger.debug("Completed {} loads in {} ms", deltaLoadsCompleted, deltaLoadTime / 1000000);
-      }
-
-      if (deltaLoadsCompleted != 0) {
-        long ratio = deltaLoadTime / deltaLoadsCompleted;
-        ratio /= 1000000;
-        long threshold = this.config.getMaxLoadTime();
-
-        if (ratio > threshold) {
-          String s =
-              LocalizedStrings.CacheHealthEvaluator_THE_AVERAGE_DURATION_OF_A_CACHE_LOAD_0_MS_EXCEEDS_THE_THRESHOLD_1_MS
-                  .toLocalizedString(ratio, threshold);
-          if (logger.isDebugEnabled()) {
-            logger.debug(s);
-          }
-          status.add(okayHealth(s));
-        }
-      }
+//    if (!isFirstEvaluation()) {
+//      long deltaLoadTime = this.cacheStats.getLoadTime() - this.prevLoadTime;
+//      long deltaLoadsCompleted = this.cacheStats.getLoadsCompleted() - this.prevLoadsCompleted;
+//
+//      if (logger.isDebugEnabled()) {
+//        logger.debug("Completed {} loads in {} ms", deltaLoadsCompleted, deltaLoadTime / 1000000);
+//      }
+//
+//      if (deltaLoadsCompleted != 0) {
+//        long ratio = deltaLoadTime / deltaLoadsCompleted;
+//        ratio /= 1000000;
+//        long threshold = this.config.getMaxLoadTime();
+//
+//        if (ratio > threshold) {
+//          String s =
+//              LocalizedStrings.CacheHealthEvaluator_THE_AVERAGE_DURATION_OF_A_CACHE_LOAD_0_MS_EXCEEDS_THE_THRESHOLD_1_MS
+//                  .toLocalizedString(ratio, threshold);
+//          if (logger.isDebugEnabled()) {
+//            logger.debug(s);
+//          }
+          status.add(okayHealth("TODO fix health check"));
+//        }
+//      }
     }
-  }
 
   /**
    * Checks to make sure that the cache hit ratio during the previous health check interval is less
@@ -211,30 +210,31 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
    * </PRE>
    *
    *
-   * @see CachePerfStats#getGets
-   * @see CachePerfStats#getLoadsCompleted
+//   * @see CachePerfStats#getGets
+//   * @see CachePerfStats#getLoadsCompleted
    * @see CachePerfStats#getNetsearchesCompleted
    */
   private void checkHitRatio(List<HealthStatus> status) {
-    if (this.cacheStats == null || isFirstEvaluation() || this.cacheStats.isClosed()) {
+    if (this.cacheStats == null || isFirstEvaluation()) {
       return;
     }
 
-    long deltaGets = this.cacheStats.getGets() - this.prevGets;
-    if (deltaGets != 0) {
-      long deltaLoadsCompleted = this.cacheStats.getLoadsCompleted() - this.prevLoadsCompleted;
-      long deltaNetsearchesCompleted =
-          this.cacheStats.getNetsearchesCompleted() - this.prevNetsearchesCompleted;
-
-      double hits = deltaGets - (deltaLoadsCompleted + deltaNetsearchesCompleted);
-      double hitRatio = hits / deltaGets;
-      double threshold = this.config.getMinHitRatio();
-      if (hitRatio < threshold) {
-        String s = "The hit ratio of this Cache (" + hitRatio + ") is below the threshold ("
-            + threshold + ')';
-        status.add(okayHealth(s));
-      }
-    }
+//    long deltaGets = this.cacheStats.getGets() - this.prevGets;
+//    if (deltaGets != 0) {
+//      long deltaLoadsCompleted = this.cacheStats.getLoadsCompleted() - this.prevLoadsCompleted;
+//      long deltaNetsearchesCompleted =
+//          this.cacheStats.getNetsearchesCompleted() - this.prevNetsearchesCompleted;
+//
+//      double hits = deltaGets - (deltaLoadsCompleted + deltaNetsearchesCompleted);
+//      double hitRatio = hits / deltaGets;
+//      double threshold = this.config.getMinHitRatio();
+//      if (hitRatio < threshold) {
+//        String s = "The hit ratio of this Cache (" + hitRatio + ") is below the threshold ("
+//            + threshold + ')';
+//        status.add(okayHealth(s));
+        status.add(okayHealth("TODO fix health check"));
+//      }
+//    }
   }
 
   /**
@@ -243,7 +243,7 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
    * does, the status is "okay" health.
    */
   private void checkEventQueueSize(List<HealthStatus> status) {
-    if (this.cacheStats == null || isFirstEvaluation() || this.cacheStats.isClosed()) {
+    if (this.cacheStats == null || isFirstEvaluation() ) {
       return;
     }
 
@@ -261,10 +261,10 @@ class CacheHealthEvaluator extends AbstractHealthEvaluator implements CacheLifec
    * Updates the previous values of statistics
    */
   private void updatePrevious() {
-    if (this.cacheStats != null && !this.cacheStats.isClosed()) {
-      this.prevLoadTime = this.cacheStats.getLoadTime();
+    if (this.cacheStats != null) {
+//      this.prevLoadTime = this.cacheStats.getLoadTime();
       this.prevLoadsCompleted = this.cacheStats.getLoadsCompleted();
-      this.prevNetsearchTime = this.cacheStats.getNetsearchTime();
+//      this.prevNetsearchTime = this.cacheStats.getNetsearchTime();
       this.prevNetsearchesCompleted = this.cacheStats.getNetsearchesCompleted();
       this.prevGets = this.cacheStats.getGets();
 
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthMonitor.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthMonitor.java
index a429433..b05b5ee 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthMonitor.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributedSystemHealthMonitor.java
@@ -38,10 +38,6 @@ import org.apache.geode.internal.admin.DLockInfo;
 import org.apache.geode.internal.admin.GemFireVM;
 import org.apache.geode.internal.admin.GfManagerAgent;
 import org.apache.geode.internal.admin.HealthListener;
-import org.apache.geode.internal.admin.Stat;
-import org.apache.geode.internal.admin.StatAlertDefinition;
-import org.apache.geode.internal.admin.StatListener;
-import org.apache.geode.internal.admin.StatResource;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThreadGroup;
@@ -253,31 +249,31 @@ class DistributedSystemHealthMonitor implements Runnable, GemFireVM {
         LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
   }
 
-  public StatResource[] getStats(String statisticsTypeName) {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
-
-  public StatResource[] getAllStats() {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
+//  public StatResource[] getStats(String statisticsTypeName) {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
+//
+//  public StatResource[] getAllStats() {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
 
   public DLockInfo[] getDistributedLockInfo() {
     throw new UnsupportedOperationException(
         LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
   }
 
-  public void addStatListener(StatListener observer, StatResource observedResource,
-      Stat observedStat) {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
-
-  public void removeStatListener(StatListener observer) {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
+//  public void addStatListener(StatListener observer, StatResource observedResource,
+//      Stat observedStat) {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
+//
+//  public void removeStatListener(StatListener observer) {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
 
   public void addHealthListener(HealthListener observer, GemFireHealthConfig cfg) {
 
@@ -434,11 +430,11 @@ class DistributedSystemHealthMonitor implements Runnable, GemFireVM {
    * This operation is not supported for this object. Will throw UnsupportedOperationException if
    * invoked.
    */
-  public void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval,
-      boolean setRemotely) {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
+//  public void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval,
+//      boolean setRemotely) {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
 
   /**
    * This operation is not supported for this object. Will throw UnsupportedOperationException if
@@ -453,8 +449,8 @@ class DistributedSystemHealthMonitor implements Runnable, GemFireVM {
    * This operation is not supported for this object. Will throw UnsupportedOperationException if
    * invoked.
    */
-  public void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode) {
-    throw new UnsupportedOperationException(
-        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
-  }
+//  public void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode) {
+//    throw new UnsupportedOperationException(
+//        LocalizedStrings.DistributedSystemHealthMonitor_NOT_A_REAL_GEMFIREVM.toLocalizedString());
+//  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/StatisticResourceImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/StatisticResourceImpl.java
index ed3dade..cff3d8f 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/StatisticResourceImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/StatisticResourceImpl.java
@@ -14,26 +14,16 @@
  */
 package org.apache.geode.admin.internal;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.geode.admin.AdminException;
-import org.apache.geode.admin.Statistic;
-import org.apache.geode.admin.SystemMember;
-import org.apache.geode.internal.Assert;
-import org.apache.geode.internal.admin.Stat;
-import org.apache.geode.internal.admin.StatResource;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-
 /**
  * Provides monitoring of a statistic resource.
  *
  * @since GemFire 3.5
  */
-public class StatisticResourceImpl implements org.apache.geode.admin.StatisticResource {
+public class StatisticResourceImpl{
+//public class StatisticResourceImpl implements org.apache.geode.admin.StatisticResource {
 
   /** The underlying remote StatResource which this object delegates to */
-  protected StatResource statResource;
+//  protected StatResource statResource;
   /** Displayable name of this statistic resource */
   protected String name;
   /** Description of this statistic resource */
@@ -41,9 +31,9 @@ public class StatisticResourceImpl implements org.apache.geode.admin.StatisticRe
   /** Classification type of this statistic resource */
   protected String type;
   /** GemFire system member which owns this statistic resource */
-  protected SystemMember member;
+//  protected SystemMember member;
   /** The array of statistics in this resource */
-  protected Statistic[] statistics;
+//  protected Statistic[] statistics;
 
   // -------------------------------------------------------------------------
   // Constructor(s)
@@ -52,19 +42,16 @@ public class StatisticResourceImpl implements org.apache.geode.admin.StatisticRe
   /**
    * Constructs an instance of StatisticResourceImpl.
    *
-   * @param statResource the admin StatResource to manage/monitor
-   * @param member the SystemMember owning this resource
-   * @exception org.apache.geode.admin.AdminException if unable to create this StatisticResource for
    *            administration
    */
-  public StatisticResourceImpl(StatResource statResource, SystemMember member)
-      throws org.apache.geode.admin.AdminException {
-    this.statResource = statResource;
-    this.member = member;
-    this.name = this.statResource.getName();
-    this.description = this.statResource.getDescription();
-    this.type = this.statResource.getType();
-  }
+//  public StatisticResourceImpl(StatResource statResource, SystemMember member)
+//      throws org.apache.geode.admin.AdminException {
+//    this.statResource = statResource;
+//    this.member = member;
+//    this.name = this.statResource.getName();
+//    this.description = this.statResource.getDescription();
+//    this.type = this.statResource.getType();
+//  }
 
   // -------------------------------------------------------------------------
   // Attributes accessors and mutators
@@ -82,53 +69,53 @@ public class StatisticResourceImpl implements org.apache.geode.admin.StatisticRe
     return this.type;
   }
 
-  public String getOwner() {
-    return this.member.toString();
-  }
-
-  public Statistic[] getStatistics() {
-    if (this.statistics == null) {
-      try {
-        refresh();
-      } catch (AdminException e) {
-        this.statistics = new Statistic[0];
-      }
-    }
-    return this.statistics;
-  }
-
-  public long getUniqueId() {
-    return this.statResource.getResourceUniqueID();
-  }
+//  public String getOwner() {
+//    return this.member.toString();
+//  }
+
+//  public Statistic[] getStatistics() {
+//    if (this.statistics == null) {
+//      try {
+//        refresh();
+//      } catch (AdminException e) {
+//        this.statistics = new Statistic[0];
+//      }
+//    }
+//    return this.statistics;
+//  }
+
+//  public long getUniqueId() {
+//    return this.statResource.getResourceUniqueID();
+//  }
 
   // -------------------------------------------------------------------------
   // Operations
   // -------------------------------------------------------------------------
 
-  public void refresh() throws org.apache.geode.admin.AdminException {
-    Stat[] stats = null;
-    if (this.statResource != null) {
-      stats = this.statResource.getStats();
-    }
-    if (stats == null || stats.length < 1) {
-      throw new AdminException(
-          LocalizedStrings.StatisticResourceImpl_FAILED_TO_REFRESH_STATISTICS_0_FOR_1
-              .toLocalizedString(getType() + "-" + getName(), getOwner()));
-    }
-
-    if (this.statistics == null || this.statistics.length < 1) {
-      // define new statistics instances...
-      List statList = new ArrayList();
-      for (int i = 0; i < stats.length; i++) {
-        statList.add(createStatistic(stats[i]));
-      }
-      this.statistics = (Statistic[]) statList.toArray(new Statistic[0]);
-    } else {
-      // update the existing instances...
-      for (int i = 0; i < stats.length; i++) {
-        updateStatistic(stats[i]);
-      }
-    }
+  public void refresh() {
+//    Stat[] stats = null;
+//    if (this.statResource != null) {
+//      stats = this.statResource.getStats();
+//    }
+//    if (stats == null || stats.length < 1) {
+//      throw new AdminException(
+//          LocalizedStrings.StatisticResourceImpl_FAILED_TO_REFRESH_STATISTICS_0_FOR_1
+//              .toLocalizedString(getType() + "-" + getName(), getOwner()));
+//    }
+
+//    if (this.statistics == null || this.statistics.length < 1) {
+//      // define new statistics instances...
+//      List statList = new ArrayList();
+//      for (int i = 0; i < stats.length; i++) {
+//        statList.add(createStatistic(stats[i]));
+//      }
+//      this.statistics = (Statistic[]) statList.toArray(new Statistic[0]);
+//    } else {
+//      // update the existing instances...
+//      for (int i = 0; i < stats.length; i++) {
+//        updateStatistic(stats[i]);
+//      }
+//    }
   }
 
   // -------------------------------------------------------------------------
@@ -137,29 +124,27 @@ public class StatisticResourceImpl implements org.apache.geode.admin.StatisticRe
 
   /**
    * Updates the value of the {@link Statistic} corresponding to the internal
-   * {@link org.apache.geode.internal.admin.Stat}
    *
    * @param stat the internal stat to use in updating the matching statistic
    */
-  private void updateStatistic(Stat stat) {
-    for (int i = 0; i < this.statistics.length; i++) {
-      if (this.statistics[i].getName().equals(stat.getName())) {
-        ((StatisticImpl) this.statistics[i]).setStat(stat);
-        return;
-      }
-    }
-    Assert.assertTrue(false, "Unknown stat: " + stat.getName());
-  }
+//  private void updateStatistic(Stat stat) {
+//    for (int i = 0; i < this.statistics.length; i++) {
+//      if (this.statistics[i].getName().equals(stat.getName())) {
+//        ((StatisticImpl) this.statistics[i]).setStat(stat);
+//        return;
+//      }
+//    }
+//    Assert.assertTrue(false, "Unknown stat: " + stat.getName());
+//  }
 
   /**
    * Creates a new {@link StatisticImpl} to represent the internal
-   * {@link org.apache.geode.internal.admin.Stat}
    *
    * @param stat the internal stat to wrap in a new statistic
    */
-  protected Statistic createStatistic(Stat stat) {
-    return new StatisticImpl(stat);
-  }
+//  protected Statistic createStatistic(Stat stat) {
+//    return new StatisticImpl(stat);
+//  }
 
   /**
    * Returns a string representation of the object.
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheImpl.java
index 1ccb48a..9340614 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberCacheImpl.java
@@ -36,8 +36,6 @@ import org.apache.geode.internal.ObjIdMap;
 import org.apache.geode.internal.admin.AdminBridgeServer;
 import org.apache.geode.internal.admin.CacheInfo;
 import org.apache.geode.internal.admin.GemFireVM;
-import org.apache.geode.internal.admin.Stat;
-import org.apache.geode.internal.admin.StatResource;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
 /**
@@ -181,54 +179,54 @@ public class SystemMemberCacheImpl implements SystemMemberCache {
 
   // internal methods
   private void initStats() {
-    StatResource resource = this.info.getPerfStats();
-    if (resource == null) {
-      // See bug 31397
-      Assert.assertTrue(this.isClosed());
-      return;
-    }
-
-    Stat[] stats = resource.getStats();
-    if (stats == null || stats.length < 1) {
-      this.statistics = new Statistic[0];
-      return;
-    }
+//    StatResource resource = this.info.getPerfStats();
+//    if (resource == null) {
+//      // See bug 31397
+//      Assert.assertTrue(this.isClosed());
+//      return;
+//    }
+//
+//    Stat[] stats = resource.getStats();
+//    if (stats == null || stats.length < 1) {
+//      this.statistics = new Statistic[0];
+//      return;
+//    }
 
     // define new statistics instances...
-    List statList = new ArrayList();
-    for (int i = 0; i < stats.length; i++) {
-      statList.add(createStatistic(stats[i]));
-    }
-    this.statistics = (Statistic[]) statList.toArray(new Statistic[statList.size()]);
+//    List statList = new ArrayList();
+//    for (int i = 0; i < stats.length; i++) {
+//      statList.add(createStatistic(stats[i]));
+//    }
+//    this.statistics = (Statistic[]) statList.toArray(new Statistic[statList.size()]);
   }
 
   private void updateStats() {
-    StatResource resource = this.info.getPerfStats();
-    if (resource == null) {
-      // See bug 31397
-      Assert.assertTrue(this.isClosed());
-      return;
-    }
-
-    Stat[] stats = resource.getStats();
-    if (stats == null || stats.length < 1) {
-      return;
-    }
-
-    for (int i = 0; i < stats.length; i++) {
-      updateStatistic(stats[i]);
-    }
+//    StatResource resource = this.info.getPerfStats();
+//    if (resource == null) {
+//      // See bug 31397
+//      Assert.assertTrue(this.isClosed());
+//      return;
+//    }
+//
+//    Stat[] stats = resource.getStats();
+//    if (stats == null || stats.length < 1) {
+//      return;
+//    }
+//
+//    for (int i = 0; i < stats.length; i++) {
+//      updateStatistic(stats[i]);
+//    }
   }
 
-  private void updateStatistic(Stat stat) {
-    for (int i = 0; i < this.statistics.length; i++) {
-      if (this.statistics[i].getName().equals(stat.getName())) {
-        ((StatisticImpl) this.statistics[i]).setStat(stat);
-        return;
-      }
-    }
-    Assert.assertTrue(false, "Unknown stat: " + stat.getName());
-  }
+//  private void updateStatistic(Stat stat) {
+//    for (int i = 0; i < this.statistics.length; i++) {
+//      if (this.statistics[i].getName().equals(stat.getName())) {
+//        ((StatisticImpl) this.statistics[i]).setStat(stat);
+//        return;
+//      }
+//    }
+//    Assert.assertTrue(false, "Unknown stat: " + stat.getName());
+//  }
 
   /**
    * Returns the <code>CacheInfo</code> that describes this cache. Note that this operation does not
@@ -242,9 +240,9 @@ public class SystemMemberCacheImpl implements SystemMemberCache {
     return this.vm;
   }
 
-  protected Statistic createStatistic(Stat stat) {
-    return new StatisticImpl(stat);
-  }
+//  protected Statistic createStatistic(Stat stat) {
+//    return new StatisticImpl(stat);
+//  }
 
   protected SystemMemberRegion createSystemMemberRegion(Region r)
       throws org.apache.geode.admin.AdminException {
diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberImpl.java
index 0341c9a..ed30941 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/internal/SystemMemberImpl.java
@@ -43,7 +43,6 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 import org.apache.geode.internal.Config;
 import org.apache.geode.internal.ConfigSource;
 import org.apache.geode.internal.admin.GemFireVM;
-import org.apache.geode.internal.admin.StatResource;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 
@@ -217,17 +216,17 @@ public class SystemMemberImpl implements org.apache.geode.admin.SystemMember,
   public StatisticResource[] getStat(String statisticsTypeName)
       throws org.apache.geode.admin.AdminException {
     StatisticResource[] res = new StatisticResource[0];
-    if (this.vm != null) {
-      res = getStatsImpl(this.vm.getStats(statisticsTypeName));
-    }
+//    if (this.vm != null) {
+//      res = getStatsImpl(this.vm.getStats(statisticsTypeName));
+//    }
     return res.length == 0 ? null : res;
   }
 
   public StatisticResource[] getStats() throws org.apache.geode.admin.AdminException {
     StatisticResource[] statsImpl = new StatisticResource[0];
-    if (this.vm != null) {
-      statsImpl = getStatsImpl(this.vm.getStats(null));
-    }
+//    if (this.vm != null) {
+//      statsImpl = getStatsImpl(this.vm.getStats(null));
+//    }
     return statsImpl;
   }
 
@@ -434,10 +433,10 @@ public class SystemMemberImpl implements org.apache.geode.admin.SystemMember,
    * @param stat the internal stat resource to wrap with {@link StatisticResource}
    * @return new impl instance of {@link StatisticResource}
    */
-  protected StatisticResource createStatisticResource(StatResource stat)
-      throws org.apache.geode.admin.AdminException {
-    return new StatisticResourceImpl(stat, this);
-  }
+//  protected StatisticResource createStatisticResource(StatResource stat)
+//      throws org.apache.geode.admin.AdminException {
+//    return new StatisticResourceImpl(stat, this);
+//  }
 
   /**
    * Template method for creating {@link ConfigurationParameter}.
@@ -466,14 +465,14 @@ public class SystemMemberImpl implements org.apache.geode.admin.SystemMember,
   }
 
   /** Wrap the internal stats with impls of {@link StatisticResource} */
-  protected StatisticResource[] getStatsImpl(StatResource[] stats)
-      throws org.apache.geode.admin.AdminException {
-    List statList = new ArrayList();
-    for (int i = 0; i < stats.length; i++) {
-      statList.add(createStatisticResource(stats[i]));
-    }
-    return (StatisticResource[]) statList.toArray(new StatisticResource[0]);
-  }
+//  protected StatisticResource[] getStatsImpl(StatResource[] stats)
+//      throws org.apache.geode.admin.AdminException {
+//    List statList = new ArrayList();
+//    for (int i = 0; i < stats.length; i++) {
+//      statList.add(createStatisticResource(stats[i]));
+//    }
+//    return (StatisticResource[]) statList.toArray(new StatisticResource[0]);
+//  }
 
   public String[] getRoles() {
     Set roles = this.internalId.getRoles();
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AdminDistributedSystemJmxImpl.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AdminDistributedSystemJmxImpl.java
index 403dd14..09ad8ba 100755
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AdminDistributedSystemJmxImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AdminDistributedSystemJmxImpl.java
@@ -85,9 +85,6 @@ import org.apache.geode.internal.admin.ApplicationVM;
 import org.apache.geode.internal.admin.ClientMembershipMessage;
 import org.apache.geode.internal.admin.GemFireVM;
 import org.apache.geode.internal.admin.GfManagerAgent;
-import org.apache.geode.internal.admin.StatAlert;
-import org.apache.geode.internal.admin.StatAlertDefinition;
-import org.apache.geode.internal.admin.remote.UpdateAlertDefinitionMessage;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.InternalLogWriter;
 import org.apache.geode.internal.logging.LogService;
@@ -103,7 +100,8 @@ import org.apache.geode.internal.logging.log4j.LocalizedMessage;
  * @since GemFire 3.5
  */
 public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
-    implements ManagedResource, DistributedSystemConfig, StatAlertsAggregator {
+//    implements ManagedResource, DistributedSystemConfig, StatAlertsAggregator {
+    implements ManagedResource, DistributedSystemConfig{
 
   private static final Logger logger = LogService.getLogger();
 
@@ -990,7 +988,7 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
       super.connect(logWriter);
 
       // Load existing StatAlert Definitions
-      readAlertDefinitionsAsSerializedObjects();
+//      readAlertDefinitionsAsSerializedObjects();
 
       /* Add Cache Listener to listen to Cache & Region create/destroy events */
       if (logger.isDebugEnabled()) {
@@ -1023,7 +1021,7 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
       super.disconnect();
 
       // Save existing StatAlert Definitions
-      saveAlertDefinitionsAsSerializedObjects();
+//      saveAlertDefinitionsAsSerializedObjects();
 
       /* Remove Cache Listener to listen to Cache & Region create/destroy events */
       if (logger.isDebugEnabled()) {
@@ -1424,11 +1422,11 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @return StatAlertDefinition reference to an instance of StatAlertDefinition
    * @since GemFire 5.7
    */
-  private StatAlertDefinition getAlertDefinition(int alertDefinitionId) {
-    synchronized (ALERT_DEFINITIONS) {
-      return (StatAlertDefinition) ALERT_DEFINITIONS.get(Integer.valueOf(alertDefinitionId));
-    }
-  }
+//  private StatAlertDefinition getAlertDefinition(int alertDefinitionId) {
+//    synchronized (ALERT_DEFINITIONS) {
+//      return (StatAlertDefinition) ALERT_DEFINITIONS.get(Integer.valueOf(alertDefinitionId));
+//    }
+//  }
 
   /*
    * private void setAlertDefinition(StatAlertDefinition alertDefinition) {
@@ -1441,131 +1439,131 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @param alertDefinition StatAlertDefinition to retrieve
    * @since GemFire 5.7
    */
-  public StatAlertDefinition getAlertDefinition(StatAlertDefinition alertDefinition) {
-    return getAlertDefinition(alertDefinition.getId());
-  }
+//  public StatAlertDefinition getAlertDefinition(StatAlertDefinition alertDefinition) {
+//    return getAlertDefinition(alertDefinition.getId());
+//  }
 
   /**
    * This method is used to write existing StatAlertDefinitions to a file
    */
-  protected void readAlertDefinitionsAsSerializedObjects() {
-    StatAlertDefinition[] defns = new StatAlertDefinition[0];
-
-    File serFile = null;
-    FileInputStream foStr = null;
-    DataInputStream ooStr = null;
-
-    try {
-      serFile = new File(statAlertDefnSerFile);
-
-      if (!canWriteToFile(serFile)) {/* can not write a file */
-        canPersistStatAlertDefs = false;
-      }
-      if (!serFile.exists()) {/* file does not exist */
-        return;
-      }
-
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "AdminDistributedSystemJmxImpl.readAlertDefinitionsAsSerializedObjects: File: {}",
-            serFile.getPath());
-      }
-
-      foStr = new FileInputStream(serFile);
-      ooStr = new DataInputStream(foStr);
-      defns = (StatAlertDefinition[]) DataSerializer.readObjectArray(ooStr);
-    } catch (ClassNotFoundException cnfEx) {
-      logger.error(LocalizedMessage.create(
-          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_LOADING_STATALERTDEFINITIONS_1,
-          new Object[] {cnfEx.getClass().getName(), statAlertDefnSerFile}), cnfEx);
-      canPersistStatAlertDefs = false;
-    } catch (IOException ex) {
-      logger.error(LocalizedMessage.create(
-          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_LOADING_STATALERTDEFINITIONS_1_LOADING_ABORTED,
-          new Object[] {ex.getClass().getName(), statAlertDefnSerFile}), ex);
-      canPersistStatAlertDefs = false;
-    } finally {
-      if (foStr != null) {
-        try {
-          foStr.close();
-        } catch (IOException ex) {
-          ;
-        }
-      }
-      if (ooStr != null) {
-        try {
-          ooStr.close();
-        } catch (IOException ex) {
-          ;
-        }
-      }
-    }
-
-    for (int i = 0; i < defns.length; i++) {
-      updateAlertDefinition(defns[i]);
-    }
-  }
+//  protected void readAlertDefinitionsAsSerializedObjects() {
+//    StatAlertDefinition[] defns = new StatAlertDefinition[0];
+//
+//    File serFile = null;
+//    FileInputStream foStr = null;
+//    DataInputStream ooStr = null;
+//
+//    try {
+//      serFile = new File(statAlertDefnSerFile);
+//
+//      if (!canWriteToFile(serFile)) {/* can not write a file */
+//        canPersistStatAlertDefs = false;
+//      }
+//      if (!serFile.exists()) {/* file does not exist */
+//        return;
+//      }
+//
+//      if (logger.isDebugEnabled()) {
+//        logger.debug(
+//            "AdminDistributedSystemJmxImpl.readAlertDefinitionsAsSerializedObjects: File: {}",
+//            serFile.getPath());
+//      }
+//
+//      foStr = new FileInputStream(serFile);
+//      ooStr = new DataInputStream(foStr);
+//      defns = (StatAlertDefinition[]) DataSerializer.readObjectArray(ooStr);
+//    } catch (ClassNotFoundException cnfEx) {
+//      logger.error(LocalizedMessage.create(
+//          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_LOADING_STATALERTDEFINITIONS_1,
+//          new Object[] {cnfEx.getClass().getName(), statAlertDefnSerFile}), cnfEx);
+//      canPersistStatAlertDefs = false;
+//    } catch (IOException ex) {
+//      logger.error(LocalizedMessage.create(
+//          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_LOADING_STATALERTDEFINITIONS_1_LOADING_ABORTED,
+//          new Object[] {ex.getClass().getName(), statAlertDefnSerFile}), ex);
+//      canPersistStatAlertDefs = false;
+//    } finally {
+//      if (foStr != null) {
+//        try {
+//          foStr.close();
+//        } catch (IOException ex) {
+//          ;
+//        }
+//      }
+//      if (ooStr != null) {
+//        try {
+//          ooStr.close();
+//        } catch (IOException ex) {
+//          ;
+//        }
+//      }
+//    }
+//
+//    for (int i = 0; i < defns.length; i++) {
+//      updateAlertDefinition(defns[i]);
+//    }
+//  }
 
   /**
    * This method is used to write existing StatAlertDefinitions to a file
    */
-  public void saveAlertDefinitionsAsSerializedObjects() {
-    File serFile = null;
-    FileOutputStream foStr = null;
-    DataOutputStream ooStr = null;
-    try {
-      serFile = new File(statAlertDefnSerFile);
-
-
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "AdminDistributedSystemJmxImpl.saveAlertDefinitionsAsSerializedObjects: File: {}",
-            serFile.getPath());
-      }
-
-      if (!canWriteToFile(serFile)) {
-        return;
-      }
-
-      foStr = new FileOutputStream(serFile);
-      ooStr = new DataOutputStream(foStr);
-
-      int numOfAlerts = 0;
-      StatAlertDefinition[] defs = null;
-
-      synchronized (ALERT_DEFINITIONS) {
-        numOfAlerts = ALERT_DEFINITIONS.size();
-        defs = new StatAlertDefinition[numOfAlerts];
-
-        int i = 0;
-        for (Iterator iter = ALERT_DEFINITIONS.keySet().iterator(); iter.hasNext();) {
-          Integer key = (Integer) iter.next();
-          StatAlertDefinition readDefn = (StatAlertDefinition) ALERT_DEFINITIONS.get(key);
-          defs[i] = readDefn;
-          i++;
-        }
-      }
-
-      DataSerializer.writeObjectArray(defs, ooStr);
-    } catch (IOException ex) {
-      logger.error(LocalizedMessage.create(
-          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_SAVING_STATALERTDEFINITIONS_1,
-          new Object[] {ex.getClass().getName(), statAlertDefnSerFile}), ex);
-    } finally {
-      if (foStr != null)
-        try {
-          foStr.close();
-        } catch (IOException ex) {
-          ;
-        }
-      if (ooStr != null)
-        try {
-          ooStr.close();
-        } catch (IOException ex) {
-          ;
-        }
-    }
-  }
+//  public void saveAlertDefinitionsAsSerializedObjects() {
+//    File serFile = null;
+//    FileOutputStream foStr = null;
+//    DataOutputStream ooStr = null;
+//    try {
+//      serFile = new File(statAlertDefnSerFile);
+//
+//
+//      if (logger.isDebugEnabled()) {
+//        logger.debug(
+//            "AdminDistributedSystemJmxImpl.saveAlertDefinitionsAsSerializedObjects: File: {}",
+//            serFile.getPath());
+//      }
+//
+//      if (!canWriteToFile(serFile)) {
+//        return;
+//      }
+//
+//      foStr = new FileOutputStream(serFile);
+//      ooStr = new DataOutputStream(foStr);
+//
+//      int numOfAlerts = 0;
+//      StatAlertDefinition[] defs = null;
+//
+//      synchronized (ALERT_DEFINITIONS) {
+//        numOfAlerts = ALERT_DEFINITIONS.size();
+//        defs = new StatAlertDefinition[numOfAlerts];
+//
+//        int i = 0;
+//        for (Iterator iter = ALERT_DEFINITIONS.keySet().iterator(); iter.hasNext();) {
+//          Integer key = (Integer) iter.next();
+//          StatAlertDefinition readDefn = (StatAlertDefinition) ALERT_DEFINITIONS.get(key);
+//          defs[i] = readDefn;
+//          i++;
+//        }
+//      }
+//
+//      DataSerializer.writeObjectArray(defs, ooStr);
+//    } catch (IOException ex) {
+//      logger.error(LocalizedMessage.create(
+//          LocalizedStrings.AdminDistributedSystem_ENCOUNTERED_A_0_WHILE_SAVING_STATALERTDEFINITIONS_1,
+//          new Object[] {ex.getClass().getName(), statAlertDefnSerFile}), ex);
+//    } finally {
+//      if (foStr != null)
+//        try {
+//          foStr.close();
+//        } catch (IOException ex) {
+//          ;
+//        }
+//      if (ooStr != null)
+//        try {
+//          ooStr.close();
+//        } catch (IOException ex) {
+//          ;
+//        }
+//    }
+//  }
 
   /**
    * Checks if the given file is writable.
@@ -1617,32 +1615,32 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @param alertDefinition alertDefinition to be updated
    * @since GemFire 5.7
    */
-  public void updateAlertDefinition(StatAlertDefinition alertDefinition) {
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Entered AdminDistributedSystemJmxImpl.updateAlertDefinition(StatAlertDefinition) *****");
-    }
-    /*
-     * What to update in the alert definition? There should be another argument or arguments in a
-     * map. 1. Need to update the list/map of alert definitions across members.
-     */
-    synchronized (ALERT_DEFINITIONS) {
-      ALERT_DEFINITIONS.put(Integer.valueOf(alertDefinition.getId()), alertDefinition);
-
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "AdminDistributedSystemJmxImpl.updateAlertDefinition : alertDefinition :: id={} :: {}",
-            alertDefinition.getId(), alertDefinition.getStringRepresentation());
-      }
-
-      /* TODO: add code to retry on failure */
-      notifyMembersForAlertDefinitionChange(alertDefinition);
-    }
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Exiting AdminDistributedSystemJmxImpl.updateAlertDefinition(StatAlertDefinition) *****");
-    }
-  }
+//  public void updateAlertDefinition(StatAlertDefinition alertDefinition) {
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Entered AdminDistributedSystemJmxImpl.updateAlertDefinition(StatAlertDefinition) *****");
+//    }
+//    /*
+//     * What to update in the alert definition? There should be another argument or arguments in a
+//     * map. 1. Need to update the list/map of alert definitions across members.
+//     */
+//    synchronized (ALERT_DEFINITIONS) {
+//      ALERT_DEFINITIONS.put(Integer.valueOf(alertDefinition.getId()), alertDefinition);
+//
+//      if (logger.isDebugEnabled()) {
+//        logger.debug(
+//            "AdminDistributedSystemJmxImpl.updateAlertDefinition : alertDefinition :: id={} :: {}",
+//            alertDefinition.getId(), alertDefinition.getStringRepresentation());
+//      }
+//
+//      /* TODO: add code to retry on failure */
+//      notifyMembersForAlertDefinitionChange(alertDefinition);
+//    }
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Exiting AdminDistributedSystemJmxImpl.updateAlertDefinition(StatAlertDefinition) *****");
+//    }
+//  }
 
   /**
    * This method can be used to remove alert definition for the Stat mentioned. This method should
@@ -1652,28 +1650,28 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @param defId id of the alert definition to be removed
    * @since GemFire 5.7
    */
-  public void removeAlertDefinition(Integer defId) {
-    if (logger.isDebugEnabled()) {
-      logger.debug("Entered AdminDistributedSystemJmxImpl.removeAlertDefinition id *****");
-    }
-    /*
-     * alert passed to be deleted from the list/map of alerts on JMX MBean & all Member MBeans
-     */
-    synchronized (ALERT_DEFINITIONS) {
-      StatAlertDefinition alertDefinition = (StatAlertDefinition) ALERT_DEFINITIONS.get(defId);
-      if (alertDefinition != null) {
-        ALERT_DEFINITIONS.remove(defId);
-        synchronized (alertsStore) {
-          alertsStore.remove(defId);
-        }
-        /* TODO: add code to retry on failure */
-        notifyMembersForAlertDefinitionRemoval(alertDefinition);
-      }
-    }
-    if (logger.isDebugEnabled()) {
-      logger.debug("Exiting AdminDistributedSystemJmxImpl.removeAlertDefinition() *****");
-    }
-  }
+//  public void removeAlertDefinition(Integer defId) {
+//    if (logger.isDebugEnabled()) {
+//      logger.debug("Entered AdminDistributedSystemJmxImpl.removeAlertDefinition id *****");
+//    }
+//    /*
+//     * alert passed to be deleted from the list/map of alerts on JMX MBean & all Member MBeans
+//     */
+//    synchronized (ALERT_DEFINITIONS) {
+//      StatAlertDefinition alertDefinition = (StatAlertDefinition) ALERT_DEFINITIONS.get(defId);
+//      if (alertDefinition != null) {
+//        ALERT_DEFINITIONS.remove(defId);
+//        synchronized (alertsStore) {
+//          alertsStore.remove(defId);
+//        }
+//        /* TODO: add code to retry on failure */
+//        notifyMembersForAlertDefinitionRemoval(alertDefinition);
+//      }
+//    }
+//    if (logger.isDebugEnabled()) {
+//      logger.debug("Exiting AdminDistributedSystemJmxImpl.removeAlertDefinition() *****");
+//    }
+//  }
 
   /**
    * Convenience method to check whether an alert definition is created.
@@ -1682,17 +1680,17 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @return true if the alert definition is already created, false otherwise
    * @since GemFire 5.7
    */
-  public boolean isAlertDefinitionCreated(StatAlertDefinition alertDefinition) {
-    /*
-     * Need to maintain a map of stat against the StatAlertDefinitions. check in that map whether
-     * the alert definition is there for the given alert
-     *
-     * TODO: optimize to use Map.containsKey - DONE
-     */
-    synchronized (ALERT_DEFINITIONS) {
-      return ALERT_DEFINITIONS.containsKey(Integer.valueOf(alertDefinition.getId()));
-    }
-  }
+//  public boolean isAlertDefinitionCreated(StatAlertDefinition alertDefinition) {
+//    /*
+//     * Need to maintain a map of stat against the StatAlertDefinitions. check in that map whether
+//     * the alert definition is there for the given alert
+//     *
+//     * TODO: optimize to use Map.containsKey - DONE
+//     */
+//    synchronized (ALERT_DEFINITIONS) {
+//      return ALERT_DEFINITIONS.containsKey(Integer.valueOf(alertDefinition.getId()));
+//    }
+//  }
 
   /**
    * Returns the refresh interval for the Stats in seconds.
@@ -1751,42 +1749,42 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    *
    * @param alertDef stat alert definition that got changed
    */
-  private void notifyMembersForAlertDefinitionChange(StatAlertDefinition alertDef) {
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Entered AdminDistributedSystemJmxImpl.notifyMembersForAlertDefinitionChange(StatAlertDefinition) *****");
-    }
-    GfManagerAgent agent = getGfManagerAgent();
-    StatAlertDefinition[] alertDefs = new StatAlertDefinition[] {alertDef};
-    ApplicationVM[] VMs = agent.listApplications();
-
-    for (int i = 0; i < VMs.length; i++) {
-      VMs[i].updateAlertDefinitions(alertDefs,
-          UpdateAlertDefinitionMessage.UPDATE_ALERT_DEFINITION);
-    }
-
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Exiting AdminDistributedSystemJmxImpl.notifyMembersForAlertDefinitionChange(StatAlertDefinition) "
-              + VMs.length + " members notified.*****");
-    }
-  }
+//  private void notifyMembersForAlertDefinitionChange(StatAlertDefinition alertDef) {
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Entered AdminDistributedSystemJmxImpl.notifyMembersForAlertDefinitionChange(StatAlertDefinition) *****");
+//    }
+//    GfManagerAgent agent = getGfManagerAgent();
+//    StatAlertDefinition[] alertDefs = new StatAlertDefinition[] {alertDef};
+//    ApplicationVM[] VMs = agent.listApplications();
+//
+//    for (int i = 0; i < VMs.length; i++) {
+//      VMs[i].updateAlertDefinitions(alertDefs,
+//          UpdateAlertDefinitionMessage.UPDATE_ALERT_DEFINITION);
+//    }
+//
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Exiting AdminDistributedSystemJmxImpl.notifyMembersForAlertDefinitionChange(StatAlertDefinition) "
+//              + VMs.length + " members notified.*****");
+//    }
+//  }
 
   /**
    * An intermediate method to notify all members for removal of stat alert definition.
    *
    * @param alertDef stat alert definition to be removed
    */
-  private void notifyMembersForAlertDefinitionRemoval(StatAlertDefinition alertDef) {
-    GfManagerAgent agent = getGfManagerAgent();
-    StatAlertDefinition[] alertDefs = new StatAlertDefinition[] {alertDef};
-    ApplicationVM[] VMs = agent.listApplications();
-
-    for (int i = 0; i < VMs.length; i++) {
-      VMs[i].updateAlertDefinitions(alertDefs,
-          UpdateAlertDefinitionMessage.REMOVE_ALERT_DEFINITION);
-    }
-  }
+//  private void notifyMembersForAlertDefinitionRemoval(StatAlertDefinition alertDef) {
+//    GfManagerAgent agent = getGfManagerAgent();
+//    StatAlertDefinition[] alertDefs = new StatAlertDefinition[] {alertDef};
+//    ApplicationVM[] VMs = agent.listApplications();
+//
+//    for (int i = 0; i < VMs.length; i++) {
+//      VMs[i].updateAlertDefinitions(alertDefs,
+//          UpdateAlertDefinitionMessage.REMOVE_ALERT_DEFINITION);
+//    }
+//  }
 
   /**
    * This method can be used to set the AlertsManager for the newly joined member VM.
@@ -1811,20 +1809,20 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
     }
 
     // creating an array of stat alert definition objects
-    StatAlertDefinition[] alertDefs = new StatAlertDefinition[0];
-
-    Collection alertDefsCollection = null;
-    synchronized (ALERT_DEFINITIONS) {
-      alertDefsCollection = ALERT_DEFINITIONS.values();
-    }
-
-    alertDefs = (StatAlertDefinition[]) alertDefsCollection.toArray(alertDefs);
-
-    memberVM.setAlertsManager(alertDefs, getRefreshIntervalForStatAlerts() * 1000l, true);
-
-    if (logger.isDebugEnabled()) {
-      logger.debug("Exiting AdminDistributedSystemJmxImpl.setAlertsManager(GemFireVM) *****");
-    }
+//    StatAlertDefinition[] alertDefs = new StatAlertDefinition[0];
+//
+//    Collection alertDefsCollection = null;
+//    synchronized (ALERT_DEFINITIONS) {
+//      alertDefsCollection = ALERT_DEFINITIONS.values();
+//    }
+//
+//    alertDefs = (StatAlertDefinition[]) alertDefsCollection.toArray(alertDefs);
+//
+//    memberVM.setAlertsManager(alertDefs, getRefreshIntervalForStatAlerts() * 1000l, true);
+//
+//    if (logger.isDebugEnabled()) {
+//      logger.debug("Exiting AdminDistributedSystemJmxImpl.setAlertsManager(GemFireVM) *****");
+//    }
   }
 
   /**
@@ -1834,31 +1832,31 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * @return An array of all available StatAlertDefinition objects
    * @since GemFire 5.7
    */
-  public StatAlertDefinition[] getAllStatAlertDefinitions() {
-    if (logger.isDebugEnabled()) {
-      logger.debug("Entered AdminDistributedSystemJmxImpl.getAllStatAlertDefinitions() *****");
-    }
-
-    Collection alertDefs = null;
-    synchronized (ALERT_DEFINITIONS) {
-      alertDefs = ALERT_DEFINITIONS.values();
-    }
-
-    StatAlertDefinition[] alertDefsArr = null;
-
-    if (alertDefs != null) {
-      alertDefsArr = new StatAlertDefinition[alertDefs.size()];
-      alertDefsArr = (StatAlertDefinition[]) alertDefs.toArray(alertDefsArr);
-    } else {
-      alertDefsArr = new StatAlertDefinition[0];
-    }
-
-    if (logger.isDebugEnabled()) {
-      logger.debug("Exiting AdminDistributedSystemJmxImpl.getAllStatAlertDefinitions() *****");
-    }
-
-    return alertDefsArr;
-  }
+//  public StatAlertDefinition[] getAllStatAlertDefinitions() {
+//    if (logger.isDebugEnabled()) {
+//      logger.debug("Entered AdminDistributedSystemJmxImpl.getAllStatAlertDefinitions() *****");
+//    }
+//
+//    Collection alertDefs = null;
+//    synchronized (ALERT_DEFINITIONS) {
+//      alertDefs = ALERT_DEFINITIONS.values();
+//    }
+//
+//    StatAlertDefinition[] alertDefsArr = null;
+//
+//    if (alertDefs != null) {
+//      alertDefsArr = new StatAlertDefinition[alertDefs.size()];
+//      alertDefsArr = (StatAlertDefinition[]) alertDefs.toArray(alertDefsArr);
+//    } else {
+//      alertDefsArr = new StatAlertDefinition[0];
+//    }
+//
+//    if (logger.isDebugEnabled()) {
+//      logger.debug("Exiting AdminDistributedSystemJmxImpl.getAllStatAlertDefinitions() *****");
+//    }
+//
+//    return alertDefsArr;
+//  }
 
 
   /**
@@ -1866,98 +1864,96 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    * of stats can occur here. The array contains alert objects with alert def. ID & value.
    * AlertHelper class can be used to retrieve the corresponding alert definition.
    *
-   * @param alerts array of Alert class(contains alert def. ID & value)
-   * @param remoteVM Remote Member VM that sent Stat Alerts for processing the notifications to the
    *        clients
    */
-  public void processNotifications(StatAlert[] alerts, GemFireVM remoteVM) {
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Entered AdminDistributedSystemJmxImpl.processNotifications(StatAlert[{}], GemFireVM) *************",
-          alerts.length);
-    }
-
-    /*
-     * Notifications can not be processed if the remote VM is not available. NOTE: Should this
-     * method get the required GemFireVM information instead of its reference so that even if the
-     * member leaves we still have the information collected earlier to process the notification?
-     */
-    if (remoteVM == null) {
-      if (logger.isDebugEnabled()) {
-        logger.debug("Could not process stat alert notifications as given GemFireVM is null.");
-      }
-      return;
-    }
-
-    /*
-     * 1. The implementation idea is yet not clear. 2. The StatAlert array would received directly
-     * or from a request object.
-     */
-    ArrayList notificationObjects = new ArrayList();
-
-    String memberId = remoteVM.getId().getId();
-
-    final boolean isSystemWide = false;
-
-    StatAlert alert = null;
-    Integer defId = null;
-    for (int i = 0; i < alerts.length; i++) {
-      alert = alerts[i];
-
-      if (getAlertDefinition(alert.getDefinitionId()) == null)
-        continue; // Ignore any removed AlertDefns
-
-      /*
-       * 1. check if it's system-wide. 2. if system-wide keep, it in a collection (that should get
-       * cleared on timeout). Process all alerts when notifications from all members are received.
-       * Need to check if the member leaves meanwhile.
-       *
-       * 1. Check if function evaluation is required? 2. If it's not required, the notification
-       * should directly be sent to clients.
-       */
-
-      StatAlertNotification alertNotification = new StatAlertNotification(alert, memberId);
-
-      /*
-       * variable isSystemWide is created only for convienience, there should be an indication for
-       * the same in the alert definition. Currently there is no systemWide definition
-       *
-       * Evaluating system wide alerts: 1. It'll take time for aggregator to gather alerts from all
-       * members. Member might keep joining & leaving in between. The member for whom the stat-alert
-       * value was taken might have left & new ones might have joined leave until all the
-       * calculations are complete. A disclaimer to be put that these are not exact values. 2. How
-       * would the aggregator know that it has received alerts from all the managers? Is the concept
-       * of system-wide alerts valid? System-wide stats might be!
-       *
-       */
-      if (!isSystemWide) {
-        notificationObjects.add(alertNotification);
-        continue;
-      }
-      HashSet accumulatedAlertValues;
-      synchronized (alertsStore) {
-        accumulatedAlertValues = (HashSet) alertsStore.get(defId);
-
-        if (accumulatedAlertValues == null) {
-          accumulatedAlertValues = new HashSet();
-          alertsStore.put(defId, accumulatedAlertValues);
-        }
-      }
-      synchronized (accumulatedAlertValues) {
-        accumulatedAlertValues.add(alertNotification);
-      }
-    } // for ends
-
-    if (!notificationObjects.isEmpty()) {
-      /* TODO: should ths method send & forget or be fail-safe? */
-      sendNotifications(notificationObjects, getObjectName());
-    }
-
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "Exiting AdminDistributedSystemJmxImpl.processNotifications(StatAlert[], GemFireVM) *************");
-    }
-  }
+//  public void processNotifications(StatAlert[] alerts, GemFireVM remoteVM) {
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Entered AdminDistributedSystemJmxImpl.processNotifications(StatAlert[{}], GemFireVM) *************",
+//          alerts.length);
+//    }
+//
+//    /*
+//     * Notifications can not be processed if the remote VM is not available. NOTE: Should this
+//     * method get the required GemFireVM information instead of its reference so that even if the
+//     * member leaves we still have the information collected earlier to process the notification?
+//     */
+//    if (remoteVM == null) {
+//      if (logger.isDebugEnabled()) {
+//        logger.debug("Could not process stat alert notifications as given GemFireVM is null.");
+//      }
+//      return;
+//    }
+//
+//    /*
+//     * 1. The implementation idea is yet not clear. 2. The StatAlert array would received directly
+//     * or from a request object.
+//     */
+//    ArrayList notificationObjects = new ArrayList();
+//
+//    String memberId = remoteVM.getId().getId();
+//
+//    final boolean isSystemWide = false;
+//
+//    StatAlert alert = null;
+//    Integer defId = null;
+//    for (int i = 0; i < alerts.length; i++) {
+//      alert = alerts[i];
+//
+//      if (getAlertDefinition(alert.getDefinitionId()) == null)
+//        continue; // Ignore any removed AlertDefns
+//
+//      /*
+//       * 1. check if it's system-wide. 2. if system-wide keep, it in a collection (that should get
+//       * cleared on timeout). Process all alerts when notifications from all members are received.
+//       * Need to check if the member leaves meanwhile.
+//       *
+//       * 1. Check if function evaluation is required? 2. If it's not required, the notification
+//       * should directly be sent to clients.
+//       */
+//
+//      StatAlertNotification alertNotification = new StatAlertNotification(alert, memberId);
+//
+//      /*
+//       * variable isSystemWide is created only for convienience, there should be an indication for
+//       * the same in the alert definition. Currently there is no systemWide definition
+//       *
+//       * Evaluating system wide alerts: 1. It'll take time for aggregator to gather alerts from all
+//       * members. Member might keep joining & leaving in between. The member for whom the stat-alert
+//       * value was taken might have left & new ones might have joined leave until all the
+//       * calculations are complete. A disclaimer to be put that these are not exact values. 2. How
+//       * would the aggregator know that it has received alerts from all the managers? Is the concept
+//       * of system-wide alerts valid? System-wide stats might be!
+//       *
+//       */
+//      if (!isSystemWide) {
+//        notificationObjects.add(alertNotification);
+//        continue;
+//      }
+//      HashSet accumulatedAlertValues;
+//      synchronized (alertsStore) {
+//        accumulatedAlertValues = (HashSet) alertsStore.get(defId);
+//
+//        if (accumulatedAlertValues == null) {
+//          accumulatedAlertValues = new HashSet();
+//          alertsStore.put(defId, accumulatedAlertValues);
+//        }
+//      }
+//      synchronized (accumulatedAlertValues) {
+//        accumulatedAlertValues.add(alertNotification);
+//      }
+//    } // for ends
+//
+//    if (!notificationObjects.isEmpty()) {
+//      /* TODO: should ths method send & forget or be fail-safe? */
+//      sendNotifications(notificationObjects, getObjectName());
+//    }
+//
+//    if (logger.isDebugEnabled()) {
+//      logger.debug(
+//          "Exiting AdminDistributedSystemJmxImpl.processNotifications(StatAlert[], GemFireVM) *************");
+//    }
+//  }
 
   private byte[] convertNotificationsDataToByteArray(ArrayList notificationObjects) {
     if (logger.isDebugEnabled()) {
@@ -1988,57 +1984,57 @@ public class AdminDistributedSystemJmxImpl extends AdminDistributedSystemImpl
    *
    * @param notificationObjects list of StatAlertNotification objects
    */
-  private void sendNotifications(ArrayList notificationObjects, ObjectName objName) {
-    try {
-      if (logger.isDebugEnabled()) {
-        logger.debug("AdminDistributedSystemJmxImpl#sendNotifications: sending {} notifications",
-            notificationObjects.size());
-      }
-
-      byte[] notifBytes = convertNotificationsDataToByteArray(notificationObjects);
-      if (notifBytes != null) {
-        Notification notif = new Notification(NOTIF_STAT_ALERT, objName, // Pass the
-                                                                         // StatNotifications
-            notificationSequenceNumber.addAndGet(1), "StatAlert Notifications");
-        notif.setUserData(notifBytes);
-        this.modelMBean.sendNotification(notif);
-      } // IOException handled and logged in convertNotificationsDataToByteArray
-
-      StringBuffer buf = new StringBuffer();
-      for (int i = 0; i < notificationObjects.size(); i++) {
-        StatAlertNotification not = (StatAlertNotification) notificationObjects.get(i);
-        buf.append(not.toString(getAlertDefinition(not.getDefinitionId())));
-      }
-      if (isEmailNotificationEnabled) {
-        String mess =
-            LocalizedStrings.AdminDistributedSystemJmxImpl_STATISTICS_ALERT_FROM_DISTRIBUTED_SYSTEM_MEMBER_0_STATISTICS_1
-                .toLocalizedString(new Object[] {objName.getCanonicalName(), buf.toString()});
-        sendEmail(EML_SUBJ_PRFX_GFE_ALERT + EML_SUBJ_ITEM_GFE_DS + getName() + " <"
-            + LocalizedStrings.AdminDistributedSystemJmxImpl_STATISTICS_ALERT_FOR_MEMBER
-                .toLocalizedString()
-            + ">", mess);
-      }
-    } catch (javax.management.MBeanException e) {
-      logger.error(e.getMessage(), e);
-    } catch (RuntimeException e) {
-      logger.error(e.getMessage(), e);
-      throw e;
-    } catch (VirtualMachineError err) {
-      SystemFailure.initiateFailure(err);
-      // If this ever returns, rethrow the error. We're poisoned
-      // now, so don't let this thread continue.
-      throw err;
-    } catch (Error e) {
-      // Whenever you catch Error or Throwable, you must also
-      // catch VirtualMachineError (see above). However, there is
-      // _still_ a possibility that you are dealing with a cascading
-      // error condition, so you also need to check to see if the JVM
-      // is still usable:
-      SystemFailure.checkFailure();
-      logger.error(e.getMessage(), e);
-      throw e;
-    }
-  }
+//  private void sendNotifications(ArrayList notificationObjects, ObjectName objName) {
+//    try {
+//      if (logger.isDebugEnabled()) {
+//        logger.debug("AdminDistributedSystemJmxImpl#sendNotifications: sending {} notifications",
+//            notificationObjects.size());
+//      }
+//
+//      byte[] notifBytes = convertNotificationsDataToByteArray(notificationObjects);
+//      if (notifBytes != null) {
+//        Notification notif = new Notification(NOTIF_STAT_ALERT, objName, // Pass the
+//                                                                         // StatNotifications
+//            notificationSequenceNumber.addAndGet(1), "StatAlert Notifications");
+//        notif.setUserData(notifBytes);
+//        this.modelMBean.sendNotification(notif);
+//      } // IOException handled and logged in convertNotificationsDataToByteArray
+//
+//      StringBuffer buf = new StringBuffer();
+//      for (int i = 0; i < notificationObjects.size(); i++) {
+//        StatAlertNotification not = (StatAlertNotification) notificationObjects.get(i);
+//        buf.append(not.toString(getAlertDefinition(not.getDefinitionId())));
+//      }
+//      if (isEmailNotificationEnabled) {
+//        String mess =
+//            LocalizedStrings.AdminDistributedSystemJmxImpl_STATISTICS_ALERT_FROM_DISTRIBUTED_SYSTEM_MEMBER_0_STATISTICS_1
+//                .toLocalizedString(new Object[] {objName.getCanonicalName(), buf.toString()});
+//        sendEmail(EML_SUBJ_PRFX_GFE_ALERT + EML_SUBJ_ITEM_GFE_DS + getName() + " <"
+//            + LocalizedStrings.AdminDistributedSystemJmxImpl_STATISTICS_ALERT_FOR_MEMBER
+//                .toLocalizedString()
+//            + ">", mess);
+//      }
+//    } catch (javax.management.MBeanException e) {
+//      logger.error(e.getMessage(), e);
+//    } catch (RuntimeException e) {
+//      logger.error(e.getMessage(), e);
+//      throw e;
+//    } catch (VirtualMachineError err) {
+//      SystemFailure.initiateFailure(err);
+//      // If this ever returns, rethrow the error. We're poisoned
+//      // now, so don't let this thread continue.
+//      throw err;
+//    } catch (Error e) {
+//      // Whenever you catch Error or Throwable, you must also
+//      // catch VirtualMachineError (see above). However, there is
+//      // _still_ a possibility that you are dealing with a cascading
+//      // error condition, so you also need to check to see if the JVM
+//      // is still usable:
+//      SystemFailure.checkFailure();
+//      logger.error(e.getMessage(), e);
+//      throw e;
+//    }
+//  }
 
   /**
    * Sends an email to the configured recipients using configured email server. The given message
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/StatAlertsAggregator.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/StatAlertsAggregator.java
index 102d041..da8b2c9 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/StatAlertsAggregator.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/StatAlertsAggregator.java
@@ -15,8 +15,6 @@
 package org.apache.geode.admin.jmx.internal;
 
 import org.apache.geode.internal.admin.GemFireVM;
-import org.apache.geode.internal.admin.StatAlert;
-import org.apache.geode.internal.admin.StatAlertDefinition;
 
 /**
  * This interface represents an Aggregator entity and resides in JMXAgent. Responsibilities are as
@@ -37,14 +35,14 @@ public interface StatAlertsAggregator {
    *
    * @param alertDefinition StatAlertDefinition to retrieve
    */
-  StatAlertDefinition getAlertDefinition(StatAlertDefinition alertDefinition);
+//  StatAlertDefinition getAlertDefinition(StatAlertDefinition alertDefinition);
 
   /**
    * This method can be used to retrieve all available stat alert definitions.
    *
    * @return An array of all available StatAlertDefinition objects
    */
-  StatAlertDefinition[] getAllStatAlertDefinitions();
+//  StatAlertDefinition[] getAllStatAlertDefinitions();
 
   /**
    * This method can be used to update alert definition for the Stat mentioned. This method should
@@ -55,7 +53,7 @@ public interface StatAlertsAggregator {
    *
    * @param alertDefinition alertDefinition to be updated
    */
-  void updateAlertDefinition(StatAlertDefinition alertDefinition);
+//  void updateAlertDefinition(StatAlertDefinition alertDefinition);
 
   /**
    * This method can be used to remove alert definition for the Stat mentioned.
@@ -73,7 +71,7 @@ public interface StatAlertsAggregator {
    * @param alert alert definition to check whether already created
    * @return true if the alert definition is already created, false otherwise
    */
-  boolean isAlertDefinitionCreated(StatAlertDefinition alert);
+//  boolean isAlertDefinitionCreated(StatAlertDefinition alert);
 
   /**
    * This method can be used to set the AlertManager for the newly joined member VM.
@@ -101,9 +99,8 @@ public interface StatAlertsAggregator {
    * of stats can occur here. The array contains alert objects with alert def. ID & value.
    * AlertHelper class can be used to retrieve the corresponding alert definition.
    *
-   * @param alerts array of Alert class(contains alert def. ID & value)
    */
-  void processNotifications(StatAlert[] alerts, GemFireVM remoteVM);
+//  void processNotifications(StatAlert[] alerts, GemFireVM remoteVM);
 
   void processSystemwideNotifications();
 }
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetClientPRMetaDataOp.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetClientPRMetaDataOp.java
index 94ad7d1..eedc310 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetClientPRMetaDataOp.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetClientPRMetaDataOp.java
@@ -27,12 +27,11 @@ import org.apache.geode.internal.cache.tier.sockets.Message;
 import org.apache.geode.internal.cache.tier.sockets.Part;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.statistics.client.connection.ConnectionStats;
 
 /**
  * Retrieves {@link ClientPartitionAdvisor} for the specified PartitionedRegion from one of the
  * servers
- *
- *
  * @since GemFire 6.5
  */
 public class GetClientPRMetaDataOp {
@@ -44,7 +43,7 @@ public class GetClientPRMetaDataOp {
   }
 
   public static void execute(ExecutablePool pool, String regionFullPath,
-      ClientMetadataService cms) {
+                             ClientMetadataService cms) {
     AbstractOp op = new GetClientPRMetaDataOpImpl(regionFullPath, cms);
     if (logger.isDebugEnabled()) {
       logger.debug(
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetPDXEnumsOp.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetPDXEnumsOp.java
index fcc68b7..97d41ca 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetPDXEnumsOp.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/GetPDXEnumsOp.java
@@ -22,6 +22,7 @@ import org.apache.geode.internal.cache.tier.MessageType;
 import org.apache.geode.internal.cache.tier.sockets.Message;
 import org.apache.geode.internal.cache.tier.sockets.Part;
 import org.apache.geode.pdx.internal.EnumInfo;
+import org.apache.geode.statistics.client.connection.ConnectionStats;
 
 /**
  * Retrieve all known PDX types.
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PrimaryAckOp.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PrimaryAckOp.java
index 2e54586..1b181c4 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PrimaryAckOp.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PrimaryAckOp.java
@@ -19,6 +19,7 @@ import java.util.List;
 
 import org.apache.geode.internal.cache.tier.MessageType;
 import org.apache.geode.internal.cache.tier.sockets.Message;
+import org.apache.geode.statistics.client.connection.ConnectionStats;
 
 /**
  * Send the primary server acknowledgement on the events this client has received and processed from
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueConnectionImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueConnectionImpl.java
index c6f138d..20475b2 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueConnectionImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueConnectionImpl.java
@@ -29,6 +29,7 @@ import org.apache.geode.cache.client.internal.pooling.ConnectionDestroyedExcepti
 import org.apache.geode.distributed.internal.ServerLocation;
 import org.apache.geode.internal.cache.tier.sockets.ServerQueueStatus;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.statistics.client.connection.ConnectionStats;
 
 
 /**
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/RegisterInterestOp.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/RegisterInterestOp.java
index e7fe472..498a5fe 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/RegisterInterestOp.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/RegisterInterestOp.java
@@ -30,6 +30,7 @@ import org.apache.geode.internal.cache.tier.sockets.ChunkedMessage;
 import org.apache.geode.internal.cache.tier.sockets.Message;
 import org.apache.geode.internal.cache.tier.sockets.Part;
 import org.apache.geode.internal.cache.tier.sockets.VersionedObjectList;
+import org.apache.geode.statistics.client.connection.ConnectionStats;
 
 /**
  * Does a region registerInterest on a server
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/SortedResultsBag.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/SortedResultsBag.java
index 2195e26..0d7fb5b 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/SortedResultsBag.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/SortedResultsBag.java
@@ -24,7 +24,6 @@ import java.util.TreeMap;
 import org.apache.geode.cache.query.internal.types.CollectionTypeImpl;
 import org.apache.geode.cache.query.types.CollectionType;
 import org.apache.geode.cache.query.types.ObjectType;
-import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.statistics.cache.CachePerfStats;
 
 /**
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 45ea16a..44158e1 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
@@ -101,7 +101,6 @@ import org.apache.geode.internal.offheap.MemoryAllocator;
 import org.apache.geode.internal.offheap.OffHeapStorage;
 import org.apache.geode.internal.security.SecurityService;
 import org.apache.geode.internal.security.SecurityServiceFactory;
-import org.apache.geode.internal.statistics.platform.LinuxProcFsStatistics;
 import org.apache.geode.internal.tcp.ConnectionTable;
 import org.apache.geode.management.ManagementException;
 import org.apache.geode.security.GemFireSecurityException;
@@ -745,27 +744,28 @@ public class InternalDistributedSystem extends DistributedSystem {
               .createOffHeapStorage(offHeapMemorySize,this);
 
       // Note: this can only happen on a linux system
-      if (getConfig().getLockMemory()) {
-        // This calculation is not exact, but seems fairly close. So far we have
-        // not loaded much into the heap and the current RSS usage is already
-        // included the available memory calculation.
-        long avail = LinuxProcFsStatistics.getAvailableMemory(logger);
-        long size = offHeapMemorySize + Runtime.getRuntime().totalMemory();
-        if (avail < size) {
-          if (ALLOW_MEMORY_LOCK_WHEN_OVERCOMMITTED) {
-            logger.warn(LocalizedMessage.create(
-                LocalizedStrings.InternalDistributedSystem_MEMORY_OVERCOMMIT_WARN, size - avail));
-          } else {
-            throw new IllegalStateException(
-                LocalizedStrings.InternalDistributedSystem_MEMORY_OVERCOMMIT
-                    .toLocalizedString(avail, size));
-          }
-        }
-
-        logger.info("Locking memory. This may take a while...");
-        GemFireCacheImpl.lockMemory();
-        logger.info("Finished locking memory.");
-      }
+      //TODO: Udo re-enable the linux lockMemory func
+//      if (getConfig().getLockMemory()) {
+//        // This calculation is not exact, but seems fairly close. So far we have
+//        // not loaded much into the heap and the current RSS usage is already
+//        // included the available memory calculation.
+//        long avail = LinuxProcFsStatistics.getAvailableMemory(logger);
+//        long size = offHeapMemorySize + Runtime.getRuntime().totalMemory();
+//        if (avail < size) {
+//          if (ALLOW_MEMORY_LOCK_WHEN_OVERCOMMITTED) {
+//            logger.warn(LocalizedMessage.create(
+//                LocalizedStrings.InternalDistributedSystem_MEMORY_OVERCOMMIT_WARN, size - avail));
+//          } else {
+//            throw new IllegalStateException(
+//                LocalizedStrings.InternalDistributedSystem_MEMORY_OVERCOMMIT
+//                    .toLocalizedString(avail, size));
+//          }
+//        }
+//
+//        logger.info("Locking memory. This may take a while...");
+//        GemFireCacheImpl.lockMemory();
+//        logger.info("Finished locking memory.");
+//      }
 
       synchronized (this.isConnectedMutex) {
         this.isConnected = true;
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 83cbe71..49cd7c8 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -73,10 +73,8 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystemDisconnectedException;
 import org.apache.geode.distributed.DurableClientAttributes;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionMessage;
-import org.apache.geode.distributed.internal.DistributionStats;
 import org.apache.geode.distributed.internal.HighPriorityDistributionMessage;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.MemberAttributes;
@@ -104,6 +102,7 @@ import org.apache.geode.internal.logging.log4j.AlertAppender;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.tcp.MemberShunnedException;
+import org.apache.geode.statistics.distributed.DMStats;
 
 
 @SuppressWarnings("StatementWithEmptyBody")
@@ -1227,7 +1226,7 @@ public class JGroupsMessenger implements Messenger {
 
     @Override
     public void receive(Message jgmsg) {
-      long startTime = DistributionStats.getStatTime();
+      long startTime = System.nanoTime();
       try {
         if (services.getManager().shutdownInProgress()) {
           return;
@@ -1293,7 +1292,7 @@ public class JGroupsMessenger implements Messenger {
         }
 
       } finally {
-        long delta = DistributionStats.getStatTime() - startTime;
+        long delta = System.nanoTime() - startTime;
         JGroupsMessenger.this.services.getStatistics().incUDPDispatchRequestTime(delta);
       }
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
index c6d3738..d593076 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
@@ -82,8 +82,6 @@ import org.apache.geode.internal.logging.DateFormatter;
 import org.apache.geode.internal.logging.MergeLogFiles;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.statistics.StatArchiveReader;
-import org.apache.geode.internal.statistics.StatArchiveReader.ResourceInst;
-import org.apache.geode.internal.statistics.StatArchiveReader.StatValue;
 import org.apache.geode.internal.util.JavaCommandBuilder;
 import org.apache.geode.internal.util.PluckStacks;
 import org.apache.geode.internal.util.PluckStacks.ThreadStack;
@@ -614,7 +612,7 @@ public class SystemAdmin {
     }
   }
 
-  public static void backup(String targetDir) throws AdminException {
+  public static void backup(String targetDir)  {
     InternalDistributedSystem ads = getAdminCnx();
 
     // Baseline directory should be null if it was not provided on the command line
@@ -1212,8 +1210,8 @@ public class SystemAdmin {
           if (specs.length == 0) {
             Iterator it = reader.getResourceInstList().iterator();
             while (it.hasNext()) {
-              ResourceInst inst = (ResourceInst) it.next();
-              StatValue values[] = inst.getStatValues();
+              StatArchiveReader.ResourceInst inst = (StatArchiveReader.ResourceInst) it.next();
+              StatArchiveReader.StatValue values[] = inst.getStatValues();
               boolean firstTime = true;
               for (int i = 0; i < values.length; i++) {
                 if (values[i] != null && values[i].hasValueChanged()) {
@@ -1227,25 +1225,25 @@ public class SystemAdmin {
               }
             }
           } else {
-            Map<CombinedResources, List<StatValue>> allSpecsMap =
-                new HashMap<CombinedResources, List<StatValue>>();
+            Map<CombinedResources, List<StatArchiveReader.StatValue>> allSpecsMap =
+                new HashMap<CombinedResources, List<StatArchiveReader.StatValue>>();
             for (int i = 0; i < specs.length; i++) {
-              StatValue[] values = reader.matchSpec(specs[i]);
+              StatArchiveReader.StatValue[] values = reader.matchSpec(specs[i]);
               if (values.length == 0) {
                 if (!quiet) {
                   System.err.println(LocalizedStrings.SystemAdmin_WARNING_NO_STATS_MATCHED_0
                       .toLocalizedString(specs[i].cmdLineSpec));
                 }
               } else {
-                Map<CombinedResources, List<StatValue>> specMap =
-                    new HashMap<CombinedResources, List<StatValue>>();
-                for (StatValue v : values) {
+                Map<CombinedResources, List<StatArchiveReader.StatValue>> specMap =
+                    new HashMap<CombinedResources, List<StatArchiveReader.StatValue>>();
+                for (StatArchiveReader.StatValue v : values) {
                   CombinedResources key = new CombinedResources(v);
                   List<StatArchiveReader.StatValue> list = specMap.get(key);
                   if (list != null) {
                     list.add(v);
                   } else {
-                    specMap.put(key, new ArrayList<StatValue>(Collections.singletonList(v)));
+                    specMap.put(key, new ArrayList<StatArchiveReader.StatValue>(Collections.singletonList(v)));
                   }
                 }
                 if (!quiet) {
@@ -1253,7 +1251,7 @@ public class SystemAdmin {
                       LocalizedStrings.SystemAdmin_INFO_FOUND_0_MATCHES_FOR_1.toLocalizedString(
                           new Object[] {Integer.valueOf(specMap.size()), specs[i].cmdLineSpec}));
                 }
-                for (Map.Entry<CombinedResources, List<StatValue>> me : specMap.entrySet()) {
+                for (Map.Entry<CombinedResources, List<StatArchiveReader.StatValue>> me : specMap.entrySet()) {
                   List<StatArchiveReader.StatValue> list = allSpecsMap.get(me.getKey());
                   if (list != null) {
                     list.addAll(me.getValue());
@@ -1263,9 +1261,9 @@ public class SystemAdmin {
                 }
               }
             }
-            for (Map.Entry<CombinedResources, List<StatValue>> me : allSpecsMap.entrySet()) {
+            for (Map.Entry<CombinedResources, List<StatArchiveReader.StatValue>> me : allSpecsMap.entrySet()) {
               System.out.println(me.getKey());
-              for (StatValue v : me.getValue()) {
+              for (StatArchiveReader.StatValue v : me.getValue()) {
                 printStatValue(v, startTime, endTime, nofilter, persec, persample, prunezeros,
                     details);
               }
@@ -1304,8 +1302,8 @@ public class SystemAdmin {
    *
    */
   @SuppressWarnings("serial")
-  private static class CombinedResources extends ArrayList<ResourceInst> {
-    public CombinedResources(StatValue v) {
+  private static class CombinedResources extends ArrayList<StatArchiveReader.ResourceInst> {
+    public CombinedResources(StatArchiveReader.StatValue v) {
       super(Arrays.asList(v.getResources()));
     }
 
@@ -1313,7 +1311,7 @@ public class SystemAdmin {
     public String toString() {
       StringBuffer sb = new StringBuffer();
       boolean first = true;
-      for (ResourceInst inst : this) {
+      for (StatArchiveReader.ResourceInst inst : this) {
         if (first) {
           first = false;
         } else {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/CacheInfo.java b/geode-core/src/main/java/org/apache/geode/internal/admin/CacheInfo.java
index e0ca4b0..d7a7f99 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/CacheInfo.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/CacheInfo.java
@@ -71,7 +71,7 @@ public interface CacheInfo {
    * Returns the statistic resource that contains this cache's performance statistics. Returns null
    * if the cache is closed;
    */
-  StatResource getPerfStats();
+//  StatResource getPerfStats();
 
   /**
    * Forces this instance to be closed. Does not actually close the cache.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java b/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
index 80c0337..ae5bae2 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/GemFireVM.java
@@ -85,28 +85,28 @@ public interface GemFireVM {
   /**
    * Returns all statistic resources except those involving SharedClass
    */
-  StatResource[] getStats(String statisticsTypeName);
-
-  /**
-   * Returns all statistic resources
-   */
-  StatResource[] getAllStats();
+//  StatResource[] getStats(String statisticsTypeName);
+//
+//  /**
+//   * Returns all statistic resources
+//   */
+//  StatResource[] getAllStats();
 
   /**
    * Returns a snapshot of the distributed lock services
    */
   DLockInfo[] getDistributedLockInfo();
 
-  /**
-   * Adds a {@link StatListener} for the given resource and attribute. Changes in value will be
-   * streamed back from the vm.
-   */
-  void addStatListener(StatListener observer, StatResource observedResource, Stat observedStat);
-
-  /**
-   * Removes {@link StatListener}
-   */
-  void removeStatListener(StatListener observer);
+//  /**
+//   * Adds a {@link StatListener} for the given resource and attribute. Changes in value will be
+//   * streamed back from the vm.
+//   */
+//  void addStatListener(StatListener observer, StatResource observedResource, Stat observedStat);
+//
+//  /**
+//   * Removes {@link StatListener}
+//   */
+//  void removeStatListener(StatListener observer);
 
   /**
    * Adds a {@link HealthListener} with the given configuration to the vm. If a health listener has
@@ -340,7 +340,7 @@ public interface GemFireVM {
    *
    * @since GemFire 5.7
    */
-  void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval, boolean setRemotely);
+//  void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval, boolean setRemotely);
 
   /**
    * This method would be used to set refresh interval for the GemFireVM. This method would mostly
@@ -364,5 +364,5 @@ public interface GemFireVM {
    *
    * @since GemFire 5.7
    */
-  void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode);
+//  void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode);
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
index 8e55f10..721cfa0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGemFireVM.java
@@ -16,10 +16,7 @@ package org.apache.geode.internal.admin.remote;
 
 import java.io.File;
 import java.net.InetAddress;
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -43,10 +40,6 @@ import org.apache.geode.internal.admin.GemFireVM;
 import org.apache.geode.internal.admin.GfManagerAgent;
 import org.apache.geode.internal.admin.HealthListener;
 import org.apache.geode.internal.admin.ListenerIdMap;
-import org.apache.geode.internal.admin.Stat;
-import org.apache.geode.internal.admin.StatAlertDefinition;
-import org.apache.geode.internal.admin.StatListener;
-import org.apache.geode.internal.admin.StatResource;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 
 /**
@@ -76,7 +69,7 @@ public abstract class RemoteGemFireVM implements GemFireVM {
   /**
    * A thread that asynchronously dispatches callbacks to <code>StatListener</code>s.
    */
-  protected final StatDispatcher dispatcher;
+//  protected final StatDispatcher dispatcher;
 
   /**
    * The classpath from which to load the classes of objects inspected from this remote VM.
@@ -102,7 +95,7 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    * Creates a <code>RemoteApplicationVM</code> in a given distributed system (<code>agent</code>)
    * with the given <code>id</code>.
    * <p/>
-   * You MUST invoke {@link #startStatDispatcher()} immediately after constructing an instance.
+   * You MUST invoke immediately after constructing an instance.
    *
    * @param alertLevel The level of {@link Alert}s that this administration console should receive
    *        from this member of the distributed system.
@@ -115,13 +108,13 @@ public abstract class RemoteGemFireVM implements GemFireVM {
               .toLocalizedString());
     }
     this.id = id;
-    this.dispatcher = new StatDispatcher();
+//    this.dispatcher = new StatDispatcher();
     sendAsync(AdminConsoleMessage.create(alertLevel));
   }
 
-  public void startStatDispatcher() {
-    this.dispatcher.start();
-  }
+//  public void startStatDispatcher() {
+//    this.dispatcher.start();
+//  }
 
   // Object methods
 
@@ -205,32 +198,32 @@ public abstract class RemoteGemFireVM implements GemFireVM {
     this.isDedicatedCacheServer = Boolean.valueOf(response.isDedicatedCacheServer());
   }
 
-  /**
-   * Retrieves all statistic resources from the remote vm.
-   *
-   * @return array of all statistic resources
-   *
-   * @see FetchStatsRequest
-   * @see FetchStatsResponse#getAllStats
-   */
-  public StatResource[] getAllStats() {
-    FetchStatsResponse resp = (FetchStatsResponse) sendAndWait(FetchStatsRequest.create(null));
-    return resp.getAllStats(this);
-  }
-
-  /**
-   * Retrieves all statistic resources from the remote VM except for those involving SharedClass.
-   *
-   * @return array of non-SharedClass statistic resources
-   *
-   * @see FetchStatsRequest
-   * @see FetchStatsResponse#getStats
-   */
-  public StatResource[] getStats(String statisticsTypeName) {
-    FetchStatsResponse resp =
-        (FetchStatsResponse) sendAndWait(FetchStatsRequest.create(statisticsTypeName));
-    return resp.getAllStats(this);
-  }
+//  /**
+//   * Retrieves all statistic resources from the remote vm.
+//   *
+//   * @return array of all statistic resources
+//   *
+//   * @see FetchStatsRequest
+//   * @see FetchStatsResponse#getAllStats
+//   */
+//  public StatResource[] getAllStats() {
+//    FetchStatsResponse resp = (FetchStatsResponse) sendAndWait(FetchStatsRequest.create(null));
+//    return resp.getAllStats(this);
+//  }
+
+//  /**
+//   * Retrieves all statistic resources from the remote VM except for those involving SharedClass.
+//   *
+//   * @return array of non-SharedClass statistic resources
+//   *
+//   * @see FetchStatsRequest
+//   * @see FetchStatsResponse#getStats
+//   */
+//  public StatResource[] getStats(String statisticsTypeName) {
+//    FetchStatsResponse resp =
+//        (FetchStatsResponse) sendAndWait(FetchStatsRequest.create(statisticsTypeName));
+//    return resp.getAllStats(this);
+//  }
 
   /**
    * Returns information about distributed locks held by the remote VM.
@@ -253,19 +246,19 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    *
    * @see AddStatListenerRequest
    */
-  public void addStatListener(StatListener observer, StatResource observedResource,
-      Stat observedStat) {
-    AddStatListenerResponse resp = (AddStatListenerResponse) sendAndWait(
-        AddStatListenerRequest.create(observedResource, observedStat));
-    int listenerId = resp.getListenerId();
-    synchronized (this.statListenersLock) {
-      this.statListeners.put(listenerId, observer);
-    }
-  }
+//  public void addStatListener(StatListener observer, StatResource observedResource,
+//      Stat observedStat) {
+//    AddStatListenerResponse resp = (AddStatListenerResponse) sendAndWait(
+//        AddStatListenerRequest.create(observedResource, observedStat));
+//    int listenerId = resp.getListenerId();
+//    synchronized (this.statListenersLock) {
+//      this.statListeners.put(listenerId, observer);
+//    }
+//  }
 
   /**
    * Notes that several statistics values have been updated in the distributed system member modeled
-   * by this <code>RemoteGemFireVM</code> and invokes the {@link StatListener}s accordingly. Note
+   * by this <code>RemoteGemFireVM</code> and invokes the  accordingly. Note
    * that the listener notification happens asynchronously.
    *
    * @param timestamp The time at which the statistics were sampled
@@ -273,7 +266,7 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    * @param values The new values of the statistics
    */
   public void callStatListeners(long timestamp, int[] listenerIds, double[] values) {
-    dispatcher.put(new DispatchArgs(timestamp, listenerIds, values));
+//    dispatcher.put(new DispatchArgs(timestamp, listenerIds, values));
   }
 
 
@@ -288,39 +281,39 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    *
    * @see #cancelStatListener
    */
-  protected void internalCallStatListeners(long timestamp, int[] listenerIds, double[] values) {
-    ListenerIdMap.Entry[] entries = null;
-    List listenersToRemove = new ArrayList();
-    synchronized (this.statListenersLock) {
-      entries = this.statListeners.entries();
-    }
-
-    for (int j = 0; j < entries.length; j++) {
-      int listenerId = entries[j].getKey();
-      StatListener sl = (StatListener) entries[j].getValue();
-      int i;
-      for (i = 0; i < listenerIds.length; i++) {
-        if (listenerIds[i] == listenerId || listenerIds[i] == -listenerId) {
-          break;
-        }
-      }
-      if (i == listenerIds.length) {
-        sl.statValueUnchanged(timestamp);
-      } else if (listenerIds[i] < 0) { // Stat resource went away
-        listenersToRemove.add(Integer.valueOf(listenerId));
-      } else {
-        sl.statValueChanged(values[i], timestamp);
-      }
-    }
-
-    synchronized (this.statListenersLock) {
-      for (Iterator iter = listenersToRemove.iterator(); iter.hasNext();) {
-        int i = ((Integer) iter.next()).intValue();
-        statListeners.remove(i);
-        cancelStatListener(i);
-      }
-    }
-  }
+//  protected void internalCallStatListeners(long timestamp, int[] listenerIds, double[] values) {
+//    ListenerIdMap.Entry[] entries = null;
+//    List listenersToRemove = new ArrayList();
+//    synchronized (this.statListenersLock) {
+//      entries = this.statListeners.entries();
+//    }
+//
+//    for (int j = 0; j < entries.length; j++) {
+//      int listenerId = entries[j].getKey();
+//      StatListener sl = (StatListener) entries[j].getValue();
+//      int i;
+//      for (i = 0; i < listenerIds.length; i++) {
+//        if (listenerIds[i] == listenerId || listenerIds[i] == -listenerId) {
+//          break;
+//        }
+//      }
+//      if (i == listenerIds.length) {
+//        sl.statValueUnchanged(timestamp);
+//      } else if (listenerIds[i] < 0) { // Stat resource went away
+//        listenersToRemove.add(Integer.valueOf(listenerId));
+//      } else {
+//        sl.statValueChanged(values[i], timestamp);
+//      }
+//    }
+//
+//    synchronized (this.statListenersLock) {
+//      for (Iterator iter = listenersToRemove.iterator(); iter.hasNext();) {
+//        int i = ((Integer) iter.next()).intValue();
+//        statListeners.remove(i);
+//        cancelStatListener(i);
+//      }
+//    }
+//  }
 
   /**
    * Sends a message to the remote VM letting it know that the listener with the given id no longer
@@ -333,26 +326,26 @@ public abstract class RemoteGemFireVM implements GemFireVM {
   /**
    * Removes a <code>StatListener</code> that receives updates from the remote member VM.
    */
-  public void removeStatListener(StatListener observer) {
-    int listenerId = -1;
-    boolean foundIt = false;
-    synchronized (this.statListenersLock) {
-      ListenerIdMap.EntryIterator it = this.statListeners.iterator();
-      ListenerIdMap.Entry e = it.next();
-      while (e != null) {
-        if (e.getValue() == observer) {
-          foundIt = true;
-          listenerId = e.getKey();
-          this.statListeners.remove(listenerId);
-          break;
-        }
-        e = it.next();
-      }
-    }
-    if (foundIt) {
-      cancelStatListener(listenerId);
-    }
-  }
+//  public void removeStatListener(StatListener observer) {
+//    int listenerId = -1;
+//    boolean foundIt = false;
+//    synchronized (this.statListenersLock) {
+//      ListenerIdMap.EntryIterator it = this.statListeners.iterator();
+//      ListenerIdMap.Entry e = it.next();
+//      while (e != null) {
+//        if (e.getValue() == observer) {
+//          foundIt = true;
+//          listenerId = e.getKey();
+//          this.statListeners.remove(listenerId);
+//          break;
+//        }
+//        e = it.next();
+//      }
+//    }
+//    if (foundIt) {
+//      cancelStatListener(listenerId);
+//    }
+//  }
 
   /**
    * Returns the configuration of the remote VM.
@@ -752,7 +745,7 @@ public abstract class RemoteGemFireVM implements GemFireVM {
       this.statListeners = new ListenerIdMap(); // we don't provide a way to empty a ListenerIdMap
       unreachable = true;
     }
-    dispatcher.stopDispatching();
+//    dispatcher.stopDispatching();
   }
 
   /**
@@ -791,56 +784,56 @@ public abstract class RemoteGemFireVM implements GemFireVM {
   /**
    * A daemon thread that reads org.apache.geode.internal.admin.remote.RemoteGemFireVM.DispatchArgs
    * off of a queue and delivers callbacks to the appropriate
-   * {@link org.apache.geode.internal.admin.StatListener}.
-   */
-  private class StatDispatcher extends Thread {
-    private BlockingQueue queue = new LinkedBlockingQueue();
-    private volatile boolean stopped = false;
-
-    protected StatDispatcher() {
-      super(RemoteGemFireVM.this.agent.getThreadGroup(), "StatDispatcher");
-      setDaemon(true);
-    }
-
-    protected synchronized void stopDispatching() {
-      this.stopped = true;
-      this.interrupt();
-    }
-
-    @Override // GemStoneAddition
-    public void run() {
-      while (!stopped) {
-        SystemFailure.checkFailure();
-        try {
-          DispatchArgs args = (DispatchArgs) queue.take();
-          internalCallStatListeners(args.timestamp, args.listenerIds, args.values);
-
-        } catch (InterruptedException ex) {
-          // No need to reset the interrupt bit, we'll just exit.
-          break;
-
-        } catch (Exception ignore) {
-        }
-      }
-    }
 
-    protected void put(DispatchArgs args) {
-      for (;;) {
-        RemoteGemFireVM.this.agent.getDM().getCancelCriterion().checkCancelInProgress(null);
-        boolean interrupted = Thread.interrupted();
-        try {
-          queue.put(args);
-          break;
-        } catch (InterruptedException ignore) {
-          interrupted = true;
-        } finally {
-          if (interrupted) {
-            Thread.currentThread().interrupt();
-          }
-        }
-      } // for
-    }
-  }
+   */
+//  private class StatDispatcher extends Thread {
+//    private BlockingQueue queue = new LinkedBlockingQueue();
+//    private volatile boolean stopped = false;
+//
+//    protected StatDispatcher() {
+//      super(RemoteGemFireVM.this.agent.getThreadGroup(), "StatDispatcher");
+//      setDaemon(true);
+//    }
+//
+//    protected synchronized void stopDispatching() {
+//      this.stopped = true;
+//      this.interrupt();
+//    }
+//
+//    @Override // GemStoneAddition
+//    public void run() {
+//      while (!stopped) {
+//        SystemFailure.checkFailure();
+//        try {
+//          DispatchArgs args = (DispatchArgs) queue.take();
+//          internalCallStatListeners(args.timestamp, args.listenerIds, args.values);
+//
+//        } catch (InterruptedException ex) {
+//          // No need to reset the interrupt bit, we'll just exit.
+//          break;
+//
+//        } catch (Exception ignore) {
+//        }
+//      }
+//    }
+//
+//    protected void put(DispatchArgs args) {
+//      for (;;) {
+//        RemoteGemFireVM.this.agent.getDM().getCancelCriterion().checkCancelInProgress(null);
+//        boolean interrupted = Thread.interrupted();
+//        try {
+//          queue.put(args);
+//          break;
+//        } catch (InterruptedException ignore) {
+//          interrupted = true;
+//        } finally {
+//          if (interrupted) {
+//            Thread.currentThread().interrupt();
+//          }
+//        }
+//      } // for
+//    }
+//  }
 
   /**
    * Encapsulates an update to several statistics
@@ -906,13 +899,13 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    * @param refreshInterval refresh interval to be used by the Alerts Manager
    * @param setRemotely whether to be set on remote VM
    */
-  public void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval,
-      boolean setRemotely) {
-    if (setRemotely) {
-      // TODO: is the check for valid AdminResponse required
-      sendAsync(StatAlertsManagerAssignMessage.create(alertDefs, refreshInterval));
-    }
-  }
+//  public void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval,
+//      boolean setRemotely) {
+//    if (setRemotely) {
+//      // TODO: is the check for valid AdminResponse required
+//      sendAsync(StatAlertsManagerAssignMessage.create(alertDefs, refreshInterval));
+//    }
+//  }
 
   /**
    * This method would be used to set refresh interval for the GemFireVM. This method would mostly
@@ -934,9 +927,9 @@ public abstract class RemoteGemFireVM implements GemFireVM {
    *        UpdateAlertDefinitionRequestUPDATE_ALERT_DEFINITION,
    *        UpdateAlertDefinitionRequest.REMOVE_ALERT_DEFINITION
    */
-  public void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode) {
-    // TODO: is the check for valid AdminResponse required
-    sendAsync(UpdateAlertDefinitionMessage.create(alertDefs, actionCode));
-  }
+//  public void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode) {
+//    // TODO: is the check for valid AdminResponse required
+//    sendAsync(UpdateAlertDefinitionMessage.create(alertDefs, actionCode));
+//  }
 
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteStat.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteStat.java
index 3e47cab..c0c3110 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteStat.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteStat.java
@@ -21,12 +21,9 @@ import java.io.IOException;
 
 import org.apache.geode.DataSerializable;
 import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.admin.Stat;
-import org.apache.geode.internal.statistics.StatisticDescriptorImpl;
-import org.apache.geode.statistics.StatisticDescriptor;
-import org.apache.geode.statistics.Statistics;
 
-public class RemoteStat implements Stat, DataSerializable {
+//public class RemoteStat implements Stat, DataSerializable {
+public class RemoteStat implements  DataSerializable {
   private static final long serialVersionUID = 8263951659282343027L;
 
   // instance variables
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
index 3770e79..2b0e347 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DistTXRollbackMessage.java
@@ -36,7 +36,6 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
-import org.apache.geode.distributed.internal.DistributionStats;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -52,11 +51,14 @@ public class DistTXRollbackMessage extends TXMessage {
 
   private static final Logger logger = LogService.getLogger();
 
-  /** for deserialization */
-  public DistTXRollbackMessage() {}
+  /**
+   * for deserialization
+   */
+  public DistTXRollbackMessage() {
+  }
 
   public DistTXRollbackMessage(TXId txUniqId, InternalDistributedMember onBehalfOfClientMember,
-      ReplyProcessor21 processor) {
+                               ReplyProcessor21 processor) {
     super(txUniqId.getUniqId(), onBehalfOfClientMember, processor);
   }
 
@@ -135,7 +137,8 @@ public class DistTXRollbackMessage extends TXMessage {
     /**
      * Empty constructor to conform to DataSerializable interface
      */
-    public DistTXRollbackReplyMessage() {}
+    public DistTXRollbackReplyMessage() {
+    }
 
     public DistTXRollbackReplyMessage(DataInput in) throws IOException, ClassNotFoundException {
       fromData(in);
@@ -146,7 +149,9 @@ public class DistTXRollbackMessage extends TXMessage {
       this.rollbackState = val;
     }
 
-    /** GetReplyMessages are always processed in-line */
+    /**
+     * GetReplyMessages are always processed in-line
+     */
     @Override
     public boolean getInlineProcess() {
       return true;
@@ -156,14 +161,13 @@ public class DistTXRollbackMessage extends TXMessage {
      * Return the value from the get operation, serialize it bytes as late as possible to avoid
      * making un-neccesary byte[] copies. De-serialize those same bytes as late as possible to avoid
      * using precious threads (aka P2P readers).
-     *
      * @param recipient the origin VM that performed the get
      * @param processorId the processor on which the origin thread is waiting
      * @param val the raw value that will eventually be serialized
      * @param replySender distribution manager used to send the reply
      */
     public static void send(InternalDistributedMember recipient, int processorId, Boolean val,
-        ReplySender replySender) throws RemoteOperationException {
+                            ReplySender replySender) throws RemoteOperationException {
       Assert.assertTrue(recipient != null, "DistTXRollbackReplyMessage NULL reply message");
       DistTXRollbackReplyMessage m = new DistTXRollbackReplyMessage(processorId, val);
       m.setRecipient(recipient);
@@ -172,7 +176,6 @@ public class DistTXRollbackMessage extends TXMessage {
 
     /**
      * Processes this message. This method is invoked by the receiver of the message.
-     *
      * @param dm the distribution manager that is processing the message.
      */
     @Override
@@ -240,9 +243,7 @@ public class DistTXRollbackMessage extends TXMessage {
 
     @Override
     public void process(DistributionMessage msg) {
-      if (DistributionStats.enableClockStats) {
-        this.start = DistributionStats.getStatTime();
-      }
+      this.start = System.nanoTime();
       if (msg instanceof DistTXRollbackReplyMessage) {
         DistTXRollbackReplyMessage reply = (DistTXRollbackReplyMessage) msg;
         // De-serialization needs to occur in the requesting thread, not a P2P
@@ -258,9 +259,7 @@ public class DistTXRollbackMessage extends TXMessage {
      */
     public Boolean waitForResponse() throws RemoteOperationException {
       waitForRemoteResponse();
-      if (DistributionStats.enableClockStats) {
-        getDistributionManager().getStats().incReplyHandOffTime(this.start);
-      }
+      getDistributionManager().getStats().incReplyHandOffTime(this.start);
       return rollbackState;
     }
   }
@@ -268,10 +267,9 @@ public class DistTXRollbackMessage extends TXMessage {
   /**
    * Reply processor which collects all CommitReplyExceptions for Dist Tx and emits a detailed
    * failure exception if problems occur
-   *
    * @see TXCommitMessage.CommitReplyProcessor
    *
-   *      [DISTTX] TODO see if need ReliableReplyProcessor21? departed members?
+   * [DISTTX] TODO see if need ReliableReplyProcessor21? departed members?
    */
   public static class DistTxRollbackReplyProcessor extends ReplyProcessor21 {
     private HashMap<DistributedMember, DistTXCoordinatorInterface> msgMap;
@@ -279,7 +277,7 @@ public class DistTXRollbackMessage extends TXMessage {
     private transient TXId txIdent = null;
 
     public DistTxRollbackReplyProcessor(TXId txUniqId, DistributionManager dm, Set initMembers,
-        HashMap<DistributedMember, DistTXCoordinatorInterface> msgMap) {
+                                        HashMap<DistributedMember, DistTXCoordinatorInterface> msgMap) {
       super(dm, initMembers);
       this.msgMap = msgMap;
       // [DISTTX] TODO Do we need synchronised map?
@@ -357,16 +355,21 @@ public class DistTXRollbackMessage extends TXMessage {
 
   /**
    * An Exception that collects many remote CommitExceptions
-   *
    * @see TXCommitMessage.CommitExceptionCollectingException
    */
   public static class DistTxRollbackExceptionCollectingException extends ReplyException {
     private static final long serialVersionUID = -2681117727592137893L;
-    /** Set of members that threw CacheClosedExceptions */
+    /**
+     * Set of members that threw CacheClosedExceptions
+     */
     private final Set<InternalDistributedMember> cacheExceptions;
-    /** key=region path, value=Set of members */
+    /**
+     * key=region path, value=Set of members
+     */
     private final Map<String, Set<InternalDistributedMember>> regionExceptions;
-    /** List of exceptions that were unexpected and caused the tx to fail */
+    /**
+     * List of exceptions that were unexpected and caused the tx to fail
+     */
     private final Map fatalExceptions;
 
     private final TXId id;
@@ -390,12 +393,12 @@ public class DistTXRollbackMessage extends TXMessage {
       if (fatalExceptions.size() > 0) {
         StringBuilder errorMessage = new StringBuilder("Incomplete commit of transaction ")
             .append(id).append(".  Caused by the following exceptions: ");
-        for (Iterator i = fatalExceptions.entrySet().iterator(); i.hasNext();) {
+        for (Iterator i = fatalExceptions.entrySet().iterator(); i.hasNext(); ) {
           Map.Entry me = (Map.Entry) i.next();
           DistributedMember mem = (DistributedMember) me.getKey();
           errorMessage.append(" From member: ").append(mem).append(" ");
           List exceptions = (List) me.getValue();
-          for (Iterator ei = exceptions.iterator(); ei.hasNext();) {
+          for (Iterator ei = exceptions.iterator(); ei.hasNext(); ) {
             Exception e = (Exception) ei.next();
             errorMessage.append(e);
             for (StackTraceElement ste : e.getStackTrace()) {
@@ -432,7 +435,7 @@ public class DistTXRollbackMessage extends TXMessage {
      * Protected by (this)
      */
     public void addExceptionsFromMember(InternalDistributedMember member, Set exceptions) {
-      for (Iterator iter = exceptions.iterator(); iter.hasNext();) {
+      for (Iterator iter = exceptions.iterator(); iter.hasNext(); ) {
         Exception ex = (Exception) iter.next();
         if (ex instanceof CancelException) {
           cacheExceptions.add(member);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
index cb128d5..87a7e96 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
@@ -47,6 +47,7 @@ import org.apache.geode.internal.cache.versions.VersionSource;
 import org.apache.geode.internal.cache.versions.VersionTag;
 import org.apache.geode.internal.util.concurrent.StoppableCountDownLatch;
 import org.apache.geode.statistics.cache.CachePerfStats;
+import org.apache.geode.statistics.eviction.EvictionStats;
 
 /**
  * Interface to be used instead of type-casting to LocalRegion.
@@ -159,7 +160,7 @@ public interface InternalRegion extends Region, HasCachePerfStats, RegionEntryCo
    * Returns null if the region is not configured for eviction otherwise returns the Statistics used
    * to measure eviction activity.
    */
-  Statistics getEvictionStatistics();
+  EvictionStats getEvictionStatistics();
 
   long getEvictionCounter();
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
index 640e928..de07d1e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
@@ -224,6 +224,8 @@ import org.apache.geode.internal.util.concurrent.StoppableReadWriteLock;
 import org.apache.geode.pdx.JSONFormatter;
 import org.apache.geode.pdx.PdxInstance;
 import org.apache.geode.statistics.cache.CachePerfStats;
+import org.apache.geode.statistics.disk.DiskRegionStats;
+import org.apache.geode.statistics.eviction.EvictionStats;
 import org.apache.geode.statistics.region.RegionPerfStats;
 
 /**
@@ -7651,7 +7653,7 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
     if (this instanceof BucketRegion) {
       stats = internalRegionArgs.getPartitionedRegion().getDiskRegionStats();
     } else {
-      stats = new DiskRegionStats(getCache().getDistributedSystem().getStatisticsFactory(), getFullPath());
+      stats = new DiskRegionStats(getFullPath());
     }
 
     EnumSet<DiskRegionFlag> diskFlags = EnumSet.noneOf(DiskRegionFlag.class);
@@ -11673,13 +11675,13 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
   }
 
   @Override
-  public Statistics getEvictionStatistics() {
-    Statistics result = null;
+  public EvictionStats getEvictionStatistics() {
+    EvictionStats result = null;
     EvictionController evictionController = getEvictionController();
     if (evictionController != null) {
-      EvictionCounters es = evictionController.getCounters();
-      if (es != null) {
-        result = es.getStatistics();
+      EvictionCounters evictionCounters = evictionController.getCounters();
+      if (evictionCounters != null) {
+        result = evictionCounters.getStatistics();
       }
     }
     return result;
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/control/HeapMemoryMonitor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/control/HeapMemoryMonitor.java
index 737937b..b8aea1a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/control/HeapMemoryMonitor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/control/HeapMemoryMonitor.java
@@ -47,6 +47,7 @@ import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThreadGroup;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
+import org.apache.geode.internal.statistics.LocalStatListener;
 import org.apache.geode.statistics.resourcemanger.ResourceManagerStats;
 
 /**
@@ -328,13 +329,10 @@ public class HeapMemoryMonitor implements NotificationListener, MemoryMonitor {
     }
 
     final ThreadGroup threadGroup = LoggingThreadGroup.createThreadGroup("HeapPoller", logger);
-    final ThreadFactory threadFactory = new ThreadFactory() {
-      @Override
-      public Thread newThread(Runnable r) {
-        Thread thread = new Thread(threadGroup, r, "GemfireHeapPoller");
-        thread.setDaemon(true);
-        return thread;
-      }
+    final ThreadFactory threadFactory = r -> {
+      Thread thread = new Thread(threadGroup, r, "GemfireHeapPoller");
+      thread.setDaemon(true);
+      return thread;
     };
 
     this.pollerExecutor = Executors.newScheduledThreadPool(1, threadFactory);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/AbstractEvictionController.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/AbstractEvictionController.java
index 64018ce..fa67296 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/AbstractEvictionController.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/AbstractEvictionController.java
@@ -20,6 +20,9 @@ import org.apache.geode.cache.EvictionAlgorithm;
 import org.apache.geode.cache.EvictionAttributes;
 import org.apache.geode.cache.util.ObjectSizer;
 import org.apache.geode.internal.cache.BucketRegion;
+import org.apache.geode.statistics.eviction.CountLRUStatistics;
+import org.apache.geode.statistics.eviction.HeapLRUStatistics;
+import org.apache.geode.statistics.eviction.MemoryLRUStatistics;
 
 /**
  * Eviction controllers that extend this class evict the least recently used (LRU) entry in the
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/CountLRUStatistics.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/CountLRUStatistics.java
deleted file mode 100644
index cbf1a1e..0000000
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/CountLRUStatistics.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.internal.cache.eviction;
-
-import org.apache.geode.statistics.StatisticDescriptor;
-import org.apache.geode.statistics.Statistics;
-import org.apache.geode.statistics.StatisticsFactory;
-import org.apache.geode.statistics.StatisticsType;
-import org.apache.geode.statistics.StatisticsTypeFactory;
-import org.apache.geode.internal.statistics.StatisticsTypeFactoryImpl;
-
-public class CountLRUStatistics implements EvictionStats {
-  private StatisticsType statType;
-  private int limitId;
-  private int counterId;
-  private int evictionsId;
-  private int destroysId;
-  private int evaluationsId;
-  private int greedyReturnsId;
-
-  private void initializeStats(StatisticsFactory factory) {
-    final String entriesAllowedDesc = "Number of entries allowed in this region.";
-    final String regionEntryCountDesc = "Number of entries in this region.";
-    final String lruEvictionsDesc = "Number of total entry evictions triggered by LRU.";
-    final String lruDestroysDesc =
-        "Number of entries destroyed in the region through both destroy cache operations and eviction.";
-    final String lruEvaluationsDesc = "Number of entries evaluated during LRU operations.";
-    final String lruGreedyReturnsDesc = "Number of non-LRU entries evicted during LRU operations";
-
-    statType = factory.createType("LRUStatistics", "Statistics relates to entry cout based eviction",
-        new StatisticDescriptor[] {
-            factory.createLongGauge("entriesAllowed", entriesAllowedDesc, "entries"),
-            factory.createLongGauge("entryCount", regionEntryCountDesc, "entries"),
-            factory.createLongCounter("lruEvictions", lruEvictionsDesc, "entries"),
-            factory.createLongCounter("lruDestroys", lruDestroysDesc, "entries"),
-            factory.createLongCounter("lruEvaluations", lruEvaluationsDesc, "entries"),
-            factory.createLongCounter("lruGreedyReturns", lruGreedyReturnsDesc, "entries")});
-
-    limitId = statType.nameToId("entriesAllowed");
-    counterId = statType.nameToId("entryCount");
-    evictionsId = statType.nameToId("lruEvictions");
-    destroysId = statType.nameToId("lruDestroys");
-    evaluationsId = statType.nameToId("lruEvaluations");
-    greedyReturnsId = statType.nameToId("lruGreedyReturns");
-  }
-
-  private final Statistics stats;
-
-  public CountLRUStatistics(StatisticsFactory factory, String name) {
-    initializeStats(factory);
-    this.stats = factory.createAtomicStatistics(statType, "LRUStatistics-" + name);
-  }
-
-  @Override
-  public Statistics getStatistics() {
-    return this.stats;
-  }
-
-  @Override
-  public void close() {
-    this.stats.close();
-  }
-
-  @Override
-  public void incEvictions() {
-    this.stats.incLong(evictionsId, 1);
-  }
-
-  @Override
-  public void updateCounter(long delta) {
-    this.stats.incLong(counterId, delta);
-  }
-
-  @Override
-  public void incDestroys() {
-    this.stats.incLong(destroysId, 1);
-  }
-
-  @Override
-  public void setLimit(long newValue) {
-    this.stats.setLong(limitId, newValue);
-  }
-
-  @Override
-  public void setCounter(long newValue) {
-    this.stats.setLong(counterId, newValue);
-  }
-
-  @Override
-  public void incEvaluations(long delta) {
-    this.stats.incLong(evaluationsId, delta);
-  }
-
-  @Override
-  public void incGreedyReturns(long delta) {
-    this.stats.incLong(greedyReturnsId, delta);
-  }
-
-}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/EvictionCounters.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/EvictionCounters.java
index ba3f406..614b726 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/EvictionCounters.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/EvictionCounters.java
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.internal.cache.eviction;
 
+import org.apache.geode.statistics.eviction.EvictionStats;
+
 public interface EvictionCounters {
 
   long getCounter();
@@ -40,5 +42,7 @@ public interface EvictionCounters {
 
   void incGreedyReturns(long greedyReturns);
 
+  EvictionStats getStatistics();
+
   void close();
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapLRUStatistics.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapLRUStatistics.java
deleted file mode 100644
index 6c37a1e..0000000
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapLRUStatistics.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.internal.cache.eviction;
-
-import org.apache.geode.statistics.StatisticDescriptor;
-import org.apache.geode.statistics.Statistics;
-import org.apache.geode.statistics.StatisticsFactory;
-import org.apache.geode.statistics.StatisticsType;
-import org.apache.geode.statistics.StatisticsTypeFactory;
-import org.apache.geode.internal.statistics.StatisticsTypeFactoryImpl;
-
-public class HeapLRUStatistics implements EvictionStats {
-  private StatisticsType statType;
-  private int counterId;
-  private int evictionsId;
-  private int destroysId;
-  private int evaluationsId;
-  private int greedyReturnsId;
-
-  private void initializeStats(StatisticsFactory factory) {
-    final String entryBytesDesc =
-        "The amount of memory currently used by regions configured for eviction.";
-    final String lruEvictionsDesc = "Number of total entry evictions triggered by LRU.";
-    final String
-        lruDestroysDesc =
-        "Number of entries destroyed in the region through both destroy cache operations and eviction.";
-    final String lruEvaluationsDesc = "Number of entries evaluated during LRU operations.";
-    final String lruGreedyReturnsDesc = "Number of non-LRU entries evicted during LRU operations";
-
-    statType = factory.createType("HeapLRUStatistics", "Statistics related to heap based eviction",
-        new StatisticDescriptor[]{factory.createLongGauge("entryBytes", entryBytesDesc, "bytes"),
-            factory.createLongCounter("lruEvictions", lruEvictionsDesc, "entries"),
-            factory.createLongCounter("lruDestroys", lruDestroysDesc, "entries"),
-            factory.createLongCounter("lruEvaluations", lruEvaluationsDesc, "entries"),
-            factory.createLongCounter("lruGreedyReturns", lruGreedyReturnsDesc, "entries")});
-
-    counterId = statType.nameToId("entryBytes");
-    evictionsId = statType.nameToId("lruEvictions");
-    destroysId = statType.nameToId("lruDestroys");
-    evaluationsId = statType.nameToId("lruEvaluations");
-    greedyReturnsId = statType.nameToId("lruGreedyReturns");
-  }
-
-  private final Statistics stats;
-
-  public HeapLRUStatistics(StatisticsFactory factory, String name) {
-    initializeStats(factory);
-    this.stats = factory.createAtomicStatistics(statType, "HeapLRUStatistics-" + name);
-  }
-
-  @Override
-  public Statistics getStatistics() {
-    return this.stats;
-  }
-
-  @Override
-  public void close() {
-    this.stats.close();
-  }
-
-  @Override
-  public void incEvictions() {
-    this.stats.incLong(evictionsId, 1);
-  }
-
-  @Override
-  public void updateCounter(long delta) {
-    this.stats.incLong(counterId, delta);
-  }
-
-  @Override
-  public void incDestroys() {
-    this.stats.incLong(destroysId, 1);
-  }
-
-  @Override
-  public void setLimit(long newValue) {
-    // nothing needed
-  }
-
-  @Override
-  public void setCounter(long newValue) {
-    this.stats.setLong(counterId, newValue);
-  }
-
-  @Override
-  public void incEvaluations(long delta) {
-    this.stats.incLong(evaluationsId, delta);
-  }
-
-  @Override
-  public void incGreedyReturns(long delta) {
-    this.stats.incLong(greedyReturnsId, delta);
-  }
-
-}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/MemoryLRUStatistics.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/MemoryLRUStatistics.java
deleted file mode 100644
index 503b648..0000000
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/MemoryLRUStatistics.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.internal.cache.eviction;
-
-import org.apache.geode.statistics.StatisticDescriptor;
-import org.apache.geode.statistics.Statistics;
-import org.apache.geode.statistics.StatisticsFactory;
-import org.apache.geode.statistics.StatisticsType;
-import org.apache.geode.statistics.StatisticsTypeFactory;
-import org.apache.geode.internal.statistics.StatisticsTypeFactoryImpl;
-
-public class MemoryLRUStatistics implements EvictionStats {
-  private StatisticsType statType;
-  private int limitId;
-  private int counterId;
-  private int evictionsId;
-  private int destroysId;
-  private int evaluationsId;
-  private int greedyReturnsId;
-
-  private void initializeStats(StatisticsFactory factory) {
-    final String bytesAllowedDesc = "Number of total bytes allowed in this region.";
-    final String byteCountDesc = "Number of bytes in region.";
-    final String lruEvictionsDesc = "Number of total entry evictions triggered by LRU.";
-    final String lruDestroysDesc =
-        "Number of entries destroyed in the region through both destroy cache operations and eviction.";
-    final String lruEvaluationsDesc = "Number of entries evaluated during LRU operations.";
-    final String lruGreedyReturnsDesc = "Number of non-LRU entries evicted during LRU operations";
-
-    statType = factory.createType("MemLRUStatistics", "Statistics relates to memory based eviction",
-        new StatisticDescriptor[] {factory.createLongGauge("bytesAllowed", bytesAllowedDesc, "bytes"),
-            factory.createLongGauge("byteCount", byteCountDesc, "bytes"),
-            factory.createLongCounter("lruEvictions", lruEvictionsDesc, "entries"),
-            factory.createLongCounter("lruDestroys", lruDestroysDesc, "entries"),
-            factory.createLongCounter("lruEvaluations", lruEvaluationsDesc, "entries"),
-            factory.createLongCounter("lruGreedyReturns", lruGreedyReturnsDesc, "entries")});
-
-    limitId = statType.nameToId("bytesAllowed");
-    counterId = statType.nameToId("byteCount");
-    evictionsId = statType.nameToId("lruEvictions");
-    destroysId = statType.nameToId("lruDestroys");
-    evaluationsId = statType.nameToId("lruEvaluations");
-    greedyReturnsId = statType.nameToId("lruGreedyReturns");
-  }
-
-  private final Statistics stats;
-
-  public MemoryLRUStatistics(StatisticsFactory factory, String name) {
-    initializeStats(factory);
-    this.stats = factory.createAtomicStatistics(statType, "MemLRUStatistics-" + name);
-  }
-
-  @Override
-  public Statistics getStatistics() {
-    return this.stats;
-  }
-
-  @Override
-  public void close() {
-    this.stats.close();
-  }
-
-  @Override
-  public void incEvictions() {
-    this.stats.incLong(evictionsId, 1);
-  }
-
-  @Override
-  public void updateCounter(long delta) {
-    this.stats.incLong(counterId, delta);
-  }
-
-  @Override
-  public void incDestroys() {
-    this.stats.incLong(destroysId, 1);
-  }
-
-  @Override
-  public void setLimit(long newValue) {
-    this.stats.setLong(limitId, newValue);
-  }
-
-  @Override
-  public void setCounter(long newValue) {
-    this.stats.setLong(counterId, newValue);
-  }
-
-  @Override
-  public void incEvaluations(long delta) {
-    this.stats.incLong(evaluationsId, delta);
-  }
-
-  @Override
-  public void incGreedyReturns(long delta) {
-    this.stats.incLong(greedyReturnsId, delta);
-  }
-
-}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
index 69cb0e5..a4d65fd 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteSizeMessage.java
@@ -26,7 +26,6 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionManager;
 import org.apache.geode.distributed.internal.DistributionMessage;
-import org.apache.geode.distributed.internal.DistributionStats;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.ReplyException;
 import org.apache.geode.distributed.internal.ReplyMessage;
@@ -169,7 +168,7 @@ public class RemoteSizeMessage extends RemoteOperationMessage {
       if (logger.isTraceEnabled(LogMarker.DM_VERBOSE)) {
         logger.trace(LogMarker.DM_VERBOSE, "{} processed {}", getClass().getName(), this);
       }
-      dm.getStats().incReplyMessageTime(DistributionStats.getStatTime() - startTime);
+      dm.getStats().incReplyMessageTime(System.nanoTime() - startTime);
     }
 
     @Override
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
index 057697a..8bb217c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
@@ -62,7 +62,6 @@ import org.apache.geode.internal.cache.BucketRegion;
 import org.apache.geode.internal.cache.BucketRegionQueue;
 import org.apache.geode.internal.cache.ColocationHelper;
 import org.apache.geode.internal.cache.Conflatable;
-import org.apache.geode.internal.cache.DiskRegionStats;
 import org.apache.geode.internal.cache.DistributedRegion;
 import org.apache.geode.internal.cache.EntryEventImpl;
 import org.apache.geode.internal.cache.ForceReattemptException;
@@ -78,7 +77,6 @@ import org.apache.geode.internal.cache.wan.AsyncEventQueueConfigurationException
 import org.apache.geode.internal.cache.wan.GatewaySenderConfigurationException;
 import org.apache.geode.internal.cache.wan.GatewaySenderEventImpl;
 import org.apache.geode.internal.cache.wan.GatewaySenderException;
-import org.apache.geode.internal.cache.wan.GatewaySenderStats;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThreadGroup;
@@ -86,9 +84,7 @@ import org.apache.geode.internal.logging.log4j.LocalizedMessage;
 import org.apache.geode.internal.size.SingleObjectSizer;
 import org.apache.geode.internal.util.concurrent.StoppableCondition;
 import org.apache.geode.internal.util.concurrent.StoppableReentrantLock;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.internal.beans.AsyncEventQueueMBean;
-import org.apache.geode.management.internal.beans.GatewaySenderMBean;
+import org.apache.geode.statistics.wan.GatewaySenderStats;
 
 public class ParallelGatewaySenderQueue implements RegionQueue {
 
@@ -562,30 +558,30 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
 
   private void addOverflowStatisticsToMBean(Cache cache, PartitionedRegion prQ) {
     // Get the appropriate mbean and add the eviction and disk region stats to it
-    ManagementService service = ManagementService.getManagementService(cache);
-    if (this.sender.getId().contains(AsyncEventQueueImpl.ASYNC_EVENT_QUEUE_PREFIX)) {
-      AsyncEventQueueMBean bean = (AsyncEventQueueMBean) service.getLocalAsyncEventQueueMXBean(
-          AsyncEventQueueImpl.getAsyncEventQueueIdFromSenderId(this.sender.getId()));
-
-      if (bean != null) {
-        // Add the eviction stats
-        bean.getBridge().addOverflowStatistics(prQ.getEvictionStatistics());
-
-        // Add the disk region stats
-        bean.getBridge().addOverflowStatistics(prQ.getDiskRegionStats().getStats());
-      }
-    } else {
-      GatewaySenderMBean bean =
-          (GatewaySenderMBean) service.getLocalGatewaySenderMXBean(this.sender.getId());
-
-      if (bean != null) {
-        // Add the eviction stats
-        bean.getBridge().addOverflowStatistics(prQ.getEvictionStatistics());
-
-        // Add the disk region stats
-        bean.getBridge().addOverflowStatistics(prQ.getDiskRegionStats().getStats());
-      }
-    }
+//    ManagementService service = ManagementService.getManagementService(cache);
+//    if (this.sender.getId().contains(AsyncEventQueueImpl.ASYNC_EVENT_QUEUE_PREFIX)) {
+//      AsyncEventQueueMBean bean = (AsyncEventQueueMBean) service.getLocalAsyncEventQueueMXBean(
+//          AsyncEventQueueImpl.getAsyncEventQueueIdFromSenderId(this.sender.getId()));
+//
+//      if (bean != null) {
+//        // Add the eviction stats
+//        bean.getBridge().addOverflowStatistics(prQ.getEvictionStatistics());
+//
+//        // Add the disk region stats
+//        bean.getBridge().addOverflowStatistics(prQ.getDiskRegionStats().getStats());
+//      }
+//    } else {
+//      GatewaySenderMBean bean =
+//          (GatewaySenderMBean) service.getLocalGatewaySenderMXBean(this.sender.getId());
+//
+//      if (bean != null) {
+//        // Add the eviction stats
+//        bean.getBridge().addOverflowStatistics(prQ.getEvictionStatistics());
+//
+//        // Add the disk region stats
+//        bean.getBridge().addOverflowStatistics(prQ.getDiskRegionStats().getStats());
+//      }
+//    }
   }
 
   /**
@@ -1514,48 +1510,48 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
     conflationExecutor.execute(conflationHandler);
   }
 
-  public long getNumEntriesOverflowOnDiskTestOnly() {
-    long numEntriesOnDisk = 0;
-    for (PartitionedRegion prQ : this.userRegionNameToshadowPRMap.values()) {
-      DiskRegionStats diskStats = prQ.getDiskRegionStats();
-      if (diskStats == null) {
-        if (logger.isDebugEnabled()) {
-          logger.debug(
-              "{}: DiskRegionStats for shadow PR is null. Returning the numEntriesOverflowOnDisk as 0",
-              this);
-        }
-        return 0;
-      }
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "{}: DiskRegionStats for shadow PR is NOT null. Returning the numEntriesOverflowOnDisk obtained from DiskRegionStats",
-            this);
-      }
-      numEntriesOnDisk += diskStats.getNumOverflowOnDisk();
-    }
-    return numEntriesOnDisk;
-  }
-
-  public long getNumEntriesInVMTestOnly() {
-    long numEntriesInVM = 0;
-    for (PartitionedRegion prQ : this.userRegionNameToshadowPRMap.values()) {
-      DiskRegionStats diskStats = prQ.getDiskRegionStats();
-      if (diskStats == null) {
-        if (logger.isDebugEnabled()) {
-          logger.debug(
-              "{}: DiskRegionStats for shadow PR is null. Returning the numEntriesInVM as 0", this);
-        }
-        return 0;
-      }
-      if (logger.isDebugEnabled()) {
-        logger.debug(
-            "{}: DiskRegionStats for shadow PR is NOT null. Returning the numEntriesInVM obtained from DiskRegionStats",
-            this);
-      }
-      numEntriesInVM += diskStats.getNumEntriesInVM();
-    }
-    return numEntriesInVM;
-  }
+//  public long getNumEntriesOverflowOnDiskTestOnly() {
+//    long numEntriesOnDisk = 0;
+//    for (PartitionedRegion prQ : this.userRegionNameToshadowPRMap.values()) {
+//      DiskRegionStats diskStats = prQ.getDiskRegionStats();
+//      if (diskStats == null) {
+//        if (logger.isDebugEnabled()) {
+//          logger.debug(
+//              "{}: DiskRegionStats for shadow PR is null. Returning the numEntriesOverflowOnDisk as 0",
+//              this);
+//        }
+//        return 0;
+//      }
+//      if (logger.isDebugEnabled()) {
+//        logger.debug(
+//            "{}: DiskRegionStats for shadow PR is NOT null. Returning the numEntriesOverflowOnDisk obtained from DiskRegionStats",
+//            this);
+//      }
+//      numEntriesOnDisk += diskStats.getNumOverflowOnDisk();
+//    }
+//    return numEntriesOnDisk;
+//  }
+
+//  public long getNumEntriesInVMTestOnly() {
+//    long numEntriesInVM = 0;
+//    for (PartitionedRegion prQ : this.userRegionNameToshadowPRMap.values()) {
+//      DiskRegionStats diskStats = prQ.getDiskRegionStats();
+//      if (diskStats == null) {
+//        if (logger.isDebugEnabled()) {
+//          logger.debug(
+//              "{}: DiskRegionStats for shadow PR is null. Returning the numEntriesInVM as 0", this);
+//        }
+//        return 0;
+//      }
+//      if (logger.isDebugEnabled()) {
+//        logger.debug(
+//            "{}: DiskRegionStats for shadow PR is NOT null. Returning the numEntriesInVM obtained from DiskRegionStats",
+//            this);
+//      }
+//      numEntriesInVM += diskStats.getNumEntriesInVM();
+//    }
+//    return numEntriesInVM;
+//  }
 
   /**
    * This method does the cleanup of any threads, sockets, connection that are held up by the queue.
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
index 4d371ea..2f0a091 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
@@ -54,13 +54,13 @@ import org.apache.geode.internal.cache.wan.AbstractGatewaySenderEventProcessor;
 import org.apache.geode.internal.cache.wan.GatewaySenderEventCallbackArgument;
 import org.apache.geode.internal.cache.wan.GatewaySenderEventCallbackDispatcher;
 import org.apache.geode.internal.cache.wan.GatewaySenderEventImpl;
-import org.apache.geode.internal.cache.wan.GatewaySenderStats;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThreadGroup;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
 import org.apache.geode.internal.monitoring.ThreadsMonitoring;
 import org.apache.geode.pdx.internal.PeerTypeRegistration;
+import org.apache.geode.statistics.wan.GatewaySenderStats;
 
 /**
  * @since GemFire 7.0
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/LocalStatListener.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/LocalStatListener.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/LocalStatListener.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/LocalStatListener.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveDescriptor.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveDescriptor.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveDescriptor.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveDescriptor.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveFormat.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveFormat.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveFormat.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveFormat.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandler.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandler.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandler.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandler.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandlerConfig.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandlerConfig.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandlerConfig.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveHandlerConfig.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
diff --git a/geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveWriter.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveWriter.java
similarity index 100%
rename from geode-stats/src/main/java/org/apache/geode/internal/statistics/StatArchiveWriter.java
rename to geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveWriter.java
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
index ff97c79..f0357e5 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
@@ -46,12 +46,12 @@ import org.apache.geode.cache.TimeoutException;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.HasCachePerfStats;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.InternalRegionArguments;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.management.ManagementException;
+import org.apache.geode.statistics.cache.CachePerfStats;
 
 /**
  * Manager implementation which manages federated MBeans for the entire DistributedSystem and
@@ -381,9 +381,7 @@ public class FederatingManager extends Manager {
             internalArgs.setIsUsedForMetaRegion(true);
 
             // Create anonymous stats holder for Management Regions
-            final HasCachePerfStats monitoringRegionStats =
-                () -> new CachePerfStats(cache.getDistributedSystem().getStatisticsFactory(),
-                    "managementRegionStats");
+            final HasCachePerfStats monitoringRegionStats = () -> new CachePerfStats("managementRegionStats");
 
             internalArgs.setCachePerfStatsHolder(monitoringRegionStats);
 
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/LocalManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/LocalManager.java
index e0f6088..54d8534 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/LocalManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/LocalManager.java
@@ -41,13 +41,13 @@ import org.apache.geode.cache.RegionExistsException;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.cache.TimeoutException;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.HasCachePerfStats;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.InternalRegionArguments;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThreadGroup;
 import org.apache.geode.management.ManagementException;
+import org.apache.geode.statistics.cache.CachePerfStats;
 
 /**
  * DistributionHelper solves the following problems
@@ -134,11 +134,8 @@ public class LocalManager extends Manager {
         internalArgs.setIsUsedForMetaRegion(true);
 
         // Create anonymous stats holder for Management Regions
-        final HasCachePerfStats monitoringRegionStats = new HasCachePerfStats() {
-          public CachePerfStats getCachePerfStats() {
-            return new CachePerfStats(cache.getDistributedSystem().getStatisticsFactory(), "managementRegionStats");
-          }
-        };
+        final HasCachePerfStats monitoringRegionStats =
+            () -> new CachePerfStats("managementRegionStats");
 
         internalArgs.setCachePerfStatsHolder(monitoringRegionStats);
 
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DiskRegionBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DiskRegionBridge.java
index 84218ef..d8a0f2f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DiskRegionBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DiskRegionBridge.java
@@ -14,31 +14,24 @@
  */
 package org.apache.geode.management.internal.beans;
 
-import org.apache.geode.internal.cache.DiskDirectoryStats;
-import org.apache.geode.internal.cache.DiskRegionStats;
 import org.apache.geode.management.internal.ManagementConstants;
-import org.apache.geode.management.internal.beans.stats.AggregateRegionStatsMonitor;
-import org.apache.geode.management.internal.beans.stats.MBeanStatsMonitor;
-import org.apache.geode.management.internal.beans.stats.StatType;
-import org.apache.geode.management.internal.beans.stats.StatsAverageLatency;
-import org.apache.geode.management.internal.beans.stats.StatsKey;
-import org.apache.geode.management.internal.beans.stats.StatsRate;
+import org.apache.geode.statistics.disk.DiskRegionStats;
 
 public class DiskRegionBridge {
 
-  private DiskRegionStats diskRegionStats;
-
-  private AggregateRegionStatsMonitor aggregateRegionMonitor;
-
-  private MBeanStatsMonitor diskRegionMonitor;
-
-  private StatsAverageLatency diskRegionReadsAverageLatency;
-
-  private StatsAverageLatency diskRegionWritesAverageLatency;
-
-  private StatsRate diskRegionReadsRate;
-
-  private StatsRate diskRegionWritesRate;
+//  private DiskRegionStats diskRegionStats;
+//
+//  private AggregateRegionStatsMonitor aggregateRegionMonitor;
+//
+//  private MBeanStatsMonitor diskRegionMonitor;
+//
+//  private StatsAverageLatency diskRegionReadsAverageLatency;
+//
+//  private StatsAverageLatency diskRegionWritesAverageLatency;
+//
+//  private StatsRate diskRegionReadsRate;
+//
+//  private StatsRate diskRegionWritesRate;
 
   public static final String DISK_REGION_MONITOR = "DiskRegionMonitor";
 
@@ -47,83 +40,83 @@ public class DiskRegionBridge {
   private static final String REGION_MONITOR = "MemberLevelRegionMonitor";
 
   public DiskRegionBridge(DiskRegionStats stats) {
-    this.diskRegionStats = stats;
-    this.aggregateRegionMonitor = new AggregateRegionStatsMonitor(REGION_MONITOR);
-
-    this.diskRegionMonitor = new MBeanStatsMonitor(DISK_REGION_MONITOR);
-
-    addDiskRegionStats(diskRegionStats);
+//    this.diskRegionStats = stats;
+//    this.aggregateRegionMonitor = new AggregateRegionStatsMonitor(REGION_MONITOR);
+//
+//    this.diskRegionMonitor = new MBeanStatsMonitor(DISK_REGION_MONITOR);
+//
+//    addDiskRegionStats(diskRegionStats);
 
     this.configureDiskRegionMetrics();
   }
 
   private Number getDiskRegionStatistic(String statName) {
-    if (diskRegionStats != null) {
-      return diskRegionStats.getStats().get(statName);
-    } else {
+//    if (diskRegionStats != null) {
+//      return diskRegionStats.getStats().get(statName);
+//    } else {
       return ManagementConstants.ZERO;
-    }
+//    }
   }
 
   public void stopMonitor() {
-    diskRegionMonitor.stopListener();
-    aggregateRegionMonitor.stopListener();
+//    diskRegionMonitor.stopListener();
+//    aggregateRegionMonitor.stopListener();
   }
 
-  public void addDirectoryStats(DiskDirectoryStats diskDirStats) {
-    aggregateRegionMonitor.addStatisticsToMonitor(diskDirStats.getStats());
-  }
+//  public void addDirectoryStats(DiskDirectoryStats diskDirStats) {
+//    aggregateRegionMonitor.addStatisticsToMonitor(diskDirStats.getStats());
+//  }
 
   public void addDiskRegionStats(DiskRegionStats diskRegionStats) {
-    diskRegionMonitor.addStatisticsToMonitor(diskRegionStats.getStats());
+//    diskRegionMonitor.addStatisticsToMonitor(diskRegionStats.getStats());
   }
 
   private void configureDiskRegionMetrics() {
-
-    diskRegionReadsRate = new StatsRate(StatsKey.DISK_READS, StatType.LONG_TYPE, diskRegionMonitor);
-
-    diskRegionWritesRate =
-        new StatsRate(StatsKey.DISK_WRITES, StatType.LONG_TYPE, diskRegionMonitor);
-
-    diskRegionReadsAverageLatency = new StatsAverageLatency(StatsKey.DISK_READS, StatType.LONG_TYPE,
-        StatsKey.DISK_REGION_READ_TIME, diskRegionMonitor);
-
-    diskRegionWritesAverageLatency = new StatsAverageLatency(StatsKey.DISK_WRITES,
-        StatType.LONG_TYPE, StatsKey.DISK_REGION_WRITE_TIMES, diskRegionMonitor);
-  }
-
-  public float getDiskReadsRate() {
-    return diskRegionReadsRate.getRate();
-  }
-
-  public float getDiskWritesRate() {
-    return diskRegionWritesRate.getRate();
-  }
-
-  public long getDiskReadsAverageLatency() {
-    return diskRegionReadsAverageLatency.getAverageLatency();
-  }
-
-  public long getDiskWritesAverageLatency() {
-    return diskRegionWritesAverageLatency.getAverageLatency();
+//
+//    diskRegionReadsRate = new StatsRate(StatsKey.DISK_READS, StatType.LONG_TYPE, diskRegionMonitor);
+//
+//    diskRegionWritesRate =
+//        new StatsRate(StatsKey.DISK_WRITES, StatType.LONG_TYPE, diskRegionMonitor);
+//
+//    diskRegionReadsAverageLatency = new StatsAverageLatency(StatsKey.DISK_READS, StatType.LONG_TYPE,
+//        StatsKey.DISK_REGION_READ_TIME, diskRegionMonitor);
+//
+//    diskRegionWritesAverageLatency = new StatsAverageLatency(StatsKey.DISK_WRITES,
+//        StatType.LONG_TYPE, StatsKey.DISK_REGION_WRITE_TIMES, diskRegionMonitor);
   }
 
-  public long getTotalDiskWritesProgress() {
-    return getDiskRegionStatistic(StatsKey.DISK_REGION_WRITE_IN_PROGRESS).longValue();
-  }
-
-  public long getTotalDiskEntriesInVM() {
-    return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_VM).longValue();
-  }
-
-  public long getTotalEntriesOnlyOnDisk() {
-    return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_DISK).longValue();
-  }
-
-  public long getDiskUsage() {
-    long diskSpaceUsage = aggregateRegionMonitor.getDiskSpace();
-    return diskSpaceUsage;
-  }
+//  public float getDiskReadsRate() {
+//    return diskRegionReadsRate.getRate();
+//  }
+//
+//  public float getDiskWritesRate() {
+//    return diskRegionWritesRate.getRate();
+//  }
+//
+//  public long getDiskReadsAverageLatency() {
+//    return diskRegionReadsAverageLatency.getAverageLatency();
+//  }
+
+//  public long getDiskWritesAverageLatency() {
+//    return diskRegionWritesAverageLatency.getAverageLatency();
+//  }
+
+//  public long getTotalDiskWritesProgress() {
+//    return getDiskRegionStatistic(StatsKey.DISK_REGION_WRITE_IN_PROGRESS).longValue();
+//  }
+
+//  public long getTotalDiskEntriesInVM() {
+//    return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_VM).longValue();
+//  }
+
+//  public long getTotalEntriesOnlyOnDisk() {
+//    return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_DISK).longValue();
+//  }
+//
+//  public long getDiskUsage() {
+//    long diskSpaceUsage = aggregateRegionMonitor.getDiskSpace();
+//    return diskSpaceUsage;
+//  }
 
   public long getDiskTaskWaiting() {
     return ManagementConstants.NOT_AVAILABLE_LONG;
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/MemberMBeanBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/MemberMBeanBridge.java
index d5aef60..14e25cb 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/MemberMBeanBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/MemberMBeanBridge.java
@@ -41,8 +41,7 @@ import javax.management.ObjectName;
 
 import org.apache.logging.log4j.Logger;
 
-import org.apache.geode.internal.statistics.InternalDistributedSystemStats;
-import org.apache.geode.statistics.StatisticsType;
+import org.apache.geode.statistics.InternalDistributedSystemStats;
 import org.apache.geode.cache.DiskStore;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.execute.FunctionService;
@@ -54,25 +53,17 @@ import org.apache.geode.distributed.ServerLauncher;
 import org.apache.geode.distributed.internal.ClusterDistributionManager;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.DistributionStats;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.locks.DLockService;
-import org.apache.geode.distributed.internal.locks.DLockStats;
 import org.apache.geode.internal.GemFireVersion;
 import org.apache.geode.internal.PureJavaMode;
-import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.DirectoryHolder;
-import org.apache.geode.internal.cache.DiskDirectoryStats;
 import org.apache.geode.internal.cache.DiskRegion;
 import org.apache.geode.internal.cache.DiskStoreImpl;
-import org.apache.geode.internal.cache.DiskStoreStats;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.InternalRegion;
 import org.apache.geode.internal.cache.LocalRegion;
 import org.apache.geode.internal.cache.PartitionedRegion;
-import org.apache.geode.internal.cache.PartitionedRegionStats;
-import org.apache.geode.internal.cache.control.ResourceManagerStats;
-import org.apache.geode.internal.cache.execute.FunctionServiceStats;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.log4j.LocalizedMessage;
@@ -81,18 +72,15 @@ import org.apache.geode.internal.logging.log4j.LogWriterAppender;
 import org.apache.geode.internal.logging.log4j.LogWriterAppenders;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.offheap.MemoryAllocator;
-import org.apache.geode.internal.offheap.OffHeapMemoryStats;
 import org.apache.geode.internal.process.PidUnavailableException;
 import org.apache.geode.internal.process.ProcessUtils;
 import org.apache.geode.internal.statistics.GemFireStatSampler;
 import org.apache.geode.internal.statistics.HostStatHelper;
-import org.apache.geode.internal.statistics.StatSamplerStats;
 import org.apache.geode.internal.statistics.VMStatsContract;
 import org.apache.geode.internal.statistics.platform.LinuxSystemStats;
 import org.apache.geode.internal.statistics.platform.ProcessStats;
 import org.apache.geode.internal.statistics.platform.SolarisSystemStats;
 import org.apache.geode.internal.statistics.platform.WindowsSystemStats;
-import org.apache.geode.internal.stats50.VMStats50;
 import org.apache.geode.internal.tcp.ConnectionTable;
 import org.apache.geode.management.GemFireProperties;
 import org.apache.geode.management.JVMMetrics;
@@ -114,6 +102,10 @@ import org.apache.geode.management.internal.cli.CommandResponseBuilder;
 import org.apache.geode.management.internal.cli.remote.OnlineCommandProcessor;
 import org.apache.geode.management.internal.cli.result.CommandResult;
 import org.apache.geode.management.internal.cli.result.model.ResultModel;
+import org.apache.geode.statistics.disk.DiskDirectoryStats;
+import org.apache.geode.statistics.dlock.DLockStats;
+import org.apache.geode.statistics.region.PartitionedRegionStats;
+import org.apache.geode.statistics.resourcemanger.ResourceManagerStats;
 
 /**
  * This class acts as an Bridge between MemberMBean and GemFire Cache and Distributed System
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/PartitionedRegionBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/PartitionedRegionBridge.java
index dcd4b76..8289547 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/PartitionedRegionBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/PartitionedRegionBridge.java
@@ -20,16 +20,11 @@ import org.apache.geode.cache.PartitionAttributes;
 import org.apache.geode.cache.Region;
 import org.apache.geode.internal.cache.BucketRegion;
 import org.apache.geode.internal.cache.PartitionedRegion;
-import org.apache.geode.internal.cache.PartitionedRegionStats;
 import org.apache.geode.management.FixedPartitionAttributesData;
 import org.apache.geode.management.PartitionAttributesData;
 import org.apache.geode.management.internal.ManagementConstants;
-import org.apache.geode.management.internal.beans.stats.MBeanStatsMonitor;
 import org.apache.geode.management.internal.beans.stats.StatType;
-import org.apache.geode.management.internal.beans.stats.StatsAverageLatency;
-import org.apache.geode.management.internal.beans.stats.StatsKey;
-import org.apache.geode.management.internal.beans.stats.StatsLatency;
-import org.apache.geode.management.internal.beans.stats.StatsRate;
+import org.apache.geode.statistics.region.PartitionedRegionStats;
 
 public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
 
@@ -43,29 +38,29 @@ public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
 
   private int configuredRedundancy = -1;
 
-  private MBeanStatsMonitor parRegionMonitor;
-
-  private StatsRate putAllRate;
-
-  private StatsRate putRequestRate;
-
-  private StatsRate getRequestRate;
-
-  private StatsRate createsRate;
-
-  private StatsRate destroysRate;
-
-  private StatsRate putLocalRate;
-
-  private StatsRate putRemoteRate;
-
-  private StatsLatency putRemoteLatency;
-
-  private StatsRate averageWritesRate;
-
-  private StatsRate averageReadsRate;
-
-  private StatsAverageLatency remotePutAvgLatency;
+//  private MBeanStatsMonitor parRegionMonitor;
+//
+//  private StatsRate putAllRate;
+//
+//  private StatsRate putRequestRate;
+//
+//  private StatsRate getRequestRate;
+//
+//  private StatsRate createsRate;
+//
+//  private StatsRate destroysRate;
+//
+//  private StatsRate putLocalRate;
+//
+//  private StatsRate putRemoteRate;
+//
+//  private StatsLatency putRemoteLatency;
+//
+//  private StatsRate averageWritesRate;
+//
+//  private StatsRate averageReadsRate;
+//
+//  private StatsAverageLatency remotePutAvgLatency;
 
   public static final String PAR_REGION_MONITOR = "PartitionedRegionMonitor";
 
@@ -83,7 +78,7 @@ public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
 
     PartitionAttributes<K, V> partAttrs = parRegion.getPartitionAttributes();
 
-    this.parRegionMonitor = new MBeanStatsMonitor(PAR_REGION_MONITOR);
+//    this.parRegionMonitor = new MBeanStatsMonitor(PAR_REGION_MONITOR);
 
     this.configurePartitionRegionMetrics();
 
@@ -94,125 +89,125 @@ public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
       this.fixedPartitionAttributesTable =
           RegionMBeanCompositeDataFactory.getFixedPartitionAttributesData(partAttrs);
     }
-    parRegionMonitor.addStatisticsToMonitor(prStats.getStats());
+//    parRegionMonitor.addStatisticsToMonitor(prStats.getStats());
   }
 
   // Dummy constructor for testing purpose only
   public PartitionedRegionBridge(PartitionedRegionStats prStats) {
     this.prStats = prStats;
 
-    this.parRegionMonitor = new MBeanStatsMonitor(PAR_REGION_MONITOR);
-    parRegionMonitor.addStatisticsToMonitor(prStats.getStats());
+//    this.parRegionMonitor = new MBeanStatsMonitor(PAR_REGION_MONITOR);
+//    parRegionMonitor.addStatisticsToMonitor(prStats.getStats());
     configurePartitionRegionMetrics();
   }
 
   private Number getPrStatistic(String statName) {
-    if (prStats != null) {
-      return prStats.getStats().get(statName);
-    } else {
+//    if (prStats != null) {
+//      return prStats.getStats().get(statName);
+//    } else {
       return ManagementConstants.ZERO;
-    }
+//    }
   }
 
   public void stopMonitor() {
     super.stopMonitor();
-    parRegionMonitor.stopListener();
+//    parRegionMonitor.stopListener();
   }
 
   private void configurePartitionRegionMetrics() {
-    putAllRate = new StatsRate(StatsKey.PUTALL_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-    putRequestRate = new StatsRate(StatsKey.PUTS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-    getRequestRate = new StatsRate(StatsKey.GETS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-    destroysRate = new StatsRate(StatsKey.DESTROYS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-    createsRate = new StatsRate(StatsKey.CREATES_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-
-    // Remote Reads Only in case of partitioned Region
-    putRemoteRate = new StatsRate(StatsKey.REMOTE_PUTS, StatType.INT_TYPE, parRegionMonitor);
-
-    putLocalRate = new StatsRate(StatsKey.PUT_LOCAL, StatType.INT_TYPE, parRegionMonitor);
-
-    remotePutAvgLatency = new StatsAverageLatency(StatsKey.REMOTE_PUTS, StatType.INT_TYPE,
-        StatsKey.REMOTE_PUT_TIME, parRegionMonitor);
-
-    putRemoteLatency = new StatsLatency(StatsKey.REMOTE_PUTS, StatType.INT_TYPE,
-        StatsKey.REMOTE_PUT_TIME, parRegionMonitor);
-
-    String[] writesRates = new String[] {StatsKey.PUTALL_COMPLETED, StatsKey.PUTS_COMPLETED,
-        StatsKey.CREATES_COMPLETED};
-    averageWritesRate = new StatsRate(writesRates, StatType.INT_TYPE, parRegionMonitor);
-    averageReadsRate = new StatsRate(StatsKey.GETS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
-  }
-
-  @Override
-  public float getAverageReads() {
-    return averageReadsRate.getRate();
-  }
-
-  @Override
-  public float getAverageWrites() {
-    return averageWritesRate.getRate();
-  }
-
-  @Override
-  public float getCreatesRate() {
-    return createsRate.getRate();
-  }
-
-  @Override
-  public float getPutAllRate() {
-    return putAllRate.getRate();
-  }
-
-  @Override
-  public float getPutsRate() {
-    return putRequestRate.getRate();
-  }
-
-  @Override
-  public float getDestroyRate() {
-    return destroysRate.getRate();
-  }
-
-  @Override
-  public float getGetsRate() {
-    return getRequestRate.getRate();
-  }
-
-
-  @Override
-  public int getActualRedundancy() {
-    return getPrStatistic(StatsKey.ACTUAL_REDUNDANT_COPIES).intValue();
-  }
-
-  @Override
-  public int getAvgBucketSize() {
-    return ManagementConstants.NOT_AVAILABLE_INT;
-  }
-
-  @Override
-  public int getBucketCount() {
-    return getPrStatistic(StatsKey.BUCKET_COUNT).intValue();
-  }
-
-  @Override
-  public int getConfiguredRedundancy() {
-    return configuredRedundancy;
-  }
-
-  @Override
-  public int getNumBucketsWithoutRedundancy() {
-    return getPrStatistic(StatsKey.LOW_REDUNDANCYBUCKET_COUNT).intValue();
-  }
-
-  @Override
-  public int getPrimaryBucketCount() {
-    return getPrStatistic(StatsKey.PRIMARY_BUCKET_COUNT).intValue();
-  }
-
-  @Override
-  public int getTotalBucketSize() {
-    return getPrStatistic(StatsKey.TOTAL_BUCKET_SIZE).intValue();
-  }
+//    putAllRate = new StatsRate(StatsKey.PUTALL_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+//    putRequestRate = new StatsRate(StatsKey.PUTS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+//    getRequestRate = new StatsRate(StatsKey.GETS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+//    destroysRate = new StatsRate(StatsKey.DESTROYS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+//    createsRate = new StatsRate(StatsKey.CREATES_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+//
+//     Remote Reads Only in case of partitioned Region
+//    putRemoteRate = new StatsRate(StatsKey.REMOTE_PUTS, StatType.INT_TYPE, parRegionMonitor);
+//
+//    putLocalRate = new StatsRate(StatsKey.PUT_LOCAL, StatType.INT_TYPE, parRegionMonitor);
+//
+//    remotePutAvgLatency = new StatsAverageLatency(StatsKey.REMOTE_PUTS, StatType.INT_TYPE,
+//        StatsKey.REMOTE_PUT_TIME, parRegionMonitor);
+//
+//    putRemoteLatency = new StatsLatency(StatsKey.REMOTE_PUTS, StatType.INT_TYPE,
+//        StatsKey.REMOTE_PUT_TIME, parRegionMonitor);
+//
+//    String[] writesRates = new String[] {StatsKey.PUTALL_COMPLETED, StatsKey.PUTS_COMPLETED,
+//        StatsKey.CREATES_COMPLETED};
+//    averageWritesRate = new StatsRate(writesRates, StatType.INT_TYPE, parRegionMonitor);
+//    averageReadsRate = new StatsRate(StatsKey.GETS_COMPLETED, StatType.INT_TYPE, parRegionMonitor);
+  }
+
+//  @Override
+//  public float getAverageReads() {
+//    return averageReadsRate.getRate();
+//  }
+//
+//  @Override
+//  public float getAverageWrites() {
+//    return averageWritesRate.getRate();
+//  }
+//
+//  @Override
+//  public float getCreatesRate() {
+//    return createsRate.getRate();
+//  }
+//
+//  @Override
+//  public float getPutAllRate() {
+//    return putAllRate.getRate();
+//  }
+//
+//  @Override
+//  public float getPutsRate() {
+//    return putRequestRate.getRate();
+//  }
+//
+//  @Override
+//  public float getDestroyRate() {
+//    return destroysRate.getRate();
+//  }
+//
+//  @Override
+//  public float getGetsRate() {
+//    return getRequestRate.getRate();
+//  }
+//
+//
+//  @Override
+//  public int getActualRedundancy() {
+//    return getPrStatistic(StatsKey.ACTUAL_REDUNDANT_COPIES).intValue();
+//  }
+
+//  @Override
+//  public int getAvgBucketSize() {
+//    return ManagementConstants.NOT_AVAILABLE_INT;
+//  }
+//
+//  @Override
+//  public int getBucketCount() {
+//    return getPrStatistic(StatsKey.BUCKET_COUNT).intValue();
+//  }
+//
+//  @Override
+//  public int getConfiguredRedundancy() {
+//    return configuredRedundancy;
+//  }
+//
+//  @Override
+//  public int getNumBucketsWithoutRedundancy() {
+//    return getPrStatistic(StatsKey.LOW_REDUNDANCYBUCKET_COUNT).intValue();
+//  }
+//
+//  @Override
+//  public int getPrimaryBucketCount() {
+//    return getPrStatistic(StatsKey.PRIMARY_BUCKET_COUNT).intValue();
+//  }
+
+//  @Override
+//  public int getTotalBucketSize() {
+//    return getPrStatistic(StatsKey.TOTAL_BUCKET_SIZE).intValue();
+//  }
 
   @Override
   public PartitionAttributesData listPartitionAttributes() {
@@ -224,14 +219,14 @@ public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
     return fixedPartitionAttributesTable;
   }
 
-  @Override
-  public long getEntrySize() {
-    if (parRegion.isDataStore()) {
-      return getPrStatistic(StatsKey.DATA_STORE_BYTES_IN_USE).longValue();
-    } else {
-      return ManagementConstants.ZERO;
-    }
-  }
+//  @Override
+//  public long getEntrySize() {
+//    if (parRegion.isDataStore()) {
+//      return getPrStatistic(StatsKey.DATA_STORE_BYTES_IN_USE).longValue();
+//    } else {
+//      return ManagementConstants.ZERO;
+//    }
+//  }
 
   @Override
   public long getHitCount() {
@@ -254,25 +249,25 @@ public class PartitionedRegionBridge<K, V> extends RegionMBeanBridge<K, V> {
   }
 
 
-  @Override
-  public long getPutRemoteAvgLatency() {
-    return remotePutAvgLatency.getAverageLatency();
-  }
-
-  @Override
-  public long getPutRemoteLatency() {
-    return putRemoteLatency.getLatency();
-  }
-
-  @Override
-  public float getPutLocalRate() {
-    return putLocalRate.getRate();
-  }
-
-  @Override
-  public float getPutRemoteRate() {
-    return putRemoteRate.getRate();
-  }
+//  @Override
+//  public long getPutRemoteAvgLatency() {
+//    return remotePutAvgLatency.getAverageLatency();
+//  }
+//
+//  @Override
+//  public long getPutRemoteLatency() {
+//    return putRemoteLatency.getLatency();
+//  }
+//
+//  @Override
+//  public float getPutLocalRate() {
+//    return putLocalRate.getRate();
+//  }
+//
+//  @Override
+//  public float getPutRemoteRate() {
+//    return putRemoteRate.getRate();
+//  }
 
   /**
    * partition region entry count is taken from all primary bucket entry count. Ideally it should
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/RegionMBeanBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/RegionMBeanBridge.java
index fc33df3..a4db686 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/RegionMBeanBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/RegionMBeanBridge.java
@@ -18,13 +18,9 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import org.apache.geode.statistics.Statistics;
 import org.apache.geode.cache.EvictionAttributes;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.RegionAttributes;
-import org.apache.geode.internal.cache.CachePerfStats;
-import org.apache.geode.internal.cache.DirectoryHolder;
-import org.apache.geode.internal.cache.DiskRegionStats;
 import org.apache.geode.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalRegion;
@@ -36,12 +32,8 @@ import org.apache.geode.management.MembershipAttributesData;
 import org.apache.geode.management.PartitionAttributesData;
 import org.apache.geode.management.RegionAttributesData;
 import org.apache.geode.management.internal.ManagementConstants;
-import org.apache.geode.management.internal.ManagementStrings;
-import org.apache.geode.management.internal.beans.stats.MBeanStatsMonitor;
-import org.apache.geode.management.internal.beans.stats.StatType;
-import org.apache.geode.management.internal.beans.stats.StatsAverageLatency;
-import org.apache.geode.management.internal.beans.stats.StatsKey;
-import org.apache.geode.management.internal.beans.stats.StatsRate;
+import org.apache.geode.statistics.cache.CachePerfStats;
+import org.apache.geode.statistics.disk.DiskRegionStats;
 
 /**
  * This class acts as a bridge between a Region and RegionMBean This also listens for statistics
@@ -64,25 +56,25 @@ public class RegionMBeanBridge<K, V> {
 
   private boolean isStatisticsEnabled = false;
 
-  private MBeanStatsMonitor regionMonitor;
-
-  private StatsRate getRequestRate;
-
-  private StatsRate putRequestRate;
-
-  private StatsRate putAllRate;
-
-  private StatsRate createsRate;
-
-  private StatsAverageLatency listenerCallsAvgLatency;
-
-  private StatsAverageLatency writerCallsAvgLatency;
-
-  private StatsRate destroysRate;
-
-  private StatsRate lruDestroyRate;
-
-  private StatsRate lruEvictionRate;
+//  private MBeanStatsMonitor regionMonitor;
+//
+//  private StatsRate getRequestRate;
+//
+//  private StatsRate putRequestRate;
+//
+//  private StatsRate putAllRate;
+//
+//  private StatsRate createsRate;
+//
+//  private StatsAverageLatency listenerCallsAvgLatency;
+//
+//  private StatsAverageLatency writerCallsAvgLatency;
+//
+//  private StatsRate destroysRate;
+//
+//  private StatsRate lruDestroyRate;
+//
+//  private StatsRate lruEvictionRate;
 
   private boolean isGatewayEnabled = false;
 
@@ -94,9 +86,9 @@ public class RegionMBeanBridge<K, V> {
 
   private DiskRegionBridge diskRegionBridge;
 
-  private StatsRate averageWritesRate;
-
-  private StatsRate averageReadsRate;
+//  private StatsRate averageWritesRate;
+//
+//  private StatsRate averageReadsRate;
 
   public static <K, V> RegionMBeanBridge<K, V> getInstance(Region<K, V> region) {
     if (region.getAttributes().getPartitionAttributes() != null) {
@@ -109,9 +101,9 @@ public class RegionMBeanBridge<K, V> {
         DiskRegionBridge diskRegionBridge = new DiskRegionBridge(stats);
         bridge.addDiskRegionBridge(diskRegionBridge);
 
-        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
-          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
-        }
+//        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
+//          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
+//        }
 
         bridge.addDiskRegionBridge(diskRegionBridge);
       }
@@ -127,9 +119,9 @@ public class RegionMBeanBridge<K, V> {
             new DiskRegionBridge(localRegion.getDiskRegion().getStats());
         bridge.addDiskRegionBridge(diskRegionBridge);
 
-        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
-          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
-        }
+//        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
+//          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
+//        }
       }
       return bridge;
     }
@@ -158,17 +150,17 @@ public class RegionMBeanBridge<K, V> {
     this.evictionAttributesData =
         RegionMBeanCompositeDataFactory.getEvictionAttributesData(regAttrs);
 
-    this.regionMonitor =
-        new MBeanStatsMonitor(ManagementStrings.REGION_MONITOR.toLocalizedString());
+//    this.regionMonitor =
+//        new MBeanStatsMonitor(ManagementStrings.REGION_MONITOR.toLocalizedString());
 
     configureRegionMetrics();
 
     this.persistentEnabled = region.getAttributes().getDataPolicy().withPersistence();
 
     this.regionStats = ((LocalRegion) region).getRegionPerfStats();
-    if (regionStats != null) {
-      regionMonitor.addStatisticsToMonitor(regionStats.getStats()); // fixes 46692
-    }
+//    if (regionStats != null) {
+//      regionMonitor.addStatisticsToMonitor(regionStats.getStats()); // fixes 46692
+//    }
 
     monitorLRUStatistics();
 
@@ -190,10 +182,10 @@ public class RegionMBeanBridge<K, V> {
 
   private void monitorLRUStatistics() {
     InternalRegion internalRegion = (InternalRegion) region;
-    Statistics lruStats = internalRegion.getEvictionStatistics();
-    if (lruStats != null) {
-      regionMonitor.addStatisticsToMonitor(lruStats);
-    }
+//    Statistics lruStats = internalRegion.getEvictionStatistics();
+//    if (lruStats != null) {
+//      regionMonitor.addStatisticsToMonitor(lruStats);
+//    }
   }
 
   public String getRegionType() {
@@ -240,9 +232,9 @@ public class RegionMBeanBridge<K, V> {
   public RegionMBeanBridge(CachePerfStats cachePerfStats) {
     this.regionStats = cachePerfStats;
 
-    this.regionMonitor =
-        new MBeanStatsMonitor(ManagementStrings.REGION_MONITOR.toLocalizedString());
-    regionMonitor.addStatisticsToMonitor(cachePerfStats.getStats());
+//    this.regionMonitor =
+//        new MBeanStatsMonitor(ManagementStrings.REGION_MONITOR.toLocalizedString());
+//    regionMonitor.addStatisticsToMonitor(cachePerfStats.getStats());
     configureRegionMetrics();
   }
 
@@ -250,76 +242,76 @@ public class RegionMBeanBridge<K, V> {
   public RegionMBeanBridge() {}
 
   public void stopMonitor() {
-    regionMonitor.stopListener();
+//    regionMonitor.stopListener();
     if (diskRegionBridge != null) {
       diskRegionBridge.stopMonitor();
     }
   }
 
   private void configureRegionMetrics() {
-    putAllRate = new StatsRate(StatsKey.PUT_ALLS, StatType.INT_TYPE, regionMonitor);
-    getRequestRate = new StatsRate(StatsKey.GETS, StatType.INT_TYPE, regionMonitor);
-
-    putRequestRate = new StatsRate(StatsKey.PUTS, StatType.INT_TYPE, regionMonitor);
-
-    destroysRate = new StatsRate(StatsKey.DESTROYS, StatType.INT_TYPE, regionMonitor);
-
-    createsRate = new StatsRate(StatsKey.CREATES, StatType.INT_TYPE, regionMonitor);
-
-    listenerCallsAvgLatency = new StatsAverageLatency(StatsKey.CACHE_LISTENER_CALLS_COMPLETED,
-        StatType.INT_TYPE, StatsKey.CACHE_LISTENR_CALL_TIME, regionMonitor);
-
-    writerCallsAvgLatency = new StatsAverageLatency(StatsKey.CACHE_WRITER_CALLS_COMPLETED,
-        StatType.INT_TYPE, StatsKey.CACHE_WRITER_CALL_TIME, regionMonitor);
-
-    lruDestroyRate = new StatsRate(StatsKey.LRU_DESTROYS, StatType.LONG_TYPE, regionMonitor);
-
-    lruEvictionRate = new StatsRate(StatsKey.LRU_EVICTIONS, StatType.LONG_TYPE, regionMonitor);
-
-    String[] writesRates = new String[] {StatsKey.PUT_ALLS, StatsKey.PUTS, StatsKey.CREATES};
-    averageWritesRate = new StatsRate(writesRates, StatType.INT_TYPE, regionMonitor);
-    averageReadsRate = new StatsRate(StatsKey.GETS, StatType.INT_TYPE, regionMonitor);
+//    putAllRate = new StatsRate(StatsKey.PUT_ALLS, StatType.INT_TYPE, regionMonitor);
+//    getRequestRate = new StatsRate(StatsKey.GETS, StatType.INT_TYPE, regionMonitor);
+//
+//    putRequestRate = new StatsRate(StatsKey.PUTS, StatType.INT_TYPE, regionMonitor);
+//
+//    destroysRate = new StatsRate(StatsKey.DESTROYS, StatType.INT_TYPE, regionMonitor);
+//
+//    createsRate = new StatsRate(StatsKey.CREATES, StatType.INT_TYPE, regionMonitor);
+//
+//    listenerCallsAvgLatency = new StatsAverageLatency(StatsKey.CACHE_LISTENER_CALLS_COMPLETED,
+//        StatType.INT_TYPE, StatsKey.CACHE_LISTENR_CALL_TIME, regionMonitor);
+//
+//    writerCallsAvgLatency = new StatsAverageLatency(StatsKey.CACHE_WRITER_CALLS_COMPLETED,
+//        StatType.INT_TYPE, StatsKey.CACHE_WRITER_CALL_TIME, regionMonitor);
+//
+//    lruDestroyRate = new StatsRate(StatsKey.LRU_DESTROYS, StatType.LONG_TYPE, regionMonitor);
+//
+//    lruEvictionRate = new StatsRate(StatsKey.LRU_EVICTIONS, StatType.LONG_TYPE, regionMonitor);
+//
+//    String[] writesRates = new String[] {StatsKey.PUT_ALLS, StatsKey.PUTS, StatsKey.CREATES};
+//    averageWritesRate = new StatsRate(writesRates, StatType.INT_TYPE, regionMonitor);
+//    averageReadsRate = new StatsRate(StatsKey.GETS, StatType.INT_TYPE, regionMonitor);
   }
 
   private Number getRegionStatistic(String statName) {
-    if (regionStats != null) {
-      return regionStats.getStats().get(statName);
-    } else {
+//    if (regionStats != null) {
+//      return regionStats.getStats().get(statName);
+//    } else {
       return 0;
-    }
-  }
-
-  public long getEntryCount() {
-    return getRegionStatistic(StatsKey.ENTRIES).longValue();
-  }
-
-  public long getCacheListenerCallsAvgLatency() {
-    return listenerCallsAvgLatency.getAverageLatency();
-  }
-
-  public long getCacheWriterCallsAvgLatency() {
-    return writerCallsAvgLatency.getAverageLatency();
-  }
-
-  public float getCreatesRate() {
-    return createsRate.getRate();
-  }
-
-  public float getPutAllRate() {
-    return putAllRate.getRate();
-  }
-
-  public float getPutsRate() {
-    return putRequestRate.getRate();
-  }
-
-  public float getDestroyRate() {
-    return destroysRate.getRate();
-  }
-
-  public float getGetsRate() {
-    return getRequestRate.getRate();
-  }
+//    }
+  }
+
+//  public long getEntryCount() {
+//    return getRegionStatistic(StatsKey.ENTRIES).longValue();
+//  }
+
+//  public long getCacheListenerCallsAvgLatency() {
+//    return listenerCallsAvgLatency.getAverageLatency();
+//  }
+
+//  public long getCacheWriterCallsAvgLatency() {
+//    return writerCallsAvgLatency.getAverageLatency();
+//  }
+//
+//  public float getCreatesRate() {
+//    return createsRate.getRate();
+//  }
+//
+//  public float getPutAllRate() {
+//    return putAllRate.getRate();
+//  }
+//
+//  public float getPutsRate() {
+//    return putRequestRate.getRate();
+//  }
+//
+//  public float getDestroyRate() {
+//    return destroysRate.getRate();
+//  }
+//
+//  public float getGetsRate() {
+//    return getRequestRate.getRate();
+//  }
 
   public long getHitCount() {
     if (isStatisticsEnabled) {
@@ -356,21 +348,21 @@ public class RegionMBeanBridge<K, V> {
     return ManagementConstants.NOT_AVAILABLE_LONG;
   }
 
-  public float getLruDestroyRate() {
-    return lruDestroyRate.getRate();
-  }
-
-  public float getLruEvictionRate() {
-    return lruEvictionRate.getRate();
-  }
-
-  public float getAverageReads() {
-    return averageReadsRate.getRate();
-  }
-
-  public float getAverageWrites() {
-    return averageWritesRate.getRate();
-  }
+//  public float getLruDestroyRate() {
+//    return lruDestroyRate.getRate();
+//  }
+//
+//  public float getLruEvictionRate() {
+//    return lruEvictionRate.getRate();
+//  }
+//
+//  public float getAverageReads() {
+//    return averageReadsRate.getRate();
+//  }
+//
+//  public float getAverageWrites() {
+//    return averageWritesRate.getRate();
+//  }
 
   public long getEntrySize() {
     if (isMemoryEvictionConfigured()) {
@@ -494,58 +486,58 @@ public class RegionMBeanBridge<K, V> {
   }
 
   public long getDiskReadsAverageLatency() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getDiskReadsAverageLatency();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getDiskReadsAverageLatency();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public float getDiskReadsRate() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getDiskReadsRate();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getDiskReadsRate();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public long getDiskUsage() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getDiskUsage();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getDiskUsage();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public long getDiskWritesAverageLatency() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getDiskWritesAverageLatency();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getDiskWritesAverageLatency();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public float getDiskWritesRate() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getDiskWritesRate();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getDiskWritesRate();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public long getTotalDiskEntriesInVM() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getTotalDiskEntriesInVM();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getTotalDiskEntriesInVM();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public long getTotalDiskWritesProgress() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getTotalDiskWritesProgress();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getTotalDiskWritesProgress();
+//    }
     return ManagementConstants.ZERO;
   }
 
   public long getTotalEntriesOnlyOnDisk() {
-    if (this.diskRegionBridge != null) {
-      return diskRegionBridge.getTotalEntriesOnlyOnDisk();
-    }
+//    if (this.diskRegionBridge != null) {
+//      return diskRegionBridge.getTotalEntriesOnlyOnDisk();
+//    }
     return ManagementConstants.ZERO;
   }
 
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/CachePerfStats.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/CachePerfStats.kt
index 311b663..8dc7821 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/CachePerfStats.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/CachePerfStats.kt
@@ -8,12 +8,18 @@ import org.apache.geode.statistics.internal.micrometer.MicrometerMeterGroup
 import org.apache.geode.statistics.internal.micrometer.TimerStatisticMeter
 import org.apache.geode.statistics.util.NOW_NANOS
 
-open class CachePerfStats(regionName:String?) : MicrometerMeterGroup("CachePerfStats${regionName?.let{"-$it"}?:""}") {
+open class CachePerfStats(regionName: String?) : MicrometerMeterGroup("CachePerfStats${regionName?.let { "-$it" }
+        ?: ""}") {
 
-    constructor(): this(null)
+    constructor() : this(null)
+
+    private val cachePerfStatsPrefix: String by lazy {
+        regionName?.let { "region." } ?: "cachePerf."
+    }
+    private val meterTagDefaultArray: Array<String> by lazy {
+        regionName?.let { arrayOf("regionName", regionName) } ?: emptyArray()
+    }
 
-    private val cachePerfStatsPrefix :String by lazy { regionName?.let{"region."}?:"cachePerf." }
-    private val meterTagDefaultArray: Array<String> by lazy { regionName?.let{ arrayOf("regionName", regionName)}?: emptyArray() }
 
     val regionLoadsInProgressMeter = GaugeStatisticMeter("$cachePerfStatsPrefix.loads.inprogress", "Current number of threads in this cache doing a cache load.", meterTagDefaultArray)
     val regionLoadsCompletedMeter = CounterStatisticMeter("$cachePerfStatsPrefix.loads.completed", "Total number of times a load on this cache has completed (as a result of either a local get() or a remote netload).", meterTagDefaultArray)
@@ -666,4 +672,18 @@ open class CachePerfStats(regionName:String?) : MicrometerMeterGroup("CachePerfS
 
     @Deprecated(message = "This was just done as an interim solution until GEODE does not depend on stats for internal state")
     fun getReliableRegionsMissing(): Int = regionReliableRegionMissingMeter.getValue().toInt()
+
+    @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
+    fun getNetsearchesCompleted(): Long = regionNetLoadCompletedMeter.getValue()
+
+    @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
+    fun getEventQueueSize(): Long = regionEventQueueSizeMeter.getValue()
+
+    @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
+    fun getLoadsCompleted(): Long = regionLoadsCompletedMeter.getValue()
+
+    @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
+    fun getGets(): Long = regionGetOperationMeter.getValue()
+
+
 }
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/disk/DiskRegionStats.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/disk/DiskRegionStats.kt
index 38f3557..28f31a0 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/disk/DiskRegionStats.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/disk/DiskRegionStats.kt
@@ -83,4 +83,8 @@ class DiskRegionStats(diskRegionName: String) : MicrometerMeterGroup("DiskRegion
             diskStoreRegionRemoteInitializationMeter.increment()
         }
     }
+
+    fun getNumOverflowOnDisk(): Long {
+        return diskStoreEntriesOnDiskOnlyMeter.getValue()
+    }
 }
\ No newline at end of file
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/CountLRUStatistics.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/CountLRUStatistics.kt
new file mode 100644
index 0000000..df0497a
--- /dev/null
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/CountLRUStatistics.kt
@@ -0,0 +1,42 @@
+/*
+ * 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.statistics.eviction
+
+import org.apache.geode.statistics.internal.micrometer.GaugeStatisticMeter
+
+class CountLRUStatistics(name: String) : EvictionStatsImpl(name, "CountLRUStats-$name") {
+
+    private val countEvictionEntriesAllowedCount = GaugeStatisticMeter("eviction.count.lru.entries.allowed.count", "Number of entries allowed in this region.")
+    private val countEvictionEntryCount = GaugeStatisticMeter("eviction.count.lru.entries.count", "Number of entries in this region.")
+
+
+    override fun initializeStaticMeters() {
+        super.initializeStaticMeters()
+        registerMeter(countEvictionEntriesAllowedCount)
+        registerMeter(countEvictionEntryCount)
+    }
+
+    override fun updateCounter(delta: Long) {
+        countEvictionEntryCount.increment(delta)
+    }
+
+    override fun setLimit(newValue: Long) {
+        countEvictionEntriesAllowedCount.setValue(newValue)
+    }
+
+    override fun setCounter(newValue: Long) {
+        countEvictionEntryCount.setValue(newValue)
+    }
+}
diff --git a/geode-core/src/main/java/org/apache/geode/admin/AlertListener.java b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStats.kt
old mode 100755
new mode 100644
similarity index 63%
rename from geode-core/src/main/java/org/apache/geode/admin/AlertListener.java
rename to geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStats.kt
index 708c9cf..3ce3430
--- a/geode-core/src/main/java/org/apache/geode/admin/AlertListener.java
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStats.kt
@@ -12,19 +12,21 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.admin;
+package org.apache.geode.statistics.eviction
 
-/**
- * A listener whose callback methods are invoked when an {@link Alert} is received.
- *
- * @deprecated as of 7.0 use the <code><a href=
- *             "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code>
- *             package instead
- */
-public interface AlertListener extends java.util.EventListener {
+interface EvictionStats {
+
+    fun incEvictions()
+
+    fun updateCounter(delta: Long)
+
+    fun incDestroys()
+
+    fun setLimit(newValue: Long)
+
+    fun setCounter(l: Long)
+
+    fun incEvaluations(evaluations: Long)
 
-  /**
-   * Invoked when an <code>Alert</code> is received.
-   */
-  void alert(Alert alert);
+    fun incGreedyReturns(greedyReturns: Long)
 }
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStatsImpl.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStatsImpl.kt
new file mode 100644
index 0000000..ddb7058
--- /dev/null
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/EvictionStatsImpl.kt
@@ -0,0 +1,36 @@
+package org.apache.geode.statistics.eviction
+
+import org.apache.geode.statistics.internal.micrometer.CounterStatisticMeter
+import org.apache.geode.statistics.internal.micrometer.MicrometerMeterGroup
+
+abstract class EvictionStatsImpl(private val regionName: String, private val groupName: String = "EvictionStats-$regionName") : MicrometerMeterGroup(groupName), EvictionStats {
+    override fun getCommonTags(): Array<String> = arrayOf("regionName", regionName)
+
+    override fun initializeStaticMeters() {
+        registerMeter(evictionLRUEvictionCountMeter)
+        registerMeter(evictionLRUDestroyCountMeter)
+        registerMeter(evictionLRUEvaluationsCountMeter)
+        registerMeter(evictionLRUGreedyReturnsCountMeter)
+    }
+
+    private val evictionLRUEvictionCountMeter = CounterStatisticMeter("eviction.lru.evictions.count", "Number of total entry evictions triggered by LRU.")
+    private val evictionLRUDestroyCountMeter = CounterStatisticMeter("eviction.lru.destroy.count", "Number of entries destroyed in the region through both destroy cache operations and eviction.")
+    private val evictionLRUEvaluationsCountMeter = CounterStatisticMeter("eviction.lru.evaluation.count", "Number of entries evaluated during LRU operations.")
+    private val evictionLRUGreedyReturnsCountMeter = CounterStatisticMeter("eviction.lru.greedyreturns.count", "Number of non-LRU entries evicted during LRU operations")
+
+    override fun incEvictions() {
+        evictionLRUEvictionCountMeter.increment()
+    }
+
+    override fun incEvaluations(delta: Long) {
+        evictionLRUEvaluationsCountMeter.increment(delta)
+    }
+
+    override fun incDestroys() {
+        evictionLRUDestroyCountMeter.increment()
+    }
+
+    override fun incGreedyReturns(delta: Long) {
+        evictionLRUGreedyReturnsCountMeter.increment(delta)
+    }
+}
\ No newline at end of file
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/HeapLRUStatistics.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/HeapLRUStatistics.kt
new file mode 100644
index 0000000..d9b9d40
--- /dev/null
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/HeapLRUStatistics.kt
@@ -0,0 +1,39 @@
+/*
+ * 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.statistics.eviction
+
+import org.apache.geode.statistics.internal.micrometer.GaugeStatisticMeter
+
+class HeapLRUStatistics(name: String) : EvictionStatsImpl(name, "HeapLRUStatistics-$name") {
+
+    override fun initializeStaticMeters() {
+        super.initializeStaticMeters()
+        registerMeter(heapEvictionEntryBytesMeter)
+    }
+
+    private val heapEvictionEntryBytesMeter = GaugeStatisticMeter("eviction.heap.lru.entries.bytes", "The amount of memory currently used by regions configured for eviction.", unit = "bytes")
+
+    override fun updateCounter(delta: Long) {
+        heapEvictionEntryBytesMeter.increment(delta)
+    }
+
+    override fun setCounter(newValue: Long) {
+        heapEvictionEntryBytesMeter.setValue(newValue)
+    }
+
+    override fun setLimit(newValue: Long) {
+        //noop
+    }
+}
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/MemoryLRUStatistics.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/MemoryLRUStatistics.kt
new file mode 100644
index 0000000..02192da
--- /dev/null
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/eviction/MemoryLRUStatistics.kt
@@ -0,0 +1,41 @@
+/*
+ * 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.statistics.eviction
+
+import org.apache.geode.statistics.internal.micrometer.GaugeStatisticMeter
+
+class MemoryLRUStatistics(name: String) : EvictionStatsImpl(name, "MemLRUStatistics-$name") {
+
+    override fun initializeStaticMeters() {
+        super.initializeStaticMeters()
+        registerMeter(memoryEvictionBytesAllowedMeter)
+        registerMeter(memoryEvictionBytesCountMeter)
+    }
+
+    private val memoryEvictionBytesAllowedMeter = GaugeStatisticMeter("eviction.memory.lru.bytes.limit.count", "Number of total bytes allowed in this region.", unit = "bytes")
+    private val memoryEvictionBytesCountMeter = GaugeStatisticMeter("eviction.memory.lru.bytes.count", "Number of bytes in region.", unit = "bytes")
+
+    override fun updateCounter(delta: Long) {
+        memoryEvictionBytesCountMeter.increment(delta)
+    }
+
+    override fun setLimit(newValue: Long) {
+        memoryEvictionBytesAllowedMeter.setValue(newValue)
+    }
+
+    override fun setCounter(newValue: Long) {
+        memoryEvictionBytesCountMeter.setValue(newValue)
+    }
+}
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/Stat.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/Stat.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/Stat.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/Stat.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlert.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlert.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/StatAlert.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlert.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertDefinition.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlertDefinition.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertDefinition.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlertDefinition.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
similarity index 95%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
index deb623a..7ac5c78 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
+++ b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatAlertsManager.java
@@ -340,7 +340,7 @@ public class StatAlertsManager {
      */
     @Override
     public void run2() {
-      final boolean isDebugEnabled = logger.isDebugEnabled();
+      final boolean isDebugEnabled = SystemTimerTask.logger.isDebugEnabled();
 
       synchronized (StatAlertsManager.this) {
         if (dm.getCancelCriterion().isCancelInProgress()) {
@@ -356,13 +356,13 @@ public class StatAlertsManager {
           return;
 
         if (isDebugEnabled) {
-          logger.debug("EvaluateAlertDefnsTask: starting");
+          SystemTimerTask.logger.debug("EvaluateAlertDefnsTask: starting");
         }
         try {
           StatAlert[] alerts = getAlerts();
           if (alerts.length == 0) {
             if (isDebugEnabled) {
-              logger.debug("EvaluateAlertsDefnsTask: no alerts");
+              SystemTimerTask.logger.debug("EvaluateAlertsDefnsTask: no alerts");
             }
             return;
           }
@@ -372,24 +372,24 @@ public class StatAlertsManager {
           if (isDebugEnabled) {
             Iterator iterator = adminMemberSet.iterator();
             while (iterator.hasNext()) {
-              logger.debug("EvaluateAlertDefnsTask: sending {} alerts to {}", alerts.length,
+              SystemTimerTask.logger.debug("EvaluateAlertDefnsTask: sending {} alerts to {}", alerts.length,
                   iterator.next());
             }
           }
           request.setRecipients(adminMemberSet);
           dm.putOutgoing(request);
         } catch (CancelException e) {
-          logger.debug("EvaluateAlertDefnsTask: system closed: {}", e.getMessage(), e);
+          SystemTimerTask.logger.debug("EvaluateAlertDefnsTask: system closed: {}", e.getMessage(), e);
           close();
         } catch (Exception e) {
-          logger.error(
+          SystemTimerTask.logger.error(
               LocalizedMessage.create(
                   LocalizedStrings.StatAlertsManager_EVALUATEALERTDEFNSTASK_FAILED_WITH_AN_EXCEPTION),
               e);
           close();
         }
         if (isDebugEnabled) {
-          logger.debug("EvaluateAlertDefnsTask: done ");
+          SystemTimerTask.logger.debug("EvaluateAlertDefnsTask: done ");
         }
       }
     } // run
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatListener.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatListener.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/StatListener.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/StatListener.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/StatResource.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/StatResource.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/StatResource.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/StatResource.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/BaseDecoratorImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/BaseDecoratorImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/BaseDecoratorImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/BaseDecoratorImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java
similarity index 97%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java
index 143aea5..a882111 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java
+++ b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl.java
@@ -18,8 +18,6 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.geode.statistics.StatisticDescriptor;
-import org.apache.geode.statistics.Statistics;
 import org.apache.geode.internal.admin.StatAlertsManager;
 
 /**
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionDecoratorImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionDecoratorImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionDecoratorImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionDecoratorImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionHelper.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionHelper.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionHelper.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/FunctionHelper.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/GaugeThresholdDecoratorImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/GaugeThresholdDecoratorImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/GaugeThresholdDecoratorImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/GaugeThresholdDecoratorImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/MultiAttrDefinitionImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/MultiAttrDefinitionImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/MultiAttrDefinitionImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/MultiAttrDefinitionImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/NumberThresholdDecoratorImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/NumberThresholdDecoratorImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/NumberThresholdDecoratorImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/NumberThresholdDecoratorImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/SingleAttrDefinitionImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/SingleAttrDefinitionImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/SingleAttrDefinitionImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/SingleAttrDefinitionImpl.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfo.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfo.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfo.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfo.java
diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfoImpl.java b/geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfoImpl.java
similarity index 100%
rename from geode-core/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfoImpl.java
rename to geode-stats/src/main/java/org/apache/geode/internal/admin/statalerts/StatisticInfoImpl.java