Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-999 4c89e1594 -> 67cd59274 (forced update)


TINKERPOP-999 Removed generics from ServerGremlinExecutor


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/67cd5927
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/67cd5927
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/67cd5927

Branch: refs/heads/TINKERPOP-999
Commit: 67cd592742cc84cefdb1368a374119e7d4290e1e
Parents: 268333b
Author: Stephen Mallette <[email protected]>
Authored: Tue Jun 20 15:14:44 2017 -0400
Committer: Stephen Mallette <[email protected]>
Committed: Tue Jun 20 22:02:22 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/server/AbstractChannelizer.java     |  4 +-
 .../tinkerpop/gremlin/server/Channelizer.java   |  3 +-
 .../tinkerpop/gremlin/server/GremlinServer.java | 42 ++----------
 .../gremlin/server/channel/HttpChannelizer.java |  4 +-
 .../gremlin/server/channel/NioChannelizer.java  |  3 +-
 .../server/channel/WebSocketChannelizer.java    |  3 +-
 .../server/util/ServerGremlinExecutor.java      | 70 ++++++--------------
 8 files changed, 32 insertions(+), 98 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 58a3a62..ba591c2 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -32,6 +32,7 @@ TinkerPop 3.3.0 (Release Date: NOT OFFICIALLY RELEASED YET)
 * Added "attachment requisite" `VertexProperty.element()` and 
`Property.element()` data in GraphSON serialization.
 * GraphSON 3.0 is now the default serialization format in TinkerGraph and 
Gremlin Server.
 * Established the GraphSON 3.0 format.
+* Changed `ServerGremlinExecutor` to not use generics since there really is no 
flexibility in the kind of `ScheduledExecutorService` that will be used.
 * Removed previously deprecated `OpSelectorHandler.errorMeter` and 
`AbstractEvalOpProcessor.errorMeter` fields.
 * Removed previously deprecated `AbstractEvalOpProcessor.validBindingName` 
field.
 * Removed previously deprecated 
`SimpleAuthenticator.CONFIG_CREDENTIALS_LOCATION` field.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index bcaa2e4..086074a 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.server;
 
-import io.netty.channel.EventLoopGroup;
 import io.netty.handler.ssl.SslContext;
 import io.netty.handler.ssl.SslContextBuilder;
 import io.netty.handler.ssl.SslProvider;
@@ -53,7 +52,6 @@ import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.stream.Stream;
-import java.util.Iterator;
 
 /**
  * A base implementation for the {@code Channelizer} which does a basic 
configuration of the pipeline, one that
@@ -110,7 +108,7 @@ public abstract class AbstractChannelizer extends 
ChannelInitializer<SocketChann
     }
 
     @Override
-    public void init(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor) {
+    public void init(final ServerGremlinExecutor serverGremlinExecutor) {
         settings = serverGremlinExecutor.getSettings();
         gremlinExecutor = serverGremlinExecutor.getGremlinExecutor();
         graphManager = serverGremlinExecutor.getGraphManager();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Channelizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Channelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Channelizer.java
index fd7821e..31c65c1 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Channelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Channelizer.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.gremlin.server;
 
 import io.netty.channel.ChannelHandler;
-import io.netty.channel.EventLoopGroup;
 import org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor;
 
 /**
@@ -35,5 +34,5 @@ public interface Channelizer extends ChannelHandler {
     /**
      * This method is called just after the {@code Channelizer} is initialized.
      */
-    public void init(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor);
+    public void init(final ServerGremlinExecutor serverGremlinExecutor);
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/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 50427fd..c9b9b27 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
@@ -69,12 +69,12 @@ public class GremlinServer {
     private Channel ch;
 
     private CompletableFuture<Void> serverStopped = null;
-    private CompletableFuture<ServerGremlinExecutor<EventLoopGroup>> 
serverStarted = null;
+    private CompletableFuture<ServerGremlinExecutor> serverStarted = null;
 
     private final EventLoopGroup bossGroup;
     private final EventLoopGroup workerGroup;
     private final ExecutorService gremlinExecutorService;
-    private final ServerGremlinExecutor<EventLoopGroup> serverGremlinExecutor;
+    private final ServerGremlinExecutor serverGremlinExecutor;
     private final boolean isEpollEnabled;
 
     /**
@@ -108,7 +108,7 @@ public class GremlinServer {
             workerGroup = new NioEventLoopGroup(settings.threadPoolWorker, 
threadFactoryWorker);
         }
 
-        serverGremlinExecutor = new ServerGremlinExecutor<>(settings, null, 
workerGroup, EventLoopGroup.class);
+        serverGremlinExecutor = new ServerGremlinExecutor(settings, null, 
workerGroup);
         gremlinExecutorService = 
serverGremlinExecutor.getGremlinExecutorService();
 
         // initialize the OpLoader with configurations being passed to each 
OpProcessor implementation loaded
@@ -116,46 +116,16 @@ public class GremlinServer {
     }
 
     /**
-     * Construct a Gremlin Server instance from the {@link 
ServerGremlinExecutor} which internally carries some
-     * pre-constructed objects used by the server as well as the {@link 
Settings} object itself.  This constructor
-     * is useful when Gremlin Server is being used in an embedded style and 
there is a need to share thread pools
-     * with the hosting application.
-     *
-     * @deprecated As of release 3.1.1-incubating, not replaced.
-     * @see <a 
href="https://issues.apache.org/jira/browse/TINKERPOP-912";>TINKERPOP-912</a>
-     */
-    @Deprecated
-    public GremlinServer(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor) {
-        this.serverGremlinExecutor = serverGremlinExecutor;
-        this.settings = serverGremlinExecutor.getSettings();
-        this.isEpollEnabled = settings.useEpollEventLoop && 
SystemUtils.IS_OS_LINUX;
-        if(settings.useEpollEventLoop && !SystemUtils.IS_OS_LINUX){
-            logger.warn("cannot use epoll in non-linux env, falling back to 
NIO");
-        }
-
-        Runtime.getRuntime().addShutdownHook(new Thread(() -> 
this.stop().join(), SERVER_THREAD_PREFIX + "shutdown"));
-
-        final ThreadFactory threadFactoryBoss = 
ThreadFactoryUtil.create("boss-%d");
-        if(isEpollEnabled) {
-            bossGroup = new EpollEventLoopGroup(settings.threadPoolBoss, 
threadFactoryBoss);
-        } else{
-            bossGroup = new NioEventLoopGroup(settings.threadPoolBoss, 
threadFactoryBoss);
-        }
-        workerGroup = serverGremlinExecutor.getScheduledExecutorService();
-        gremlinExecutorService = 
serverGremlinExecutor.getGremlinExecutorService();
-    }
-
-    /**
      * Start Gremlin Server with {@link Settings} provided to the constructor.
      */
-    public synchronized 
CompletableFuture<ServerGremlinExecutor<EventLoopGroup>> start() throws 
Exception {
+    public synchronized CompletableFuture<ServerGremlinExecutor> start() 
throws Exception {
         if (serverStarted != null) {
             // server already started - don't get it rolling again
             return serverStarted;
         }
 
         serverStarted = new CompletableFuture<>();
-        final CompletableFuture<ServerGremlinExecutor<EventLoopGroup>> 
serverReadyFuture = serverStarted;
+        final CompletableFuture<ServerGremlinExecutor> serverReadyFuture = 
serverStarted;
         try {
             final ServerBootstrap b = new ServerBootstrap();
 
@@ -330,7 +300,7 @@ public class GremlinServer {
         return serverStopped;
     }
 
-    public ServerGremlinExecutor<EventLoopGroup> getServerGremlinExecutor() {
+    public ServerGremlinExecutor getServerGremlinExecutor() {
         return serverGremlinExecutor;
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.java
index a34da25..ef96c28 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.java
@@ -18,12 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.server.channel;
 
-import io.netty.channel.EventLoopGroup;
 import org.apache.tinkerpop.gremlin.server.AbstractChannelizer;
 import org.apache.tinkerpop.gremlin.server.Channelizer;
 import org.apache.tinkerpop.gremlin.server.Settings;
 import org.apache.tinkerpop.gremlin.server.auth.AllowAllAuthenticator;
-import org.apache.tinkerpop.gremlin.server.auth.Authenticator;
 import 
org.apache.tinkerpop.gremlin.server.handler.AbstractAuthenticationHandler;
 import 
org.apache.tinkerpop.gremlin.server.handler.HttpBasicAuthenticationHandler;
 import org.apache.tinkerpop.gremlin.server.handler.HttpGremlinEndpointHandler;
@@ -48,7 +46,7 @@ public class HttpChannelizer extends AbstractChannelizer {
     private AbstractAuthenticationHandler authenticationHandler;
 
     @Override
-    public void init(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor) {
+    public void init(final ServerGremlinExecutor serverGremlinExecutor) {
         super.init(serverGremlinExecutor);
         httpGremlinEndpointHandler = new 
HttpGremlinEndpointHandler(serializers, gremlinExecutor, graphManager, 
settings);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
index 4baad23..53d8332 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.server.channel;
 
-import io.netty.channel.EventLoopGroup;
 import org.apache.tinkerpop.gremlin.server.AbstractChannelizer;
 import org.apache.tinkerpop.gremlin.server.auth.AllowAllAuthenticator;
 import org.apache.tinkerpop.gremlin.server.handler.GremlinResponseFrameEncoder;
@@ -46,7 +45,7 @@ public class NioChannelizer extends AbstractChannelizer {
     private NioGremlinResponseFrameEncoder nioGremlinResponseFrameEncoder;
 
     @Override
-    public void init(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor) {
+    public void init(final ServerGremlinExecutor serverGremlinExecutor) {
         super.init(serverGremlinExecutor);
 
         // configure authentication - null means don't bother to add 
authentication to the pipeline

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
index 2fb52fe..8c4089d 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.server.channel;
 
-import io.netty.channel.EventLoopGroup;
 import org.apache.tinkerpop.gremlin.server.AbstractChannelizer;
 import org.apache.tinkerpop.gremlin.server.auth.AllowAllAuthenticator;
 import 
org.apache.tinkerpop.gremlin.server.handler.AbstractAuthenticationHandler;
@@ -57,7 +56,7 @@ public class WebSocketChannelizer extends AbstractChannelizer 
{
     private AbstractAuthenticationHandler authenticationHandler;
 
     @Override
-    public void init(final ServerGremlinExecutor<EventLoopGroup> 
serverGremlinExecutor) {
+    public void init(final ServerGremlinExecutor serverGremlinExecutor) {
         super.init(serverGremlinExecutor);
 
         gremlinResponseFrameEncoder = new GremlinResponseFrameEncoder();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67cd5927/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
index fab0716..9bd58a0 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
@@ -50,71 +50,44 @@ import java.util.stream.Collectors;
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
+public class ServerGremlinExecutor {
     private static final Logger logger = 
LoggerFactory.getLogger(ServerGremlinExecutor.class);
 
     private final GraphManager graphManager;
     private final Settings settings;
     private final List<LifeCycleHook> hooks;
 
-    private final T scheduledExecutorService;
+    private final ScheduledExecutorService scheduledExecutorService;
     private final ExecutorService gremlinExecutorService;
     private final GremlinExecutor gremlinExecutor;
 
     private final Map<String,Object> hostOptions = new ConcurrentHashMap<>();
 
     /**
-     * Create a new object from {@link Settings} where thread pools are 
internally created. Note that the
-     * {@code scheduleExecutorServiceClass} will be created via
-     * {@link Executors#newScheduledThreadPool(int, ThreadFactory)}.
-     */
-    public ServerGremlinExecutor(final Settings settings, final Class<T> 
scheduleExecutorServiceClass) {
-        this(settings, null, null, scheduleExecutorServiceClass);
-    }
-
-    /**
-     * Create a new object from {@link Settings} where thread pools are 
externally assigned. Note that if the
-     * {@code scheduleExecutorServiceClass} is set to {@code null} it will be 
created via
-     * {@link Executors#newScheduledThreadPool(int, ThreadFactory)}.  If 
either of the {@link ExecutorService}
-     * instances are supplied, the {@link Settings#gremlinPool} value will be 
ignored for the pool size. The
-     * {@link GraphManager} will be constructed from the {@link Settings}.
-     */
-    public ServerGremlinExecutor(final Settings settings, final 
ExecutorService gremlinExecutorService,
-                                 final T scheduledExecutorService, final 
Class<T> scheduleExecutorServiceClass) {
-        this(settings,
-             gremlinExecutorService,
-             scheduledExecutorService,
-             scheduleExecutorServiceClass,
-             null);
-    }
-    /**
      * Create a new object from {@link Settings} where thread pools are 
externally assigned. Note that if the
      * {@code scheduleExecutorServiceClass} is set to {@code null} it will be 
created via
      * {@link Executors#newScheduledThreadPool(int, ThreadFactory)}.  If 
either of the {@link ExecutorService}
      * instances are supplied, the {@link Settings#gremlinPool} value will be 
ignored for the pool size.
      */
     public ServerGremlinExecutor(final Settings settings, final 
ExecutorService gremlinExecutorService,
-                                 final T scheduledExecutorService, final 
Class<T> scheduleExecutorServiceClass,
-                                 GraphManager graphManager) {
+                                 final ScheduledExecutorService 
scheduledExecutorService) {
         this.settings = settings;
 
-        if (null == graphManager) {
-            try {
-                final Class<?> clazz = Class.forName(settings.graphManager);
-                final Constructor c = clazz.getConstructor(Settings.class);
-                graphManager = (GraphManager) c.newInstance(settings);
-            } catch (ClassNotFoundException e) {
-                logger.error("Could not find GraphManager implementation "
-                             + "defined by the 'graphManager' setting as: {}",
-                             settings.graphManager);
-                throw new RuntimeException(e);
-            } catch (Exception e) {
-                logger.error("Could not invoke constructor on class {} 
(defined by "
-                             + "the 'graphManager' setting) with one argument 
of "
-                             + "class Settings",
-                             settings.graphManager);
-                throw new RuntimeException(e);
-            }
+        try {
+            final Class<?> clazz = Class.forName(settings.graphManager);
+            final Constructor c = clazz.getConstructor(Settings.class);
+            graphManager = (GraphManager) c.newInstance(settings);
+        } catch (ClassNotFoundException e) {
+            logger.error("Could not find GraphManager implementation "
+                         + "defined by the 'graphManager' setting as: {}",
+                         settings.graphManager);
+            throw new RuntimeException(e);
+        } catch (Exception e) {
+            logger.error("Could not invoke constructor on class {} (defined by 
"
+                         + "the 'graphManager' setting) with one argument of "
+                         + "class Settings",
+                         settings.graphManager);
+            throw new RuntimeException(e);
         }
 
         if (null == gremlinExecutorService) {
@@ -126,14 +99,11 @@ public class ServerGremlinExecutor<T extends 
ScheduledExecutorService> {
 
         if (null == scheduledExecutorService) {
             final ThreadFactory threadFactoryGremlin = 
ThreadFactoryUtil.create("worker-%d");
-            this.scheduledExecutorService = scheduleExecutorServiceClass.cast(
-                    
Executors.newScheduledThreadPool(settings.threadPoolWorker, 
threadFactoryGremlin));
+            this.scheduledExecutorService = 
Executors.newScheduledThreadPool(settings.threadPoolWorker, 
threadFactoryGremlin);
         } else {
             this.scheduledExecutorService = scheduledExecutorService;
         }
 
-        this.graphManager = graphManager;
-
         logger.info("Initialized Gremlin thread pool.  Threads in pool named 
with pattern gremlin-*");
 
         final GremlinExecutor.Builder gremlinExecutorBuilder = 
GremlinExecutor.build()
@@ -215,7 +185,7 @@ public class ServerGremlinExecutor<T extends 
ScheduledExecutorService> {
         hostOptions.clear();
     }
 
-    public T getScheduledExecutorService() {
+    public ScheduledExecutorService getScheduledExecutorService() {
         return scheduledExecutorService;
     }
 

Reply via email to