From 26656cebc45cca1c2cbf77460b49357320dc41a7 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Wed, 3 Oct 2018 16:27:30 -0400 Subject: [PATCH 1/6] update metrics library to 4.0 The 4.0 release of the metrics library (which changed groupId, from the original author to the Dropwizard project) is the first that has support for running under JDK9: https://github.com/dropwizard/metrics/releases/tag/v4.0.0 When running semantic-metrics under JDK9+, a warning (at DEBUG level) is emitted each time that FastForwardReporter emits metrics: ``` 20:29:01.073 DEBUG [fast-forward-reporter-0] MetricsModule: Failed to get metrics for FileDescriptorGaugeSet java.lang.reflect.InaccessibleObjectException: Unable to make public long com.sun.management.internal.OperatingSystemImpl.getOpenFileDescriptorCount() accessible: module jdk.management does not "opens com.sun.management.internal" to unnamed module @60438a68 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280) at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198) at java.base/java.lang.reflect.Method.setAccessible(Method.java:192) at com.codahale.metrics.jvm.FileDescriptorRatioGauge.invoke(FileDescriptorRatioGauge.java:48) at com.codahale.metrics.jvm.FileDescriptorRatioGauge.getRatio(FileDescriptorRatioGauge.java:35) at com.codahale.metrics.RatioGauge.getValue(RatioGauge.java:64) at com.spotify.apollo.metrics.MetricsModule$1.lambda$getMetrics$0(MetricsModule.java:113) at com.spotify.metrics.ffwd.FastForwardReporter.reportGauge(FastForwardReporter.java:252) at com.spotify.metrics.ffwd.FastForwardReporter.report(FastForwardReporter.java:214) at com.spotify.metrics.ffwd.FastForwardReporter.report(FastForwardReporter.java:202) at com.spotify.metrics.ffwd.FastForwardReporter$2.run(FastForwardReporter.java:373) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) ``` The only downside of this exception is that the FileDescriptionGaugeSet will report "NaN" values (as it has a fallback when exceptions are caught). v4.0 of the metrics library changed how FileDescriptorGaugeSet gets the underlying data to not need reflection. --- core/pom.xml | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index d17cd6d..d32f0d8 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -23,12 +23,12 @@ - com.codahale.metrics + io.dropwizard.metrics metrics-core - com.codahale.metrics + io.dropwizard.metrics metrics-jvm diff --git a/pom.xml b/pom.xml index 51fffee..f5fea89 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ UTF-8 - 3.0.2 + 4.0.2 @@ -77,13 +77,13 @@ - com.codahale.metrics + io.dropwizard.metrics metrics-core ${metrics.version} - com.codahale.metrics + io.dropwizard.metrics metrics-jvm ${metrics.version} From 6741363702b538a4cf08af5b52b102ee256a1c68 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Thu, 4 Oct 2018 09:21:23 -0400 Subject: [PATCH 2/6] drop testing/support for Java 7 Java 7 reached end-of-life in April 2015, Java 8 itself is reaching end-of-life in January 2019 This change is motivated by the metrics 4.x library only being built for Java 8. --- .travis.yml | 1 - pom.xml | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9e83867..8a0966b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: java jdk: - - openjdk7 - oraclejdk8 cache: diff --git a/pom.xml b/pom.xml index f5fea89..062ef06 100644 --- a/pom.xml +++ b/pom.xml @@ -193,8 +193,8 @@ maven-compiler-plugin 3.1 - 1.7 - 1.7 + 1.8 + 1.8 From dba73af7b47ffc62079aa2b39e81f6206d359711 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Mon, 8 Oct 2018 15:20:17 -0400 Subject: [PATCH 3/6] rename FastForwardReporterTest => FastForwardHttpReporterTest rename to avoid confusion with the existing FastForwardReporterTest. The class being tested is FastForwardHttpReporter, not FastForwardReporter. --- ...orwardReporterTest.java => FastForwardHttpReporterTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/{FastForwardReporterTest.java => FastForwardHttpReporterTest.java} (99%) diff --git a/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardReporterTest.java b/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java similarity index 99% rename from ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardReporterTest.java rename to ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java index 7c9a99a..ed6eff6 100644 --- a/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardReporterTest.java +++ b/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java @@ -32,7 +32,7 @@ import rx.Observable; @RunWith(MockitoJUnitRunner.class) -public class FastForwardReporterTest { +public class FastForwardHttpReporterTest { private static final int REPORTING_PERIOD = 50; public static final long TIME = 42L; private FastForwardHttpReporter reporter; From 0e4487232d57df7a2bfb65bafe8fea6d35480f32 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Mon, 8 Oct 2018 15:23:56 -0400 Subject: [PATCH 4/6] fix flakiness in FastForwardHttpReporterTest the current test asserts that, after the reporter is started, `httpClient.sendBatch(..)` should be called at least twice. Since this method is called via something scheduled with a ScheduledExecutorService, the test can't 100% be sure how many times it will be called within a given time window. Sometimes this test fails because the method was called only once within the timeout, not at least twice. This change changes the assertion to be `atLeastOnce`, since the logic being tested does not really depend or care about how many times `httpClient.sendBatch(..)` is called - testing ScheduledExecutorService is not the goal of this test. --- .../spotify/metrics/ffwd/FastForwardHttpReporterTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java b/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java index ed6eff6..fc17186 100644 --- a/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java +++ b/ffwd-http-reporter/src/test/java/com/spotify/metrics/ffwd/FastForwardHttpReporterTest.java @@ -34,7 +34,7 @@ @RunWith(MockitoJUnitRunner.class) public class FastForwardHttpReporterTest { private static final int REPORTING_PERIOD = 50; - public static final long TIME = 42L; + private static final long TIME = 42L; private FastForwardHttpReporter reporter; private SemanticMetricRegistry registry; @@ -60,7 +60,7 @@ public void setUp() throws Exception { } @Test - public void someReporting() throws Exception { + public void someReporting() { doReturn(Observable.just(null)).when(httpClient).sendBatch(any(Batch.class)); fixedClock.setCurrentTime(TIME); @@ -140,7 +140,7 @@ public Double getValue() { final ArgumentCaptor batch = ArgumentCaptor.forClass(Batch.class); - verify(httpClient, timeout(REPORTING_PERIOD * 2 + 20).atLeast(2)).sendBatch( + verify(httpClient, timeout(REPORTING_PERIOD * 2 + 20).atLeastOnce()).sendBatch( batch.capture()); for (final Batch b : batch.getAllValues()) { @@ -173,7 +173,7 @@ public void shouldAddExtractedTags() throws Exception { final ArgumentCaptor batch = ArgumentCaptor.forClass(Batch.class); - verify(httpClient, timeout(REPORTING_PERIOD * 2 + 20).atLeast(2)).sendBatch( + verify(httpClient, timeout(REPORTING_PERIOD * 2 + 20).atLeastOnce()).sendBatch( batch.capture()); final Map commonTags = batch.getValue().getCommonTags(); From 399b05a3dab6fa1fa625e7cfa2592fad339213e6 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Mon, 8 Oct 2018 15:27:47 -0400 Subject: [PATCH 5/6] bump next version to 0.12.0 to mark the change in metrics library version being depended on --- api/pom.xml | 2 +- core/pom.xml | 2 +- examples/pom.xml | 2 +- ffwd-http-reporter/pom.xml | 2 +- ffwd-reporter/pom.xml | 2 +- guava/pom.xml | 2 +- pom.xml | 2 +- remote/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index a72970a..6325b5a 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/core/pom.xml b/core/pom.xml index d32f0d8..731149f 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/examples/pom.xml b/examples/pom.xml index fcf6668..9545230 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/ffwd-http-reporter/pom.xml b/ffwd-http-reporter/pom.xml index 9f05aa9..42c0494 100644 --- a/ffwd-http-reporter/pom.xml +++ b/ffwd-http-reporter/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/ffwd-reporter/pom.xml b/ffwd-reporter/pom.xml index 199005c..7f6ee9e 100644 --- a/ffwd-reporter/pom.xml +++ b/ffwd-reporter/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/guava/pom.xml b/guava/pom.xml index be295ef..4fdf92b 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index 062ef06..b493309 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT Semantic Metrics: Parent POM pom diff --git a/remote/pom.xml b/remote/pom.xml index b9b8127..26fb921 100644 --- a/remote/pom.xml +++ b/remote/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.11.6-SNAPSHOT + 0.12.0-SNAPSHOT .. From f5beb766a0c790dab0a878202224f121e4f76525 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Thu, 11 Oct 2018 11:34:57 -0400 Subject: [PATCH 6/6] set next version to 1.0.0-SNAPSHOT --- api/pom.xml | 2 +- core/pom.xml | 2 +- examples/pom.xml | 2 +- ffwd-http-reporter/pom.xml | 2 +- ffwd-reporter/pom.xml | 2 +- guava/pom.xml | 2 +- pom.xml | 2 +- remote/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 6325b5a..5366ee7 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/core/pom.xml b/core/pom.xml index 731149f..dde9fb3 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/examples/pom.xml b/examples/pom.xml index 9545230..8e38c92 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/ffwd-http-reporter/pom.xml b/ffwd-http-reporter/pom.xml index 42c0494..826dfff 100644 --- a/ffwd-http-reporter/pom.xml +++ b/ffwd-http-reporter/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/ffwd-reporter/pom.xml b/ffwd-reporter/pom.xml index 7f6ee9e..e808c3e 100644 --- a/ffwd-reporter/pom.xml +++ b/ffwd-reporter/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/guava/pom.xml b/guava/pom.xml index 4fdf92b..14e0e63 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index b493309..ff60d8f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT Semantic Metrics: Parent POM pom diff --git a/remote/pom.xml b/remote/pom.xml index 26fb921..6169f47 100644 --- a/remote/pom.xml +++ b/remote/pom.xml @@ -8,7 +8,7 @@ com.spotify.metrics semantic-metrics-parent - 0.12.0-SNAPSHOT + 1.0.0-SNAPSHOT ..