You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/03/23 18:19:15 UTC
tinkerpop git commit: Deregistered metrics on Gremlin Server stop
Repository: tinkerpop
Updated Branches:
refs/heads/tp32 42dc0c7de -> b853a9a18
Deregistered metrics on Gremlin Server stop
By deregistering it makes it possible to restart Gremlin Server in the same JVM without WARN log output and with metric resets. This is mostly a fix for tests that start/stop gremlin server over and over again in the same JVM. CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b853a9a1
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b853a9a1
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b853a9a1
Branch: refs/heads/tp32
Commit: b853a9a187823aceee21aa7ba2bfb66f95323596
Parents: 42dc0c7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Mar 23 14:15:26 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Mar 23 14:18:17 2017 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../tinkerpop/gremlin/server/GremlinServer.java | 5 +++
.../gremlin/server/util/MetricManager.java | 34 +++++++++++---------
3 files changed, 25 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b853a9a1/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index a77991e..8ba4477 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* De-registered metrics on Gremlin Server shutdown.
* Added various metrics to the `GremlinGroovyScriptEngine` around script compilation and exposed them in Gremlin Server.
* Moved the `caffeine` dependency down to `gremlin-groovy` and out of `gremlin-server`.
* Improved script compilation in `GremlinGroovyScriptEngine to use better caching, log long compile times and prevent failed compilations from recompiling on future requests.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b853a9a1/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GremlinServer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GremlinServer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GremlinServer.java
index ebfc924..49b2f28 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GremlinServer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GremlinServer.java
@@ -317,6 +317,11 @@ public class GremlinServer {
// removing them all will silent them up and release the appropriate resources.
MetricManager.INSTANCE.removeAllReporters();
+ // removing all the metrics should allow Gremlin Server to clean up the metrics instance so that it can be
+ // started again in the same JVM without those metrics initialized which generates a warning and won't
+ // reset to start values
+ MetricManager.INSTANCE.removeAllMetrics();
+
logger.info("Gremlin Server - shutdown complete");
serverStopped.complete(null);
}, SERVER_THREAD_PREFIX + "stop").start();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b853a9a1/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java
index faec502..70957c9 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java
@@ -381,6 +381,10 @@ public enum MetricManager {
removeGraphiteReporter();
}
+ public synchronized void removeAllMetrics() {
+ getRegistry().removeMatching((s, metric) -> true);
+ }
+
public Counter getCounter(final String name) {
return getRegistry().counter(name);
}
@@ -429,49 +433,49 @@ public enum MetricManager {
public void registerGremlinScriptEngineMetrics(final GremlinScriptEngine engine, final String... prefix) {
if (engine instanceof GremlinGroovyScriptEngine) {
final GremlinGroovyScriptEngine gremlinGroovyScriptEngine = (GremlinGroovyScriptEngine) engine;
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "long-run-compilation-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheLongRunCompilationCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "estimated-size")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheEstimatedSize);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "average-load-penalty")),
(Gauge<Double>) gremlinGroovyScriptEngine::getClassCacheAverageLoadPenalty);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "eviction-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheEvictionCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "eviction-weight")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheEvictionWeight);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "hit-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheHitCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "hit-rate")),
(Gauge<Double>) gremlinGroovyScriptEngine::getClassCacheHitRate);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "load-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheLoadCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "load-failure-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheLoadFailureCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "load-failure-rate")),
(Gauge<Double>) gremlinGroovyScriptEngine::getClassCacheLoadFailureRate);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "load-success-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheLoadSuccessCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "miss-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheMissCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "miss-rate")),
(Gauge<Double>) gremlinGroovyScriptEngine::getClassCacheMissRate);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "request-count")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheRequestCount);
- MetricManager.INSTANCE.getRegistry().register(
+ getRegistry().register(
MetricRegistry.name(GremlinServer.class, ArrayUtils.add(prefix, "total-load-time")),
(Gauge<Long>) gremlinGroovyScriptEngine::getClassCacheTotalLoadTime);
}