TINKERPOP-2030 Cancelled keep-alive tasks are removed from queue
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/207c660a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/207c660a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/207c660a Branch: refs/heads/TINKERPOP-2030 Commit: 207c660a17a45df79c154720ba088d1852d80b4e Parents: 0426797 Author: Stephen Mallette <sp...@genoprime.com> Authored: Thu Sep 20 16:25:34 2018 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Fri Sep 21 21:39:19 2018 -0400 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 1 + .../tinkerpop/gremlin/driver/Cluster.java | 23 +++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/207c660a/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index c1e8b56..9431d98 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -31,6 +31,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima * Fixed bug in traversals that used Python lambdas with strategies in `gremlin-python`. * Modified Maven archetype for Gremlin Server to use remote traversals rather than scripts. * Added an system error code for failed plugin installs for Gremlin Server `-i` option. +* Fixed bug in keep-alive requests from over-queuing cancelled jobs. * Match numbers in `choose()` options using `NumberHelper` (match values, ignore data type). * Added support for GraphSON serialization of `Date` in Javascript. * Added synchronized `Map` to Gryo 1.0 registrations. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/207c660a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java ---------------------------------------------------------------------- diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java index 33ff574..9adaaa1 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java @@ -62,6 +62,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -703,7 +704,7 @@ public final class Cluster { this.keyPassword = keyPassword; return this; } - + /** * The file location of the private key in JKS or PKCS#12 format. */ @@ -711,7 +712,7 @@ public final class Cluster { this.keyStore = keyStore; return this; } - + /** * The password of the {@link #keyStore}, or {@code null} if it's not password-protected. */ @@ -719,7 +720,7 @@ public final class Cluster { this.keyStorePassword = keyStorePassword; return this; } - + /** * The file location for a SSL Certificate Chain to use when SSL is enabled. If * this value is not provided and SSL is enabled, the default {@link TrustManager} will be used. @@ -728,7 +729,7 @@ public final class Cluster { this.trustStore = trustStore; return this; } - + /** * The password of the {@link #trustStore}, or {@code null} if it's not password-protected. */ @@ -736,7 +737,7 @@ public final class Cluster { this.trustStorePassword = trustStorePassword; return this; } - + /** * The format of the {@link #keyStore}, either {@code JKS} or {@code PKCS12} */ @@ -744,7 +745,7 @@ public final class Cluster { this.keyStoreType = keyStoreType; return this; } - + /** * A list of SSL protocols to enable. @see <a href= * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols">JSSE @@ -754,7 +755,7 @@ public final class Cluster { this.sslEnabledProtocols = sslEnabledProtocols; return this; } - + /** * A list of cipher suites to enable. @see <a href= * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites">Cipher @@ -764,7 +765,7 @@ public final class Cluster { this.sslCipherSuites = sslCipherSuites; return this; } - + /** * If true, trust all certificates and do not perform any validation. */ @@ -1020,7 +1021,7 @@ public final class Cluster { private final AuthProperties authProps; private final Optional<SslContext> sslContextOptional; - private final ScheduledExecutorService executor; + private final ScheduledThreadPoolExecutor executor; private final int nioPoolSize; private final int workerPoolSize; @@ -1074,8 +1075,10 @@ public final class Cluster { this.factory = new Factory(builder.nioPoolSize); this.serializer = builder.serializer; - this.executor = Executors.newScheduledThreadPool(builder.workerPoolSize, + + this.executor = new ScheduledThreadPoolExecutor(builder.workerPoolSize, new BasicThreadFactory.Builder().namingPattern("gremlin-driver-worker-%d").build()); + this.executor.setRemoveOnCancelPolicy(true); } private void validateBuilder(final Builder builder) {