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/12/04 17:57:16 UTC

[geode] 02/03: Some changes

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

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

commit 1b2e036e96f63a4f0518f9c60dac5994c22ed969
Author: Udo Kohlmeyer <uk...@pivotal.io>
AuthorDate: Sun Sep 23 15:30:22 2018 -0700

    Some changes
---
 geode-assembly/build.gradle                        |   9 +-
 geode-core/build.gradle                            |   2 +-
 .../statistics/InternalDistributedSystemStats.java |   7 +-
 .../internal/beans/stats/MBeanStatsMonitor.java    | 191 +++++++++++----------
 geode-core/src/main/kotlin/Server.kt               |  59 -------
 .../AsyncEventQueueProcessor.kt}                   |  30 ++--
 geode-core/src/main/kotlin/{ => demo}/Client.kt    |   7 +-
 geode-core/src/main/kotlin/{ => demo}/Locator.kt   |  14 +-
 .../src/main/kotlin/{Locator.kt => demo/Server.kt} |  33 ++--
 geode-core/src/main/resources/cache123.xml         |  44 +++++
 .../cache/query/internal/cq/CqServiceImpl.java     |   2 +-
 .../statistics/cache/MicrometerCachePerfStats.kt   |   4 +-
 .../micrometer/impl/MicrometerStatisticsManager.kt |  18 +-
 .../micrometer/MicrometerStatisticsFactoryImpl.kt  |   3 +-
 .../statistics/wan/MicrometerGatewaySenderStats.kt |   9 +-
 .../common/statistics/factory/StatsFactory.java    |  14 +-
 16 files changed, 225 insertions(+), 221 deletions(-)

diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 075467b..7df962e 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -251,7 +251,14 @@ def cp = {
         it.contains('lucene-queryparser') ||
         it.contains('lucene-analyzers-phonetic') ||
 
-        it.contains('micrometer-stats') ||
+        it.contains('micrometer') ||
+        it.contains('guava') ||
+        it.contains('kotlin') ||
+        it.contains('reflections') ||
+        it.contains('javassist') ||
+        it.contains('commons-modeler') ||
+        it.contains('mx4j') ||
+        it.contains('Latency') ||
 
         // dependencies from geode-protobuf
         it.contains('protobuf-java') ||
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index f41a13d..b36493c 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -43,7 +43,7 @@ compileKotlin { kotlinOptions.jvmTarget = sourceCompatibility }
 compileTestKotlin { kotlinOptions.jvmTarget = sourceCompatibility }
 
 buildscript {
-  ext.kotlin_version = '1.2.61'
+  ext.kotlin_version = '1.2.70'
 
   repositories {
     mavenCentral()
diff --git a/geode-core/src/main/java/org/apache/geode/internal/statistics/InternalDistributedSystemStats.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/InternalDistributedSystemStats.java
index 2108590..b28ffab 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/statistics/InternalDistributedSystemStats.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/statistics/InternalDistributedSystemStats.java
@@ -42,7 +42,8 @@ public class InternalDistributedSystemStats {
    * The sampler for this DistributedSystem.
    */
   private GemFireStatSampler sampler = null;
-  private FunctionServiceStats functionServiceStats;
+  private FunctionServiceStats functionServiceStats =
+      StatsFactory.createStatsImpl(FunctionServiceStats.class, "FunctionExecution");
   private boolean statsDisabled;
 
   private StatisticsFactory statisticsFactory = StatsFactory.getStatisticsFactory();
@@ -50,10 +51,7 @@ public class InternalDistributedSystemStats {
   private InternalDistributedSystemStats() {}
 
   public static InternalDistributedSystemStats createInstance(boolean statsDisabled) {
-
     singleton.statsDisabled = statsDisabled;
-    singleton.functionServiceStats =
-        StatsFactory.createStatsImpl(FunctionServiceStats.class, "FunctionExecution");
     return singleton;
   }
 
@@ -85,6 +83,7 @@ public class InternalDistributedSystemStats {
     FunctionStats stats = functionExecutionStatsMap.get(textId);
     if (stats == null) {
       stats = StatsFactory.createStatsImpl(FunctionStats.class, textId);
+      System.out.println("stats = " + stats+ " textId = "+textId);
       FunctionStats oldStats = functionExecutionStatsMap.putIfAbsent(textId, stats);
       if (oldStats != null) {
         stats.close();
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/stats/MBeanStatsMonitor.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/stats/MBeanStatsMonitor.java
index 6bd03c0..d682ea4 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/stats/MBeanStatsMonitor.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/stats/MBeanStatsMonitor.java
@@ -12,13 +12,12 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+
 package org.apache.geode.management.internal.beans.stats;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.logging.log4j.Logger;
-
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.statistics.StatisticId;
 import org.apache.geode.internal.statistics.StatisticNotFoundException;
@@ -28,102 +27,108 @@ import org.apache.geode.internal.statistics.ValueMonitor;
 import org.apache.geode.stats.common.statistics.StatisticDescriptor;
 import org.apache.geode.stats.common.statistics.Statistics;
 import org.apache.geode.stats.common.statistics.StatisticsType;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Class to get mappings of stats name to their values
  */
 public class MBeanStatsMonitor implements StatisticsListener {
 
-  private static final Logger logger = LogService.getLogger();
-
-  protected ValueMonitor monitor;
-
-  /**
-   * Map which contains statistics with their name and value
-   */
-  protected DefaultHashMap statsMap;
-
-  protected String monitorName;
-
-  public MBeanStatsMonitor(final String name) {
-    this(name, new ValueMonitor());
-  }
-
-  MBeanStatsMonitor(final String name, final ValueMonitor monitor) {
-    this.monitorName = name;
-    this.monitor = monitor;
-    this.statsMap = new DefaultHashMap();
-  }
-
-  public void addStatisticsToMonitor(final Statistics stats) {
-    monitor.addListener(this);// if already listener is added this will be a no-op
-    // Initialize the stats with the current values.
-    StatisticsType type = stats.getType();
-    StatisticDescriptor[] descriptors = type.getStatistics();
-    for (StatisticDescriptor d : descriptors) {
-      statsMap.put(d.getName(), stats.get(d));
-    }
-    monitor.addStatistics(stats);
-  }
-
-  public void removeStatisticsFromMonitor(final Statistics stats) {
-    statsMap.clear();
-  }
-
-  public void stopListener() {
-    monitor.removeListener(this);
-  }
-
-  public Number getStatistic(final String statName) {
-    Number value = statsMap.get(statName);
-    return value != null ? value : 0;
-  }
-
-  @Override
-  public void handleNotification(final StatisticsNotification notification) {
-    for (StatisticId statId : notification) {
-      StatisticDescriptor descriptor = statId.getStatisticDescriptor();
-      String name = descriptor.getName();
-      Number value;
-      try {
-        value = notification.getValue(statId);
-      } catch (StatisticNotFoundException e) {
-        value = 0;
-      }
-      log(name, value);
-      statsMap.put(name, value);
-    }
-  }
-
-  protected void log(final String name, final Number value) {
-    if (logger.isTraceEnabled()) {
-      logger.trace("Monitor = {} descriptor = {} And value = {}", monitorName, name, value);
-    }
-  }
-
-  public static class DefaultHashMap { // TODO: delete this class
-    private Map<String, Number> internalMap = new HashMap<>();
-
-    public DefaultHashMap() {}
-
-    public Number get(final String key) {
-      return internalMap.get(key) != null ? internalMap.get(key) : 0;
-    }
-
-    public void put(final String key, final Number value) {
-      internalMap.put(key, value);
-    }
-
-    public void clear() {
-      internalMap.clear();
-    }
-
-    /**
-     * For testing only
-     */
-    Map<String, Number> getInternalMap() {
-      return this.internalMap;
-    }
-  }
+	private static final Logger logger = LogService.getLogger();
+
+	protected ValueMonitor monitor;
+
+	/**
+	 * Map which contains statistics with their name and value
+	 */
+	protected DefaultHashMap statsMap;
+
+	protected String monitorName;
+
+	public MBeanStatsMonitor(final String name) {
+		this(name, new ValueMonitor());
+	}
+
+	MBeanStatsMonitor(final String name, final ValueMonitor monitor) {
+		this.monitorName = name;
+		this.monitor = monitor;
+		this.statsMap = new DefaultHashMap();
+	}
+
+	public void addStatisticsToMonitor(final Statistics stats) {
+		monitor.addListener(this);// if already listener is added this will be a no-op
+		// Initialize the stats with the current values.
+		if (stats != null) {
+			StatisticsType type = stats.getType();
+			StatisticDescriptor[] descriptors = type.getStatistics();
+			for (StatisticDescriptor d : descriptors) {
+				statsMap.put(d.getName(), stats.get(d));
+			}
+			monitor.addStatistics(stats);
+		}
+	}
+
+	public void removeStatisticsFromMonitor(final Statistics stats) {
+		statsMap.clear();
+	}
+
+	public void stopListener() {
+		monitor.removeListener(this);
+	}
+
+	public Number getStatistic(final String statName) {
+		Number value = statsMap.get(statName);
+		return value != null ? value : 0;
+	}
+
+	@Override
+	public void handleNotification(final StatisticsNotification notification) {
+		for (StatisticId statId : notification) {
+			StatisticDescriptor descriptor = statId.getStatisticDescriptor();
+			String name = descriptor.getName();
+			Number value;
+			try {
+				value = notification.getValue(statId);
+			}
+			catch (StatisticNotFoundException e) {
+				value = 0;
+			}
+			log(name, value);
+			statsMap.put(name, value);
+		}
+	}
+
+	protected void log(final String name, final Number value) {
+		if (logger.isTraceEnabled()) {
+			logger.trace("Monitor = {} descriptor = {} And value = {}", monitorName, name, value);
+		}
+	}
+
+	public static class DefaultHashMap { // TODO: delete this class
+
+		private Map<String, Number> internalMap = new HashMap<>();
+
+		public DefaultHashMap() {
+		}
+
+		public Number get(final String key) {
+			return internalMap.get(key) != null ? internalMap.get(key) : 0;
+		}
+
+		public void put(final String key, final Number value) {
+			internalMap.put(key, value);
+		}
+
+		public void clear() {
+			internalMap.clear();
+		}
+
+		/**
+		 * For testing only
+		 */
+		Map<String, Number> getInternalMap() {
+			return this.internalMap;
+		}
+	}
 
 }
diff --git a/geode-core/src/main/kotlin/Server.kt b/geode-core/src/main/kotlin/Server.kt
deleted file mode 100644
index bfdcd98..0000000
--- a/geode-core/src/main/kotlin/Server.kt
+++ /dev/null
@@ -1,59 +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.
- */
-import org.apache.geode.cache.CacheFactory
-import org.apache.geode.cache.RegionShortcut
-import org.apache.geode.distributed.ConfigurationProperties
-import java.io.File
-import java.util.*
-
-fun main(args: Array<String>) {
-    val properties = Properties().apply {
-        setProperty("locators", "localhost[44550]")
-        setProperty("mcast-port", "0")
-        setProperty("statistic-sampling-enabled", "true")
-        setProperty(ConfigurationProperties.JMX_MANAGER, "false")
-        setProperty(ConfigurationProperties.JMX_MANAGER_START, "false")
-        setProperty(ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION, "false")
-    }
-    val cache = CacheFactory(properties).create()
-    cache.addCacheServer().apply {
-        port = 0
-        bindAddress = "localhost"
-    }.start()
-
-
-    val diskStoreFactory = cache.createDiskStoreFactory()
-    val diskStore1Name = "${System.identityHashCode(cache)}_someDiskStore"
-    diskStoreFactory.setDiskDirs(arrayOf(File("/tmp/$diskStore1Name")))
-    diskStoreFactory.create(diskStore1Name)
-
-    val regionFactory = cache.createRegionFactory<String, String>(RegionShortcut.PARTITION_REDUNDANT_OVERFLOW)
-    regionFactory.setStatisticsEnabled(true)
-    regionFactory.setDiskStoreName(diskStore1Name)
-    val region1 = regionFactory.create("Region1")
-
-    val diskStoreFactory2 = cache.createDiskStoreFactory()
-    val diskStore2Name = "${System.identityHashCode(cache)}_someDiskStore2"
-    diskStoreFactory2.setDiskDirs(arrayOf(File("/tmp/$diskStore2Name")))
-    diskStoreFactory2.create(diskStore2Name)
-
-    val regionFactory2 = cache.createRegionFactory<String, String>(RegionShortcut.PARTITION_REDUNDANT_OVERFLOW)
-    regionFactory2.setStatisticsEnabled(true)
-    regionFactory2.setDiskStoreName(diskStore2Name)
-    val region2 = regionFactory2.create("Region3")
-
-    val manager = cache.resourceManager
-    val op = manager.createRebalanceFactory().start()
-}
\ No newline at end of file
diff --git a/geode-core/src/main/kotlin/Locator.kt b/geode-core/src/main/kotlin/demo/AsyncEventQueueProcessor.kt
similarity index 52%
copy from geode-core/src/main/kotlin/Locator.kt
copy to geode-core/src/main/kotlin/demo/AsyncEventQueueProcessor.kt
index ca133f7..945a3e0 100644
--- a/geode-core/src/main/kotlin/Locator.kt
+++ b/geode-core/src/main/kotlin/demo/AsyncEventQueueProcessor.kt
@@ -1,7 +1,7 @@
 /*
  * 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
+ * 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
  *
@@ -12,23 +12,19 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-import org.apache.geode.distributed.ConfigurationProperties
-import org.apache.geode.distributed.LocatorLauncher
+package demo
 
-fun main(args: Array<String>) {
-    val build = LocatorLauncher.Builder().apply {
-        port = 44550
-        set("statistic-sampling-enabled", "true")
-        set(ConfigurationProperties.ENABLE_TIME_STATISTICS, "true")
-        set(ConfigurationProperties.JMX_MANAGER, "false")
-        set(ConfigurationProperties.JMX_MANAGER_START, "false")
-        set(ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION, "false")
-    }.build()
+import org.apache.geode.cache.Declarable
+import org.apache.geode.cache.asyncqueue.AsyncEvent
+import org.apache.geode.cache.asyncqueue.AsyncEventListener
+import java.util.*
 
-    build.start()
-
-    while(true)
-    {
-        Thread.sleep(5000)
+class AsyncEventQueueProcessor : AsyncEventListener, Declarable {
+    override fun processEvents(events: MutableList<AsyncEvent<Any, Any>>): Boolean {
+        val random = Random(System.currentTimeMillis())
+        events.forEach { _ ->
+            Thread.sleep(random.nextInt(300).toLong())
+        }
+        return true
     }
 }
\ No newline at end of file
diff --git a/geode-core/src/main/kotlin/Client.kt b/geode-core/src/main/kotlin/demo/Client.kt
similarity index 87%
rename from geode-core/src/main/kotlin/Client.kt
rename to geode-core/src/main/kotlin/demo/Client.kt
index cc728fc..c1e1292 100644
--- a/geode-core/src/main/kotlin/Client.kt
+++ b/geode-core/src/main/kotlin/demo/Client.kt
@@ -1,4 +1,4 @@
-/*
+package demo/*
  * 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
@@ -23,7 +23,8 @@ fun main(args: Array<String>) {
         setProperty("mcast-port", "0")
         setProperty("statistic-sampling-enabled", "true")
     }
-    val cache = ClientCacheFactory(properties).addPoolLocator("localhost", 44550).create()
+    val cache = ClientCacheFactory(properties).addPoolLocator("35.188.91.8 ", 10334).addPoolLocator("35.202.171.126", 10334).create()
+//    val cache = ClientCacheFactory(properties).addPoolLocator(args[0], args[1].toInt()).addPoolLocator(args[2], args[3].toInt()).create()
 
     val regionFactory = cache.createClientRegionFactory<String, String>(ClientRegionShortcut.PROXY)
     regionFactory.setStatisticsEnabled(true)
@@ -53,7 +54,7 @@ fun main(args: Array<String>) {
                 region1.destroy((value*count).toString())
             }
         }
-//        Thread.sleep(100)
+        Thread.sleep(100)
 
         println("Processed value $count")
 
diff --git a/geode-core/src/main/kotlin/Locator.kt b/geode-core/src/main/kotlin/demo/Locator.kt
similarity index 75%
copy from geode-core/src/main/kotlin/Locator.kt
copy to geode-core/src/main/kotlin/demo/Locator.kt
index ca133f7..fd9d37d 100644
--- a/geode-core/src/main/kotlin/Locator.kt
+++ b/geode-core/src/main/kotlin/demo/Locator.kt
@@ -1,4 +1,4 @@
-/*
+package demo/*
  * 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
@@ -17,18 +17,22 @@ import org.apache.geode.distributed.LocatorLauncher
 
 fun main(args: Array<String>) {
     val build = LocatorLauncher.Builder().apply {
-        port = 44550
-        set("statistic-sampling-enabled", "true")
+        port = args[0].toInt()
+        set(ConfigurationProperties.NAME, args[1])
+        set(ConfigurationProperties.STATISTIC_SAMPLING_ENABLED, "true")
         set(ConfigurationProperties.ENABLE_TIME_STATISTICS, "true")
         set(ConfigurationProperties.JMX_MANAGER, "false")
         set(ConfigurationProperties.JMX_MANAGER_START, "false")
         set(ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION, "false")
+        hostnameForClients = args[2]
+        set(ConfigurationProperties.BIND_ADDRESS, args[3])
+        set(ConfigurationProperties.LOCATORS, args[4])
+        set(ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION, "false")
     }.build()
 
     build.start()
 
-    while(true)
-    {
+    while (true) {
         Thread.sleep(5000)
     }
 }
\ No newline at end of file
diff --git a/geode-core/src/main/kotlin/Locator.kt b/geode-core/src/main/kotlin/demo/Server.kt
similarity index 55%
rename from geode-core/src/main/kotlin/Locator.kt
rename to geode-core/src/main/kotlin/demo/Server.kt
index ca133f7..1cbb40f 100644
--- a/geode-core/src/main/kotlin/Locator.kt
+++ b/geode-core/src/main/kotlin/demo/Server.kt
@@ -12,23 +12,32 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+package demo
+
+import org.apache.geode.cache.CacheFactory
 import org.apache.geode.distributed.ConfigurationProperties
-import org.apache.geode.distributed.LocatorLauncher
+import java.util.*
 
 fun main(args: Array<String>) {
-    val build = LocatorLauncher.Builder().apply {
-        port = 44550
-        set("statistic-sampling-enabled", "true")
-        set(ConfigurationProperties.ENABLE_TIME_STATISTICS, "true")
+
+    val properties = Properties().apply {
+        set(ConfigurationProperties.LOCATORS, args[0])
+        set(ConfigurationProperties.NAME, args[1])
+        set(ConfigurationProperties.CACHE_XML_FILE, args[4])
+        set(ConfigurationProperties.BIND_ADDRESS, args[3])
+        set(ConfigurationProperties.MCAST_PORT, "0")
+        set(ConfigurationProperties.STATISTIC_SAMPLING_ENABLED, "true")
         set(ConfigurationProperties.JMX_MANAGER, "false")
         set(ConfigurationProperties.JMX_MANAGER_START, "false")
         set(ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION, "false")
-    }.build()
-
-    build.start()
-
-    while(true)
-    {
-        Thread.sleep(5000)
+        set(ConfigurationProperties.USE_CLUSTER_CONFIGURATION, "false")
+        set(ConfigurationProperties.CONSERVE_SOCKETS, "false")
+        set(ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION, "false")
     }
+    val cache = CacheFactory(properties).create()
+    cache.addCacheServer().apply {
+        port = 0
+        bindAddress = args[3]
+        hostnameForClients = args[2]
+    }.start()
 }
\ No newline at end of file
diff --git a/geode-core/src/main/resources/cache123.xml b/geode-core/src/main/resources/cache123.xml
new file mode 100644
index 0000000..4bd9457
--- /dev/null
+++ b/geode-core/src/main/resources/cache123.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://geode.apache.org/schema/cache"
+	   xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd"
+	   version="1.0" lock-lease="120" lock-timeout="60" search-timeout="300" is-server="true" copy-on-read="false">
+
+	<async-event-queue id="asyncQueue1">
+		<async-event-listener>
+			<class-name>demo.AsyncEventQueueProcessor</class-name>
+		</async-event-listener>
+	</async-event-queue>
+
+	<disk-store name="diskStore1" auto-compact="true" disk-usage-critical-percentage="90" max-oplog-size="1024">
+		<disk-dirs>
+			<disk-dir>/tmp/diskstore1</disk-dir>
+		</disk-dirs>
+	</disk-store>
+
+	<disk-store name="diskStore2" auto-compact="true" disk-usage-critical-percentage="90" max-oplog-size="1024">
+		<disk-dirs>
+			<disk-dir>/tmp/diskstore2</disk-dir>
+		</disk-dirs>
+	</disk-store>
+
+	<region name="Region1">
+		<region-attributes async-event-queue-ids="asyncQueue1" disk-store-name="diskStore1"
+						   data-policy="partition" statistics-enabled="true">
+			<partition-attributes redundant-copies="1" total-num-buckets="113"/>
+			<eviction-attributes>
+				<lru-entry-count action="overflow-to-disk" maximum="55000"/>
+			</eviction-attributes>
+		</region-attributes>
+	</region>
+
+	<region name="Region3">
+		<region-attributes disk-store-name="diskStore2"
+						   data-policy="partition" statistics-enabled="true">
+			<partition-attributes startup-recovery-delay="10000" redundant-copies="1" total-num-buckets="113"/>
+			<eviction-attributes>
+				<lru-entry-count action="overflow-to-disk" maximum="75000"/>
+			</eviction-attributes>
+		</region-attributes>
+	</region>
+</cache>
+
diff --git a/geode-cq/src/main/java/org/apache/geode/cache/query/internal/cq/CqServiceImpl.java b/geode-cq/src/main/java/org/apache/geode/cache/query/internal/cq/CqServiceImpl.java
index a452ebc..61fe7ec 100644
--- a/geode-cq/src/main/java/org/apache/geode/cache/query/internal/cq/CqServiceImpl.java
+++ b/geode-cq/src/main/java/org/apache/geode/cache/query/internal/cq/CqServiceImpl.java
@@ -167,7 +167,7 @@ public class CqServiceImpl implements CqService {
     this.matchingCqMap = new ConcurrentHashMap<String, HashSet<String>>();
 
     // Initialize the VSD statistics
-    this.cqServiceVsdStats = StatsFactory.createStatsImpl(CqServiceVsdStats.class, null);
+    this.cqServiceVsdStats = StatsFactory.createStatsImpl(CqServiceVsdStats.class, "CqServiceImpl");
     // This won't be converted to a Micrometer stat, as this is not really a stat, but merely a
     // wrapper
     // around a stat Impl
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/MicrometerCachePerfStats.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/MicrometerCachePerfStats.kt
index 1823516..eb258c3 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/MicrometerCachePerfStats.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/cache/MicrometerCachePerfStats.kt
@@ -936,9 +936,7 @@ open class MicrometerCachePerfStats @JvmOverloads constructor(statisticsFactory:
     override fun getDiskTasksWaiting(): Int = diskTasksWaitingMeter.getValue().toInt()
 
     @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
-    override fun getStats(): Statistics {
-        TODO("not implemented")
-    }
+    override fun getStats(): Statistics? = null
 
     @Deprecated("The method is deprecated to be removed, but here until a better stats mechanism is found")
     override fun getClearCount(): Int = regionClearMeter.getValue().toInt()
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/internal/micrometer/impl/MicrometerStatisticsManager.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/internal/micrometer/impl/MicrometerStatisticsManager.kt
index a667c47..9db85a0 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/internal/micrometer/impl/MicrometerStatisticsManager.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/internal/micrometer/impl/MicrometerStatisticsManager.kt
@@ -91,15 +91,15 @@ object MicrometerStatisticsManager : StatisticsManager {
 
     private fun createCompositeRegistry(): CompositeMeterRegistry {
         val compositeMeterRegistry = CompositeMeterRegistry(Clock.SYSTEM)
-        if (System.getProperty("geode.metrics.influxdb.enabled")?.toBoolean() == true) {
+//        if (System.getProperty("geode.metrics.influxdb.enabled")?.toBoolean() == true) {
             compositeMeterRegistry.add(createInfluxDB())
-        }
-        if (System.getProperty("geode.metrics.prometheus.enabled")?.toBoolean() == true) {
-            compositeMeterRegistry.add(createPrometheus())
-        }
-        if (System.getProperty("geode.metrics.jmx.enabled")?.toBoolean() == true) {
-            compositeMeterRegistry.add(createJMX())
-        }
+//        }
+//        if (System.getProperty("geode.metrics.prometheus.enabled")?.toBoolean() == true) {
+//            compositeMeterRegistry.add(createPrometheus())
+//        }
+//        if (System.getProperty("geode.metrics.jmx.enabled")?.toBoolean() == true) {
+//            compositeMeterRegistry.add(createJMX())
+//        }
         return compositeMeterRegistry
     }
 
@@ -119,7 +119,7 @@ object MicrometerStatisticsManager : StatisticsManager {
             override fun get(k: String): String? = null
             override fun uri(): String = "http://" +
                     "${System.getProperty("geode.metrics.influxdb.address")
-                            ?: "35.188.47.210"}:8086"
+                            ?: "localhost"}:8086"
         }
         return InfluxMeterRegistry(config, Clock.SYSTEM)
     }
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/micrometer/MicrometerStatisticsFactoryImpl.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/micrometer/MicrometerStatisticsFactoryImpl.kt
index 96414fd..64f55ce 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/micrometer/MicrometerStatisticsFactoryImpl.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/micrometer/MicrometerStatisticsFactoryImpl.kt
@@ -26,7 +26,8 @@ import org.apache.geode.stats.common.statistics.StatisticsType
 import org.apache.geode.stats.common.statistics.factory.StatsFactory
 import java.io.Reader
 
-class MicrometerStatisticsFactoryImpl(vararg meterRegistries: MeterRegistry = arrayOf(SimpleMeterRegistry())) : StatisticsFactory {
+class MicrometerStatisticsFactoryImpl @JvmOverloads constructor(vararg meterRegistries: MeterRegistry =
+                                                                        arrayOf(SimpleMeterRegistry())) : StatisticsFactory {
 
     private val micrometerStatisticsManager = MicrometerStatisticsManager.createWithRegistries(meterRegistries)
     private val meterGroupMap = hashMapOf<String, StatisticsType>()
diff --git a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/wan/MicrometerGatewaySenderStats.kt b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/wan/MicrometerGatewaySenderStats.kt
index 0b75938..2275bd7 100644
--- a/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/wan/MicrometerGatewaySenderStats.kt
+++ b/geode-micrometer-stats/src/main/kotlin/org/apache/geode/statistics/wan/MicrometerGatewaySenderStats.kt
@@ -14,17 +14,18 @@
  */
 package org.apache.geode.statistics.wan
 
-import org.apache.geode.stats.common.internal.cache.wan.GatewaySenderStats
-import org.apache.geode.stats.common.statistics.Statistics
-import org.apache.geode.stats.common.statistics.StatisticsFactory
 import org.apache.geode.statistics.internal.micrometer.impl.CounterStatisticMeter
 import org.apache.geode.statistics.internal.micrometer.impl.GaugeStatisticMeter
 import org.apache.geode.statistics.internal.micrometer.impl.MicrometerMeterGroup
 import org.apache.geode.statistics.internal.micrometer.impl.TimerStatisticMeter
+import org.apache.geode.statistics.micrometer.MicrometerStatsImplementer
 import org.apache.geode.statistics.util.NOW_NANOS
+import org.apache.geode.stats.common.internal.cache.wan.GatewaySenderStats
+import org.apache.geode.stats.common.statistics.Statistics
+import org.apache.geode.stats.common.statistics.StatisticsFactory
 
 open class MicrometerGatewaySenderStats @JvmOverloads constructor(statisticsFactory: StatisticsFactory, private val queueName: String, private val groupName: String = "GatewayReceiverStats-$queueName") :
-        MicrometerMeterGroup(statisticsFactory, groupName), GatewaySenderStats {
+    MicrometerMeterGroup(statisticsFactory, groupName), GatewaySenderStats, MicrometerStatsImplementer {
 
 
     override fun getGroupTags(): Array<String> = arrayOf("gatewaySenderName", queueName)
diff --git a/geode-stats-common/src/main/java/org/apache/geode/stats/common/statistics/factory/StatsFactory.java b/geode-stats-common/src/main/java/org/apache/geode/stats/common/statistics/factory/StatsFactory.java
index ed6aac6..3223dcc 100644
--- a/geode-stats-common/src/main/java/org/apache/geode/stats/common/statistics/factory/StatsFactory.java
+++ b/geode-stats-common/src/main/java/org/apache/geode/stats/common/statistics/factory/StatsFactory.java
@@ -22,10 +22,7 @@ import java.util.Map;
 import java.util.ServiceLoader;
 
 import org.reflections.Reflections;
-import org.reflections.scanners.SubTypesScanner;
 import org.reflections.util.ClasspathHelper;
-import org.reflections.util.ConfigurationBuilder;
-import org.reflections.util.FilterBuilder;
 
 import org.apache.geode.stats.common.Stats;
 import org.apache.geode.stats.common.cache.client.internal.ConnectionStats;
@@ -56,11 +53,12 @@ public class StatsFactory {
     classLoadersList.add(ClasspathHelper.staticClassLoader());
 
     /* don't exclude Object.class */
-    Reflections reflections = new Reflections(new ConfigurationBuilder()
-        .setScanners(new SubTypesScanner(false /* don't exclude Object.class */))
-        .setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
-        .filterInputsBy(new FilterBuilder()
-            .includePackage("org.apache.geode..*")));
+    // Reflections reflections = new Reflections(new ConfigurationBuilder()
+    // .setScanners(new SubTypesScanner(false /* don't exclude Object.class */))
+    // .setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
+    // .filterInputsBy(new FilterBuilder()
+    // .includePackage("org.apache.geode..*")));
+    Reflections reflections = new Reflections("org.apache.geode");
     this.selectedStatsImplementor = selectedStatsImplementor;
     this.statisticsFactory = statisticsFactory;
     initializeStatsImplementations(reflections);