This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new ee8a99641 RATIS-1710. Refactor metrics api and implementation to
separated modules. (#749)
ee8a99641 is described below
commit ee8a99641b0861d4bf0a31d37a59a0f8a0d0af89
Author: Tsz-Wo Nicholas Sze <[email protected]>
AuthorDate: Thu Sep 22 17:05:53 2022 +0800
RATIS-1710. Refactor metrics api and implementation to separated modules.
(#749)
---
pom.xml | 24 +++++++-----
ratis-assembly/pom.xml | 6 ++-
ratis-assembly/src/main/assembly/bin.xml | 3 +-
ratis-assembly/src/main/assembly/src.xml | 3 +-
ratis-examples/pom.xml | 5 +++
{ratis-metrics => ratis-metrics-api}/pom.xml | 25 +-----------
.../java/org/apache/ratis/metrics/LongCounter.java | 0
.../org/apache/ratis/metrics/MetricRegistries.java | 0
.../ratis/metrics/MetricRegistriesLoader.java | 0
.../ratis/metrics/MetricRegistryFactory.java | 5 +--
.../apache/ratis/metrics/MetricRegistryInfo.java | 41 +++++++++++++-------
.../apache/ratis/metrics/RatisMetricRegistry.java | 0
.../org/apache/ratis/metrics/RatisMetrics.java | 8 +---
.../java/org/apache/ratis/metrics/Timekeeper.java | 0
{ratis-metrics => ratis-metrics-default}/pom.xml | 8 +++-
.../ratis/metrics/impl/DefaultTimekeeperImpl.java | 0
.../org/apache/ratis/metrics/impl/JvmMetrics.java | 0
.../ratis/metrics/impl/MetricRegistriesImpl.java | 0
.../metrics/impl/MetricRegistryFactoryImpl.java | 0
.../ratis/metrics/impl/MetricsReporting.java | 0
.../metrics/impl/RatisMetricRegistryImpl.java | 8 ++--
.../ratis/metrics/impl/RatisObjectNameFactory.java | 0
.../apache/ratis/metrics/impl/RefCountingMap.java | 0
.../org.apache.ratis.metrics.MetricRegistries | 0
.../ratis/metrics/TestMetricRegistriesLoader.java | 2 +-
.../ratis/metrics/impl/TestRefCountingMap.java | 0
.../src/test/resources/hadoop-metrics2.properties | 45 ----------------------
ratis-server/pom.xml | 6 +--
ratis-test/pom.xml | 6 +++
.../ratis/grpc/server/TestGrpcServerMetrics.java | 0
30 files changed, 82 insertions(+), 113 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6c7b6701e..aa2de1694 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,8 @@
<module>ratis-examples</module>
<module>ratis-replicated-map</module>
- <module>ratis-metrics</module>
+ <module>ratis-metrics-api</module>
+ <module>ratis-metrics-default</module>
<module>ratis-tools</module>
<module>ratis-shell</module>
<module>ratis-assembly</module>
@@ -271,16 +272,21 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <artifactId>ratis-metrics</artifactId>
- <groupId>org.apache.ratis</groupId>
- <version>${project.version}</version>
+ <artifactId>ratis-metrics-api</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <artifactId>ratis-metrics-default</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ <version>${project.version}</version>
</dependency>
<dependency>
- <artifactId>ratis-metrics</artifactId>
- <groupId>org.apache.ratis</groupId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
+ <artifactId>ratis-metrics-default</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
</dependency>
<dependency>
<artifactId>ratis-tools</artifactId>
diff --git a/ratis-assembly/pom.xml b/ratis-assembly/pom.xml
index 6cb0f0182..588e2a84f 100644
--- a/ratis-assembly/pom.xml
+++ b/ratis-assembly/pom.xml
@@ -291,7 +291,11 @@
<dependency>
<groupId>org.apache.ratis</groupId>
- <artifactId>ratis-metrics</artifactId>
+ <artifactId>ratis-metrics-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ratis</groupId>
+ <artifactId>ratis-metrics-default</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ratis</groupId>
diff --git a/ratis-assembly/src/main/assembly/bin.xml
b/ratis-assembly/src/main/assembly/bin.xml
index 59462c322..85c14fc33 100644
--- a/ratis-assembly/src/main/assembly/bin.xml
+++ b/ratis-assembly/src/main/assembly/bin.xml
@@ -39,7 +39,8 @@
<include>org.apache.ratis:ratis-server-api</include>
<include>org.apache.ratis:ratis-server</include>
<include>org.apache.ratis:ratis-test</include>
- <include>org.apache.ratis:ratis-metrics</include>
+ <include>org.apache.ratis:ratis-metrics-api</include>
+ <include>org.apache.ratis:ratis-metrics-default</include>
<include>org.apache.ratis:ratis-tools</include>
<include>org.apache.ratis:ratis-resource-bundle</include>
</includes>
diff --git a/ratis-assembly/src/main/assembly/src.xml
b/ratis-assembly/src/main/assembly/src.xml
index 4207472b2..6b001af63 100644
--- a/ratis-assembly/src/main/assembly/src.xml
+++ b/ratis-assembly/src/main/assembly/src.xml
@@ -42,7 +42,8 @@
<include>org.apache.ratis:ratis-server</include>
<include>org.apache.ratis:ratis-shell</include>
<include>org.apache.ratis:ratis-test</include>
- <include>org.apache.ratis:ratis-metrics</include>
+ <include>org.apache.ratis:ratis-metrics-api</include>
+ <include>org.apache.ratis:ratis-metrics-default</include>
<include>org.apache.ratis:ratis-tools</include>
<include>org.apache.ratis:ratis-resource-bundle</include>
</includes>
diff --git a/ratis-examples/pom.xml b/ratis-examples/pom.xml
index 7dae2e1cb..9fa6c841b 100644
--- a/ratis-examples/pom.xml
+++ b/ratis-examples/pom.xml
@@ -64,6 +64,11 @@
<type>test-jar</type>
</dependency>
+ <dependency>
+ <artifactId>ratis-metrics-default</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ </dependency>
+
<dependency>
<artifactId>ratis-grpc</artifactId>
<groupId>org.apache.ratis</groupId>
diff --git a/ratis-metrics/pom.xml b/ratis-metrics-api/pom.xml
similarity index 66%
copy from ratis-metrics/pom.xml
copy to ratis-metrics-api/pom.xml
index 96e871652..bb22fc5b1 100644
--- a/ratis-metrics/pom.xml
+++ b/ratis-metrics-api/pom.xml
@@ -21,39 +21,18 @@
<version>3.0.0-SNAPSHOT</version>
</parent>
- <artifactId>ratis-metrics</artifactId>
- <name>Apache Ratis Metrics</name>
+ <artifactId>ratis-metrics-api</artifactId>
+ <name>Apache Ratis Metrics API</name>
<dependencies>
- <dependency>
- <artifactId>ratis-proto</artifactId>
- <groupId>org.apache.ratis</groupId>
- </dependency>
- <dependency>
- <artifactId>ratis-common</artifactId>
- <groupId>org.apache.ratis</groupId>
- </dependency>
<dependency>
<artifactId>ratis-common</artifactId>
<groupId>org.apache.ratis</groupId>
- <scope>test</scope>
- <type>test-jar</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/LongCounter.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/LongCounter.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/LongCounter.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/LongCounter.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistries.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
similarity index 99%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
index 8f45deb2b..deb15f344 100644
---
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
+++
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryFactory.java
@@ -1,5 +1,4 @@
-/**
- *
+/*
* 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
@@ -16,8 +15,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.ratis.metrics;
/**
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
similarity index 69%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
index 70efac627..8cf30a97f 100644
---
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
+++
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
@@ -18,23 +18,25 @@
package org.apache.ratis.metrics;
-import org.apache.ratis.thirdparty.com.codahale.metrics.MetricRegistry;
+import org.apache.ratis.util.JavaUtils;
+import org.apache.ratis.util.MemoizedSupplier;
import java.util.Objects;
+import java.util.function.Supplier;
/**
- *
- * This class holds the name and description and JMX related context names for
such group of
- * metrics.
+ * This class holds the name, description and JMX related context names for
such group of metrics.
+ * <p>
+ * This class is immutable.
*/
public class MetricRegistryInfo {
-
private final String prefix;
private final String metricsDescription;
private final String metricsComponentName;
- private final String fullName;
private final String applicationName;
+ private final Supplier<Integer> hash =
MemoizedSupplier.valueOf(this::computeHash);
+
/**
* @param prefix className or component name this metric registry collects
metric for
* @param applicationName application Name needs to be in small case as it
is used for hadoop2metrics
@@ -48,7 +50,6 @@ public class MetricRegistryInfo {
this.applicationName = applicationName;
this.metricsComponentName = metricsComponentName;
this.metricsDescription = metricsDescription;
- this.fullName = MetricRegistry.name(applicationName, metricsComponentName,
prefix);
}
public String getApplicationName() {
@@ -79,21 +80,33 @@ public class MetricRegistryInfo {
@Override
public boolean equals(Object obj) {
- if (obj instanceof MetricRegistryInfo) {
- return this.hashCode() == obj.hashCode();
- } else {
+ if (this == obj) {
+ return true;
+ } else if (!(obj instanceof MetricRegistryInfo)) {
return false;
}
+ final MetricRegistryInfo that = (MetricRegistryInfo) obj;
+ return Objects.equals(prefix, that.prefix)
+ && Objects.equals(metricsDescription, that.metricsDescription)
+ && Objects.equals(metricsComponentName, that.metricsComponentName)
+ && Objects.equals(applicationName, that.applicationName);
}
@Override
public int hashCode() {
- return Objects.hash(prefix, metricsDescription, metricsComponentName);
+ return hash.get();
}
- public String getName() {
- return fullName;
+ private Integer computeHash() {
+ return Objects.hash(prefix, metricsDescription, metricsComponentName);
}
-
+ @Override
+ public String toString() {
+ return JavaUtils.getClassSimpleName(getClass())
+ + ": applicationName=" + getApplicationName()
+ + ", metricsComponentName=" + getMetricsComponentName()
+ + ", prefix=" + getPrefix()
+ + ", metricsDescription=" + getMetricsDescription();
+ }
}
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
similarity index 93%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
index 7481394ee..32bcf52e3 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
+++ b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/RatisMetrics.java
@@ -59,9 +59,7 @@ public class RatisMetrics {
protected static RatisMetricRegistry create(MetricRegistryInfo info) {
Optional<RatisMetricRegistry> metricRegistry =
MetricRegistries.global().get(info);
return metricRegistry.orElseGet(() -> {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Creating Metrics Registry : {}", info.getName());
- }
+ LOG.debug("Creating {}", info);
return MetricRegistries.global().create(info);
});
}
@@ -74,9 +72,7 @@ public class RatisMetrics {
public void unregister() {
MetricRegistryInfo info = registry.getMetricRegistryInfo();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Unregistering Metrics Registry : {}", info.getName());
- }
+ LOG.debug("Unregistering {}", info);
Optional<RatisMetricRegistry> metricRegistry =
MetricRegistries.global().get(info);
if (metricRegistry.isPresent()) {
MetricRegistries.global().remove(info);
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/Timekeeper.java
b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/Timekeeper.java
similarity index 100%
rename from ratis-metrics/src/main/java/org/apache/ratis/metrics/Timekeeper.java
rename to
ratis-metrics-api/src/main/java/org/apache/ratis/metrics/Timekeeper.java
diff --git a/ratis-metrics/pom.xml b/ratis-metrics-default/pom.xml
similarity index 88%
rename from ratis-metrics/pom.xml
rename to ratis-metrics-default/pom.xml
index 96e871652..178f89276 100644
--- a/ratis-metrics/pom.xml
+++ b/ratis-metrics-default/pom.xml
@@ -21,10 +21,14 @@
<version>3.0.0-SNAPSHOT</version>
</parent>
- <artifactId>ratis-metrics</artifactId>
- <name>Apache Ratis Metrics</name>
+ <artifactId>ratis-metrics-default</artifactId>
+ <name>Apache Ratis Metrics Default Implementation</name>
<dependencies>
+ <dependency>
+ <artifactId>ratis-metrics-api</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ </dependency>
<dependency>
<artifactId>ratis-proto</artifactId>
<groupId>org.apache.ratis</groupId>
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/DefaultTimekeeperImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/DefaultTimekeeperImpl.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/DefaultTimekeeperImpl.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/DefaultTimekeeperImpl.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/JvmMetrics.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/JvmMetrics.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/JvmMetrics.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/JvmMetrics.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistriesImpl.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricRegistryFactoryImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistryFactoryImpl.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricRegistryFactoryImpl.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricRegistryFactoryImpl.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricsReporting.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricsReporting.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/MetricsReporting.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/MetricsReporting.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
similarity index 94%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
index 0de6bc02d..4e8e58d47 100644
---
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
+++
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
@@ -32,6 +32,7 @@ import
org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
import
org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
import java.util.Map;
+import java.util.Objects;
import java.util.SortedMap;
import java.util.function.Supplier;
@@ -49,13 +50,14 @@ public class RatisMetricRegistryImpl implements
RatisMetricRegistry {
private final MetricRegistry metricRegistry = new MetricRegistry();
private final MetricRegistryInfo info;
+ private final String namePrefix;
private JmxReporter jmxReporter;
private ConsoleReporter consoleReporter;
public RatisMetricRegistryImpl(MetricRegistryInfo info) {
- super();
- this.info = info;
+ this.info = Objects.requireNonNull(info, "info == null");
+ this.namePrefix = MetricRegistry.name(info.getApplicationName(),
info.getMetricsComponentName(), info.getPrefix());
}
@Override
@@ -111,7 +113,7 @@ public class RatisMetricRegistryImpl implements
RatisMetricRegistry {
}
private String getMetricName(String shortName) {
- return MetricRegistry.name(info.getName(), shortName);
+ return MetricRegistry.name(namePrefix, shortName);
}
private <T extends Metric> T register(String name, T metric) throws
IllegalArgumentException {
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisObjectNameFactory.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisObjectNameFactory.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisObjectNameFactory.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisObjectNameFactory.java
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RefCountingMap.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RefCountingMap.java
similarity index 100%
rename from
ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RefCountingMap.java
rename to
ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RefCountingMap.java
diff --git
a/ratis-metrics/src/main/resources/META-INF/services/org.apache.ratis.metrics.MetricRegistries
b/ratis-metrics-default/src/main/resources/META-INF/services/org.apache.ratis.metrics.MetricRegistries
similarity index 100%
rename from
ratis-metrics/src/main/resources/META-INF/services/org.apache.ratis.metrics.MetricRegistries
rename to
ratis-metrics-default/src/main/resources/META-INF/services/org.apache.ratis.metrics.MetricRegistries
diff --git
a/ratis-metrics/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
similarity index 99%
rename from
ratis-metrics/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
rename to
ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
index 8429ded13..cbfa6810c 100644
---
a/ratis-metrics/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
+++
b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
@@ -1,4 +1,4 @@
-/**
+/*
* 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
diff --git
a/ratis-metrics/src/test/java/org/apache/ratis/metrics/impl/TestRefCountingMap.java
b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/impl/TestRefCountingMap.java
similarity index 100%
rename from
ratis-metrics/src/test/java/org/apache/ratis/metrics/impl/TestRefCountingMap.java
rename to
ratis-metrics-default/src/test/java/org/apache/ratis/metrics/impl/TestRefCountingMap.java
diff --git a/ratis-metrics/src/test/resources/hadoop-metrics2.properties
b/ratis-metrics/src/test/resources/hadoop-metrics2.properties
deleted file mode 100644
index fdec0fad2..000000000
--- a/ratis-metrics/src/test/resources/hadoop-metrics2.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-#There are two options with file names:
-# 1. hadoop-metrics2-[prefix].properties
-# 2. hadoop-metrics2.properties
-# Either will be loaded by the metrics system (but not both).
-#
-# NOTE: The metrics system is only initialized once per JVM (but does
ref-counting, so we can't
-# shutdown and restart), so we only load the first prefix that we find.
Generally, this will be
-# ratis_log_service_metadata/ratis_log_service/ratis (unless someone else
registers first,
-# but for many clients, there should only be one).
-#
-# Usually, you would use hadoop-metrics2-phoenix.properties, but we use the
generic
-# hadoop-metrics2.properties to ensure it these are loaded regardless of where
we are running,
-# assuming there isn't another config on the classpath.
-
-#
-# When specifying sinks, the syntax to use is:
-# [prefix].[source|sink].[instance].[options]
-# See javadoc of package-info.java for org.apache.hadoop.metrics2 for detail
-
-ratis_test.source.start_mbeans=true
-ratis.sink.sink0.class=org.apache.ratis.metrics.TestHadoop2MetricsSink
-#ratis_test.sink.ganglia.servers=localhost:8649
-#*.sink.graphite.class=org.apache.hadoop.metrics2.sink.GraphiteSink
-#ratis_test.sink.graphite.server_host=localhost
-#ratis_test.sink.graphite.server_port=2003
-# Frequency, in seconds, of sampling from the sources
-*.period=1
diff --git a/ratis-server/pom.xml b/ratis-server/pom.xml
index c145137f0..c1a433e13 100644
--- a/ratis-server/pom.xml
+++ b/ratis-server/pom.xml
@@ -82,15 +82,15 @@
</dependency>
<dependency>
<groupId>org.apache.ratis</groupId>
- <artifactId>ratis-metrics</artifactId>
+ <artifactId>ratis-metrics-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ratis</groupId>
- <artifactId>ratis-metrics</artifactId>
- <type>test-jar</type>
+ <artifactId>ratis-metrics-default</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
diff --git a/ratis-test/pom.xml b/ratis-test/pom.xml
index ce05786a9..fcc751049 100644
--- a/ratis-test/pom.xml
+++ b/ratis-test/pom.xml
@@ -54,6 +54,12 @@
<type>test-jar</type>
</dependency>
+ <dependency>
+ <artifactId>ratis-metrics-default</artifactId>
+ <groupId>org.apache.ratis</groupId>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<artifactId>ratis-netty</artifactId>
<groupId>org.apache.ratis</groupId>
diff --git
a/ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
b/ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
similarity index 100%
rename from
ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
rename to
ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java