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;
- });
- }
-}