This is an automated email from the ASF dual-hosted git repository.
elserj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 99c33e0 RATIS-723. Fix pluggable metrics impl which cause test
failures
99c33e0 is described below
commit 99c33e0b1eabd15f44e08f5e1f42597f3ef4328c
Author: Tsz Wo Nicholas Sze <[email protected]>
AuthorDate: Mon Oct 21 10:18:27 2019 -0400
RATIS-723. Fix pluggable metrics impl which cause test failures
Signed-off-by: Josh Elser <[email protected]>
---
.../src/main/java/org/apache/ratis/util/JmxRegister.java | 4 ++--
.../org/apache/ratis/examples/filestore/cli/Server.java | 12 ++++--------
ratis-logservice/pom.xml | 5 +++++
.../apache/ratis/logservice/LogServiceReadWriteBase.java | 7 +++++++
.../org/apache/ratis/logservice/server/TestMetaServer.java | 7 ++++++-
.../src/main/java/org/apache/ratis/metrics/JVMMetrics.java | 14 +++++++++-----
.../java/org/apache/ratis/metrics/MetricsReporting.java | 7 ++++---
ratis-test/pom.xml | 6 ++++++
.../apache/ratis/server/raftlog/TestRaftLogMetrics.java | 8 +++++---
9 files changed, 48 insertions(+), 22 deletions(-)
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
b/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
index 8fc3581..54f7989 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.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
@@ -17,13 +17,13 @@
*/
package org.apache.ratis.util;
-import org.apache.ratis.thirdparty.com.google.common.base.Supplier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.management.JMException;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
+import java.util.function.Supplier;
/** For registering JMX beans. */
public class JmxRegister {
diff --git
a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/cli/Server.java
b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/cli/Server.java
index a08dfe4..a81366b 100644
---
a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/cli/Server.java
+++
b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/cli/Server.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
@@ -26,8 +26,6 @@ import org.apache.ratis.examples.filestore.FileStoreCommon;
import org.apache.ratis.examples.filestore.FileStoreStateMachine;
import org.apache.ratis.grpc.GrpcConfigKeys;
import org.apache.ratis.metrics.JVMMetrics;
-import org.apache.ratis.metrics.MetricRegistries;
-import org.apache.ratis.metrics.MetricsReporting;
import org.apache.ratis.protocol.RaftGroup;
import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.protocol.RaftPeer;
@@ -38,6 +36,7 @@ import org.apache.ratis.statemachine.StateMachine;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.util.LifeCycle;
import org.apache.ratis.util.NetUtils;
+import org.apache.ratis.util.TimeDuration;
import java.io.File;
import java.util.Collections;
@@ -58,6 +57,8 @@ public class Server extends SubCommandBase {
@Override
public void run() throws Exception {
+ JVMMetrics.initJvmMetrics(TimeDuration.valueOf(10, TimeUnit.SECONDS));
+
RaftPeerId peerId = RaftPeerId.valueOf(id);
RaftProperties properties = new RaftProperties();
@@ -69,11 +70,6 @@ public class Server extends SubCommandBase {
ConfUtils.setFile(properties::setFile,
FileStoreCommon.STATEMACHINE_DIR_KEY,
storageDir);
StateMachine stateMachine = new FileStoreStateMachine(properties);
- MetricRegistries registries = MetricRegistries.global();
- JVMMetrics.addJvmMetrics(registries);
-
- registries.addReporterRegistration(MetricsReporting.consoleReporter(10,
TimeUnit.SECONDS));
- registries.addReporterRegistration(MetricsReporting.jmxReporter());
final RaftGroup raftGroup =
RaftGroup.valueOf(RaftGroupId.valueOf(ByteString.copyFromUtf8(raftGroupId)),
peers);
RaftServer raftServer = RaftServer.newBuilder()
diff --git a/ratis-logservice/pom.xml b/ratis-logservice/pom.xml
index b649826..52133d2 100644
--- a/ratis-logservice/pom.xml
+++ b/ratis-logservice/pom.xml
@@ -292,5 +292,10 @@
<type>test-jar</type>
</dependency>
+ <dependency>
+ <groupId>io.dropwizard.metrics</groupId>
+ <artifactId>metrics-jvm</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
index 090e1eb..2606c2c 100644
---
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
+++
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
@@ -25,6 +25,7 @@ import java.lang.management.ManagementFactory;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
import java.util.Iterator;
@@ -46,7 +47,9 @@ import org.apache.ratis.logservice.impl.LogStreamImpl;
import org.apache.ratis.logservice.metrics.LogServiceMetricsRegistry;
import org.apache.ratis.logservice.server.LogStateMachine;
import org.apache.ratis.logservice.util.TestUtils;
+import org.apache.ratis.metrics.JVMMetrics;
import org.apache.ratis.statemachine.StateMachine;
+import org.apache.ratis.util.TimeDuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -58,6 +61,10 @@ public abstract class LogServiceReadWriteBase<CLUSTER
extends MiniRaftCluster>
implements MiniRaftCluster.Factory.Get<CLUSTER> {
public static final Logger LOG =
LoggerFactory.getLogger(LogServiceReadWriteBase.class);
+ static {
+ JVMMetrics.initJvmMetrics(TimeDuration.valueOf(10, TimeUnit.SECONDS));
+ }
+
{
final RaftProperties p = getProperties();
p.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY,
diff --git
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
index acb4225..3767190 100644
---
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
+++
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
@@ -27,9 +27,10 @@ import
org.apache.ratis.logservice.metrics.LogServiceMetricsRegistry;
import org.apache.ratis.logservice.proto.MetaServiceProtos;
import org.apache.ratis.logservice.util.LogServiceCluster;
import org.apache.ratis.logservice.util.TestUtils;
-import org.apache.ratis.protocol.RaftPeer;
+import org.apache.ratis.metrics.JVMMetrics;
import org.apache.ratis.server.impl.RaftServerImpl;
import org.apache.ratis.server.impl.RaftServerProxy;
+import org.apache.ratis.util.TimeDuration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -40,6 +41,7 @@ import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;
@@ -49,6 +51,9 @@ import javax.management.ObjectName;
import static org.junit.Assert.*;
public class TestMetaServer {
+ static {
+ JVMMetrics.initJvmMetrics(TimeDuration.valueOf(10, TimeUnit.SECONDS));
+ }
static LogServiceCluster cluster = null;
static List<LogServer> workers = null;
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
b/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
index 4d76ed6..3688289 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.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
@@ -21,16 +21,20 @@ import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
+import org.apache.ratis.util.TimeDuration;
/**
* Helper class to add JVM metrics.
*/
-public final class JVMMetrics {
-
- private JVMMetrics() {
+public interface JVMMetrics {
+ static void initJvmMetrics(TimeDuration consoleReportRate) {
+ final MetricRegistries registries = MetricRegistries.global();
+ JVMMetrics.addJvmMetrics(registries);
+
registries.addReporterRegistration(MetricsReporting.consoleReporter(consoleReportRate));
+ registries.addReporterRegistration(MetricsReporting.jmxReporter());
}
- public static void addJvmMetrics(MetricRegistries registries) {
+ static void addJvmMetrics(MetricRegistries registries) {
MetricRegistryInfo info = new MetricRegistryInfo("jvm", "ratis_jvm",
"jvm", "jvm metrics");
RatisMetricRegistry registry = registries.create(info);
diff --git
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
index b35a4b2..b841019 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.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
@@ -23,6 +23,7 @@ import java.util.function.Consumer;
import com.codahale.metrics.ConsoleReporter;
import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.JmxReporter.Builder;
+import org.apache.ratis.util.TimeDuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,10 +33,10 @@ public final class MetricsReporting {
private MetricsReporting() {
}
- public static Consumer<RatisMetricRegistry> consoleReporter(int period,
TimeUnit unit) {
+ public static Consumer<RatisMetricRegistry> consoleReporter(TimeDuration
rate) {
return ratisMetricRegistry ->
ConsoleReporter.forRegistry(ratisMetricRegistry.getDropWizardMetricRegistry())
.convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build()
- .start(period, unit);
+ .start(rate.getDuration(), rate.getUnit());
}
public static Consumer<RatisMetricRegistry> jmxReporter() {
diff --git a/ratis-test/pom.xml b/ratis-test/pom.xml
index eb50de2..232e4c6 100644
--- a/ratis-test/pom.xml
+++ b/ratis-test/pom.xml
@@ -88,5 +88,11 @@
<artifactId>mockito-all</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>io.dropwizard.metrics</groupId>
+ <artifactId>metrics-jvm</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
index 5e3df55..407d963 100644
---
a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
+++
b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
@@ -23,6 +23,7 @@ import org.apache.ratis.BaseTest;
import org.apache.ratis.MiniRaftCluster;
import org.apache.ratis.RaftTestUtil;
import org.apache.ratis.client.RaftClient;
+import org.apache.ratis.metrics.JVMMetrics;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.server.impl.RaftServerImpl;
import org.apache.ratis.server.metrics.RatisMetrics;
@@ -32,21 +33,22 @@ import org.apache.ratis.statemachine.StateMachine;
import org.apache.ratis.statemachine.impl.BaseStateMachine;
import org.apache.ratis.util.JavaUtils;
import org.apache.ratis.util.LogUtils;
+import org.apache.ratis.util.TimeDuration;
import org.junit.Assert;
import org.junit.Test;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import static org.apache.ratis.server.metrics.RatisMetricNames.*;
public class TestRaftLogMetrics extends BaseTest
implements MiniRaftClusterWithSimulatedRpc.FactoryGet {
-
- {
- LogUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG);
+ static {
+ JVMMetrics.initJvmMetrics(TimeDuration.valueOf(10, TimeUnit.SECONDS));
}
public static final int NUM_SERVERS = 3;