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 2015/03/03 23:07:54 UTC

[1/3] incubator-tinkerpop git commit: Delete unused method.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 929a2889c -> 332f81279


Delete unused method.


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

Branch: refs/heads/master
Commit: 84d99090c840655ec6c4555a64a85b29c9c182f1
Parents: 929a288
Author: Stephen Mallette <sp...@apache.org>
Authored: Tue Mar 3 15:08:20 2015 -0500
Committer: Stephen Mallette <sp...@apache.org>
Committed: Tue Mar 3 15:08:20 2015 -0500

----------------------------------------------------------------------
 .../gremlin/tinkergraph/structure/TinkerGraphTest.java        | 7 -------
 1 file changed, 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/84d99090/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index fdea748..853c9df 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -670,11 +670,4 @@ public class TinkerGraphTest {
         GraphSONWriter.build().create().writeVertices(os5, g.V(), Direction.BOTH);
         os.close();
     }
-
-    protected void deleteFile(final String path) throws IOException {
-        final File file = new File(path);
-        if (file.exists()) {
-            file.delete();
-        }
-    }
 }


[3/3] incubator-tinkerpop git commit: Merge branch 'refactorForDashboardFix' of https://github.com/rjbriody/incubator-tinkerpop

Posted by sp...@apache.org.
Merge branch 'refactorForDashboardFix' of https://github.com/rjbriody/incubator-tinkerpop


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

Branch: refs/heads/master
Commit: 332f8127989f22b37e53867e5f17b4ba3029f8b1
Parents: 84d9909 ebfd049
Author: Stephen Mallette <sp...@apache.org>
Authored: Tue Mar 3 16:56:47 2015 -0500
Committer: Stephen Mallette <sp...@apache.org>
Committed: Tue Mar 3 16:56:47 2015 -0500

----------------------------------------------------------------------
 .../server/op/AbstractEvalOpProcessor.java      | 44 +++++-----
 .../server/op/session/SessionOpProcessor.java   | 53 +++++++++++-
 .../gremlin/server/op/session/SessionOps.java   | 85 --------------------
 .../server/op/standard/StandardOpProcessor.java | 25 +++++-
 .../gremlin/server/op/standard/StandardOps.java | 53 ------------
 5 files changed, 100 insertions(+), 160 deletions(-)
----------------------------------------------------------------------



[2/3] incubator-tinkerpop git commit: Refactor OpProcessor to enable simple overrides.

Posted by sp...@apache.org.
Refactor OpProcessor to enable simple overrides.


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

Branch: refs/heads/master
Commit: ebfd0491b4e700361ba459d6c7ca1fb7b533adc4
Parents: 929a288
Author: rjbriody <bo...@datastax.com>
Authored: Tue Mar 3 16:10:16 2015 -0500
Committer: rjbriody <bo...@datastax.com>
Committed: Tue Mar 3 16:10:16 2015 -0500

----------------------------------------------------------------------
 .../server/op/AbstractEvalOpProcessor.java      | 44 +++++-----
 .../server/op/session/SessionOpProcessor.java   | 53 +++++++++++-
 .../gremlin/server/op/session/SessionOps.java   | 85 --------------------
 .../server/op/standard/StandardOpProcessor.java | 25 +++++-
 .../gremlin/server/op/standard/StandardOps.java | 53 ------------
 5 files changed, 100 insertions(+), 160 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebfd0491/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
index 3131593..9258b35 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
@@ -125,7 +125,7 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
      * @param bindingsSupplier A function that returns the {@link Bindings} to provide to the
      *                         {@link GremlinExecutor#eval} method.
      */
-    public static void evalOp(final Context context, final Supplier<GremlinExecutor> gremlinExecutorSupplier,
+    protected void evalOpInternal(final Context context, final Supplier<GremlinExecutor> gremlinExecutorSupplier,
                               final Supplier<Bindings> bindingsSupplier) throws OpProcessorException {
         final Timer.Context timerContext = evalOpTimer.time();
         final ChannelHandlerContext ctx = context.getChannelHandlerContext();
@@ -158,25 +158,7 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
 
             stopWatch.start();
 
-            List<Object> aggregate = new ArrayList<>(resultIterationBatchSize);
-            while (itty.hasNext()) {
-                aggregate.add(itty.next());
-
-                // send back a page of results if batch size is met or if it's the end of the results being
-                // iterated
-                if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
-                    ctx.writeAndFlush(ResponseMessage.build(msg)
-                            .code(ResponseStatusCode.SUCCESS)
-                            .result(aggregate).create());
-                    aggregate = new ArrayList<>(resultIterationBatchSize);
-                }
-
-                stopWatch.split();
-                if (stopWatch.getSplitTime() > settings.serializedResponseTimeout)
-                    throw new RuntimeException(new TimeoutException("Serialization of the entire response exceeded the serializeResponseTimeout setting"));
-
-                stopWatch.unsplit();
-            }
+            handleIterator(ctx, msg, settings, itty, resultIterationBatchSize, stopWatch);
 
             stopWatch.stop();
         }, executor);
@@ -194,4 +176,26 @@ public abstract class AbstractEvalOpProcessor implements OpProcessor {
             return null;
         }, executor);
     }
+
+    protected void handleIterator(final ChannelHandlerContext ctx, final RequestMessage msg, final Settings settings, final Iterator itty, final int resultIterationBatchSize, final StopWatch stopWatch) {
+        List<Object> aggregate = new ArrayList<>(resultIterationBatchSize);
+        while (itty.hasNext()) {
+            aggregate.add(itty.next());
+
+            // send back a page of results if batch size is met or if it's the end of the results being
+            // iterated
+            if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
+                ctx.writeAndFlush(ResponseMessage.build(msg)
+                        .code(ResponseStatusCode.SUCCESS)
+                        .result(aggregate).create());
+                aggregate = new ArrayList<>(resultIterationBatchSize);
+            }
+
+            stopWatch.split();
+            if (stopWatch.getSplitTime() > settings.serializedResponseTimeout)
+                throw new RuntimeException(new TimeoutException("Serialization of the entire response exceeded the serializeResponseTimeout setting"));
+
+            stopWatch.unsplit();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebfd0491/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOpProcessor.java
index 8c5dc1e..33617df 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOpProcessor.java
@@ -23,13 +23,23 @@ import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.server.Context;
+import org.apache.tinkerpop.gremlin.server.GremlinServer;
 import org.apache.tinkerpop.gremlin.server.Settings;
+import org.apache.tinkerpop.gremlin.server.handler.StateKey;
 import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor;
 import org.apache.tinkerpop.gremlin.server.op.OpProcessorException;
+import org.apache.tinkerpop.gremlin.server.util.MetricManager;
 import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
+import javax.script.Bindings;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static com.codahale.metrics.MetricRegistry.name;
 
 /**
  * Simple {@link org.apache.tinkerpop.gremlin.server.OpProcessor} implementation that handles {@code ScriptEngine}
@@ -38,9 +48,19 @@ import java.util.Optional;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class SessionOpProcessor extends AbstractEvalOpProcessor {
+    private static final Logger logger = LoggerFactory.getLogger(SessionOpProcessor.class);
     public static final String OP_PROCESSOR_NAME = "session";
 
     /**
+     * Script engines are evaluated in a per session context where imports/scripts are isolated per session.
+     */
+    private static ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<>();
+
+    static {
+        MetricManager.INSTANCE.getGuage(sessions::size, name(GremlinServer.class, "sessions"));
+    }
+
+    /**
      * Configuration setting for how long a session will be available before it timesout.
      */
     public static final String CONFIG_SESSION_TIMEOUT = "sessionTimeout";
@@ -66,7 +86,7 @@ public class SessionOpProcessor extends AbstractEvalOpProcessor {
 
     @Override
     public ThrowingConsumer<Context> getEvalOp() {
-        return SessionOps::evalOp;
+        return this::evalOp;
     }
 
     @Override
@@ -80,4 +100,35 @@ public class SessionOpProcessor extends AbstractEvalOpProcessor {
 
         return Optional.empty();
     }
+
+    private void evalOp(final Context context) throws OpProcessorException {
+        final RequestMessage msg = context.getRequestMessage();
+        final Session session = getSession(context, msg);
+
+        // place the session on the channel context so that it can be used during serialization.  in this way
+        // the serialization can occur on the same thread used to execute the gremlin within the session.  this
+        // is important given the threadlocal nature of Graph implementation transactions.
+        context.getChannelHandlerContext().channel().attr(StateKey.SESSION).set(session);
+
+        evalOpInternal(context, session::getGremlinExecutor, () -> {
+            final Bindings bindings = session.getBindings();
+
+            // parameter bindings override session bindings if present
+            Optional.ofNullable((Map<String, Object>) msg.getArgs().get(Tokens.ARGS_BINDINGS)).ifPresent(bindings::putAll);
+
+            return bindings;
+        });
+    }
+
+
+    private static Session getSession(final Context context, final RequestMessage msg) {
+        final String sessionId = (String) msg.getArgs().get(Tokens.ARGS_SESSION);
+
+        logger.debug("In-session request {} for eval for session {} in thread {}",
+                msg.getRequestId(), sessionId, Thread.currentThread().getName());
+
+        final Session session = sessions.computeIfAbsent(sessionId, k -> new Session(k, context, sessions));
+        session.touch();
+        return session;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebfd0491/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOps.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOps.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOps.java
deleted file mode 100644
index fe54d21..0000000
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/SessionOps.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.server.op.session;
-
-import org.apache.tinkerpop.gremlin.driver.Tokens;
-import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
-import org.apache.tinkerpop.gremlin.server.Context;
-import org.apache.tinkerpop.gremlin.server.GremlinServer;
-import org.apache.tinkerpop.gremlin.server.handler.StateKey;
-import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor;
-import org.apache.tinkerpop.gremlin.server.op.OpProcessorException;
-import org.apache.tinkerpop.gremlin.server.util.MetricManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.script.Bindings;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static com.codahale.metrics.MetricRegistry.name;
-
-/**
- * Operations to be used by the {@link SessionOpProcessor}.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public final class SessionOps {
-    private static final Logger logger = LoggerFactory.getLogger(SessionOps.class);
-
-    /**
-     * Script engines are evaluated in a per session context where imports/scripts are isolated per session.
-     */
-    private static ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<>();
-
-    static {
-        MetricManager.INSTANCE.getGuage(sessions::size, name(GremlinServer.class, "sessions"));
-    }
-
-    public static void evalOp(final Context context) throws OpProcessorException {
-        final RequestMessage msg = context.getRequestMessage();
-        final Session session = getSession(context, msg);
-
-        // place the session on the channel context so that it can be used during serialization.  in this way
-        // the serialization can occur on the same thread used to execute the gremlin within the session.  this
-        // is important given the threadlocal nature of Graph implementation transactions.
-        context.getChannelHandlerContext().channel().attr(StateKey.SESSION).set(session);
-
-        AbstractEvalOpProcessor.evalOp(context, session::getGremlinExecutor, () -> {
-            final Bindings bindings = session.getBindings();
-
-            // parameter bindings override session bindings if present
-            Optional.ofNullable((Map<String, Object>) msg.getArgs().get(Tokens.ARGS_BINDINGS)).ifPresent(bindings::putAll);
-
-            return bindings;
-        });
-    }
-
-    private static Session getSession(final Context context, final RequestMessage msg) {
-        final String sessionId = (String) msg.getArgs().get(Tokens.ARGS_SESSION);
-
-        logger.debug("In-session request {} for eval for session {} in thread {}",
-                msg.getRequestId(), sessionId, Thread.currentThread().getName());
-
-        final Session session = sessions.computeIfAbsent(sessionId, k -> new Session(k, context, sessions));
-        session.touch();
-        return session;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebfd0491/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOpProcessor.java
index 4cadbc6..efe1bed 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOpProcessor.java
@@ -18,10 +18,20 @@
  */
 package org.apache.tinkerpop.gremlin.server.op.standard;
 
+import org.apache.tinkerpop.gremlin.driver.Tokens;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.server.Context;
 import org.apache.tinkerpop.gremlin.server.OpProcessor;
 import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor;
+import org.apache.tinkerpop.gremlin.server.op.OpProcessorException;
 import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.script.Bindings;
+import javax.script.SimpleBindings;
+import java.util.Map;
+import java.util.Optional;
 
 /**
  * Simple {@link OpProcessor} implementation that handles {@code ScriptEngine} script evaluation outside the context
@@ -30,6 +40,7 @@ import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class StandardOpProcessor extends AbstractEvalOpProcessor {
+    private static final Logger logger = LoggerFactory.getLogger(StandardOpProcessor.class);
     public static final String OP_PROCESSOR_NAME = "";
 
     @Override
@@ -39,6 +50,18 @@ public class StandardOpProcessor extends AbstractEvalOpProcessor {
 
     @Override
     public ThrowingConsumer<Context> getEvalOp() {
-        return StandardOps::evalOp;
+        return this::evalOp;
+    }
+
+    private void evalOp(final Context context) throws OpProcessorException {
+        final RequestMessage msg = context.getRequestMessage();
+
+        logger.debug("Sessionless request {} for eval in thread {}", msg.getRequestId(), Thread.currentThread().getName());
+
+        super.evalOpInternal(context, context::getGremlinExecutor, () -> {
+            final Bindings bindings = new SimpleBindings();
+            Optional.ofNullable((Map<String, Object>) msg.getArgs().get(Tokens.ARGS_BINDINGS)).ifPresent(bindings::putAll);
+            return bindings;
+        });
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebfd0491/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOps.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOps.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOps.java
deleted file mode 100644
index 10803e3..0000000
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/standard/StandardOps.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.server.op.standard;
-
-import org.apache.tinkerpop.gremlin.driver.Tokens;
-import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
-import org.apache.tinkerpop.gremlin.server.Context;
-import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor;
-import org.apache.tinkerpop.gremlin.server.op.OpProcessorException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.script.Bindings;
-import javax.script.SimpleBindings;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * Operations to be used by the {@link StandardOpProcessor}.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-final class StandardOps {
-    private static final Logger logger = LoggerFactory.getLogger(StandardOps.class);
-
-    public static void evalOp(final Context context) throws OpProcessorException {
-        final RequestMessage msg = context.getRequestMessage();
-
-        logger.debug("Sessionless request {} for eval in thread {}", msg.getRequestId(), Thread.currentThread().getName());
-
-        AbstractEvalOpProcessor.evalOp(context, context::getGremlinExecutor, () -> {
-            final Bindings bindings = new SimpleBindings();
-            Optional.ofNullable((Map<String, Object>) msg.getArgs().get(Tokens.ARGS_BINDINGS)).ifPresent(bindings::putAll);
-            return bindings;
-        });
-    }
-}