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;

Reply via email to