From 00150abbb3e172faeb8e6042e2bb91269f17d634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Fri, 2 Mar 2018 00:17:59 +0100 Subject: [PATCH] fix scheduled executor services thread leak, update to Gradle 4.6-rc-1 --- build.gradle | 19 +++----- gradle.properties | 6 +++ gradle/ext.gradle | 2 +- gradle/publish.gradle | 8 +++- gradle/wrapper/gradle-wrapper.jar | Bin 52928 -> 54334 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 23 +++++----- src/main/java/org/xbib/metrics/Meter.java | 41 +++++++++++++----- .../java/org/xbib/metrics/MetricRegistry.java | 5 ++- src/main/java/org/xbib/metrics/Sampler.java | 18 +++++--- 10 files changed, 77 insertions(+), 48 deletions(-) create mode 100644 gradle.properties diff --git a/build.gradle b/build.gradle index 2e39eba..6fce17d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,9 @@ plugins { - id "org.sonarqube" version "2.2" - id "org.ajoberstar.github-pages" version "1.6.0-rc.1" - id "org.xbib.gradle.plugin.jbake" version "1.1.0" + id "org.sonarqube" version "2.6.1" + id "io.codearte.nexus-staging" version "0.11.0" } -group = 'org.xbib' -version = '1.0.0' - printf "Host: %s\nOS: %s %s %s\nJVM: %s %s %s %s\nGroovy: %s\nGradle: %s\n" + "Build: group: ${project.group} name: ${project.name} version: ${project.version}\n", InetAddress.getLocalHost(), @@ -24,10 +20,6 @@ printf "Host: %s\nOS: %s %s %s\nJVM: %s %s %s %s\nGroovy: %s\nGradle: %s\n" + apply plugin: 'java' apply plugin: 'maven' apply plugin: 'signing' -apply plugin: 'findbugs' -apply plugin: 'pmd' -apply plugin: 'checkstyle' -apply plugin: "jacoco" apply from: 'gradle/ext.gradle' @@ -37,9 +29,9 @@ configurations { dependencies { testCompile "junit:junit:4.12" - testCompile "org.apache.logging.log4j:log4j-core:2.7" - testCompile "org.apache.logging.log4j:log4j-slf4j-impl:2.7" - wagon 'org.apache.maven.wagon:wagon-ssh-external:2.10' + testCompile "org.apache.logging.log4j:log4j-core:2.10.0" + testCompile "org.apache.logging.log4j:log4j-slf4j-impl:2.10.0" + wagon 'org.apache.maven.wagon:wagon-ssh:3.0.0' } sourceCompatibility = 1.8 @@ -72,4 +64,3 @@ if (project.hasProperty('signing.keyId')) { } apply from: 'gradle/publish.gradle' -apply from: 'gradle/sonarqube.gradle' diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..8056dc3 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,6 @@ +group = org.xbib +name = metrics +version = 1.1.0 + +junit.version = 4.12 +wagon.version = 3.0.0 diff --git a/gradle/ext.gradle b/gradle/ext.gradle index df63612..3b01be1 100644 --- a/gradle/ext.gradle +++ b/gradle/ext.gradle @@ -1,5 +1,5 @@ ext { - user = 'xbib' + user = 'jprante' name = 'metrics' description = 'A stripped-down and modified version of Coda Hale Metrics' scmUrl = 'https://github.com/' + user + '/' + name diff --git a/gradle/publish.gradle b/gradle/publish.gradle index 9bf3098..376f190 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -1,12 +1,13 @@ task xbibUpload(type: Upload) { + group = 'publish' configuration = configurations.archives uploadDescriptor = true repositories { if (project.hasProperty("xbibUsername")) { mavenDeployer { configuration = configurations.wagon - repository(url: 'scpexe://xbib.org/repository') { + repository(url: project.property('xbibUrl')) { authentication(userName: xbibUsername, privateKey: xbibPrivateKey) } } @@ -15,6 +16,7 @@ task xbibUpload(type: Upload) { } task sonaTypeUpload(type: Upload) { + group = 'publish' configuration = configurations.archives uploadDescriptor = true repositories { @@ -64,3 +66,7 @@ task sonaTypeUpload(type: Upload) { } } } + +nexusStaging { + packageGroup = "org.xbib" +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 6ffa237849ef3607e39c3b334a92a65367962071..8252d7e25c5b548b131082159ee03249a5d36511 100644 GIT binary patch delta 37269 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 delta 35899 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 W9gWfXL73=#P7$=hf^ednzWWPSA~9hA diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2cef9e8..eac7de5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Nov 01 15:47:24 CET 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-bin.zip diff --git a/gradlew b/gradlew index 9aa616c..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -154,16 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then cd "$(dirname "$0")" fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/src/main/java/org/xbib/metrics/Meter.java b/src/main/java/org/xbib/metrics/Meter.java index 04839fd..9b45fc1 100644 --- a/src/main/java/org/xbib/metrics/Meter.java +++ b/src/main/java/org/xbib/metrics/Meter.java @@ -1,6 +1,6 @@ package org.xbib.metrics; -import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; @@ -15,37 +15,51 @@ import java.util.concurrent.atomic.LongAdder; public class Meter implements Metered { private static final long TICK_INTERVAL = TimeUnit.SECONDS.toNanos(5); - private final ExpWeightedMovingAverage m1Rate = ExpWeightedMovingAverage.oneMinuteEWMA(); - private final ExpWeightedMovingAverage m5Rate = ExpWeightedMovingAverage.fiveMinuteEWMA(); - private final ExpWeightedMovingAverage m15Rate = ExpWeightedMovingAverage.fifteenMinuteEWMA(); + private final ScheduledExecutorService executorService; + + private final ExpWeightedMovingAverage m1Rate; + + private final ExpWeightedMovingAverage m5Rate; + + private final ExpWeightedMovingAverage m15Rate; + + private final LongAdder count; - private final LongAdder count = new LongAdder(); private final AtomicLong lastTick; + private final Clock clock; + private long startedAt; private ScheduledFuture future; /** * Creates a new {@link Meter}. + * @param executorService the executor service */ - public Meter() { - this(Clock.defaultClock()); + public Meter(ScheduledExecutorService executorService) { + this(executorService, Clock.defaultClock()); } /** * Creates a new {@link Meter}. * + * @param executorService the executor service * @param clock the clock to use for the meter ticks */ - public Meter(Clock clock) { + public Meter(ScheduledExecutorService executorService, Clock clock) { + this.executorService = executorService; this.clock = clock; - this.startedAt = this.clock.getTick(); this.lastTick = new AtomicLong(startedAt); + m1Rate = ExpWeightedMovingAverage.oneMinuteEWMA(); + m5Rate = ExpWeightedMovingAverage.fiveMinuteEWMA(); + m15Rate = ExpWeightedMovingAverage.fifteenMinuteEWMA(); + count = new LongAdder(); } - public void spawn(long intervalSeconds) { - this.future = Executors.newScheduledThreadPool(1) + public void start(long intervalSeconds) { + this.startedAt = this.clock.getTick(); + this.future = executorService .scheduleAtFixedRate(this::tickIfNecessary, intervalSeconds, intervalSeconds, TimeUnit.SECONDS); } @@ -53,6 +67,11 @@ public class Meter implements Metered { future.cancel(false); } + public void shutdown() { + stop(); + executorService.shutdownNow(); + } + /** * Mark the occurrence of an event. */ diff --git a/src/main/java/org/xbib/metrics/MetricRegistry.java b/src/main/java/org/xbib/metrics/MetricRegistry.java index 43842cb..08001fd 100644 --- a/src/main/java/org/xbib/metrics/MetricRegistry.java +++ b/src/main/java/org/xbib/metrics/MetricRegistry.java @@ -10,6 +10,7 @@ import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; @@ -486,7 +487,7 @@ public class MetricRegistry implements MetricSet { MetricBuilder METERS = new MetricBuilder() { @Override public Meter newMetric() { - return new Meter(); + return new Meter(Executors.newSingleThreadScheduledExecutor()); } @Override @@ -498,7 +499,7 @@ public class MetricRegistry implements MetricSet { MetricBuilder TIMERS = new MetricBuilder() { @Override public Sampler newMetric() { - return new Sampler(); + return new Sampler(Executors.newSingleThreadScheduledExecutor()); } @Override diff --git a/src/main/java/org/xbib/metrics/Sampler.java b/src/main/java/org/xbib/metrics/Sampler.java index 26bfcb5..f4680db 100644 --- a/src/main/java/org/xbib/metrics/Sampler.java +++ b/src/main/java/org/xbib/metrics/Sampler.java @@ -2,6 +2,7 @@ package org.xbib.metrics; import java.io.Closeable; import java.util.concurrent.Callable; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** @@ -17,18 +18,20 @@ public class Sampler implements Metered, Sampling { /** * Creates a new {@link Sampler} using an {@link ExponentiallyDecayingReservoir} and the default * {@link Clock}. + * @param executorService the executor service */ - public Sampler() { - this(new ExponentiallyDecayingReservoir()); + public Sampler(ScheduledExecutorService executorService) { + this(new ExponentiallyDecayingReservoir(), executorService); } /** * Creates a new {@link Sampler} that uses the given {@link Reservoir}. * * @param reservoir the {@link Reservoir} implementation the sampler should use + * @param executorService the executor service */ - public Sampler(Reservoir reservoir) { - this(reservoir, Clock.defaultClock()); + public Sampler(Reservoir reservoir, ScheduledExecutorService executorService) { + this(reservoir, Clock.defaultClock(), executorService); } /** @@ -36,11 +39,12 @@ public class Sampler implements Metered, Sampling { * * @param reservoir the {@link Reservoir} implementation the sampler should use * @param clock the {@link Clock} implementation the sampler should use + * @param executorService the executor service */ - public Sampler(Reservoir reservoir, Clock clock) { - this.meter = new Meter(clock); - this.clock = clock; + public Sampler(Reservoir reservoir, Clock clock, ScheduledExecutorService executorService) { this.histogram = new Histogram(reservoir); + this.clock = clock; + this.meter = new Meter(executorService, clock); } /**