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 2016/10/07 22:31:44 UTC

[01/16] tinkerpop git commit: added close method to gremlin python sideeffects

Repository: tinkerpop
Updated Branches:
  refs/heads/master 9b1338344 -> fd3c87d1d


added close method to gremlin python sideeffects


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

Branch: refs/heads/master
Commit: a08fa266d7607344d82855d19e46ab7567011811
Parents: 69056b2
Author: davebshow <da...@apache.org>
Authored: Mon Sep 26 13:25:17 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:33 2016 -0400

----------------------------------------------------------------------
 .../driver/driver_remote_connection.py          | 22 +++++++++++++++++++-
 .../gremlin_python/driver/remote_connection.py  |  6 +++++-
 .../driver/test_driver_remote_connection.py     |  8 ++++++-
 3 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a08fa266/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
index cac5e73..e47c8e6 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
@@ -52,7 +52,8 @@ class DriverRemoteConnection(RemoteConnection):
         traversers = self._loop.run_sync(lambda: self.submit_traversal_bytecode(request_id, bytecode))
         side_effect_keys = lambda: self._loop.run_sync(lambda: self.submit_sideEffect_keys(request_id))
         side_effect_value = lambda key: self._loop.run_sync(lambda: self.submit_sideEffect_value(request_id, key))
-        return RemoteTraversal(iter(traversers), RemoteTraversalSideEffects(side_effect_keys, side_effect_value))
+        side_effect_close = lambda: self._loop.run_sync(lambda: self.submit_sideEffect_close(request_id))
+        return RemoteTraversal(iter(traversers), RemoteTraversalSideEffects(side_effect_keys, side_effect_value, side_effect_close))
 
     @gen.coroutine
     def submit_traversal_bytecode(self, request_id, bytecode):
@@ -115,6 +116,25 @@ class DriverRemoteConnection(RemoteConnection):
         raise gen.Return(value)
 
     @gen.coroutine
+    def submit_sideEffect_close(self, request_id):
+        message = {
+            "requestId": {
+                "@type": "g:UUID",
+                "@value": str(uuid.uuid4())
+            },
+            "op": "close",
+            "processor": "traversal",
+            "args": {
+                "sideEffect": {
+                    "@type": "g:UUID",
+                    "@value": request_id
+                }
+            }
+        }
+        result = yield self._execute_message(message)
+        raise gen.Return(result)
+
+    @gen.coroutine
     def _execute_message(self, send_message):
         send_message = b"".join([b"\x21",
                                  b"application/vnd.gremlin-v2.0+json",

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a08fa266/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
index 0b84a26..3e7293f 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
@@ -57,9 +57,10 @@ class RemoteTraversal(Traversal):
 
 
 class RemoteTraversalSideEffects(TraversalSideEffects):
-    def __init__(self, keys_lambda, value_lambda):
+    def __init__(self, keys_lambda, value_lambda, close_lambda):
         self.keys_lambda = keys_lambda
         self.value_lambda = value_lambda
+        self.close_lambda = close_lambda
 
     def keys(self):
         return self.keys_lambda()
@@ -67,6 +68,9 @@ class RemoteTraversalSideEffects(TraversalSideEffects):
     def get(self, key):
         return self.value_lambda(key)
 
+    def close(self):
+        return self.close_lambda()
+
 
 class RemoteStrategy(TraversalStrategy):
     def __init__(self, remote_connection):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a08fa266/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
index a4561e9..c557bbe 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
@@ -22,6 +22,8 @@ __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
 import unittest
 from unittest import TestCase
 
+import pytest
+
 from gremlin_python import statics
 from gremlin_python.statics import long
 from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
@@ -136,7 +138,7 @@ class TestDriverRemoteConnection(TestCase):
         assert "ripple" in n.keys()
         assert 3 == n["lop"]
         assert 1 == n["ripple"]
-        #
+
         t = g.withSideEffect('m', 32).V().map(lambda: "x: x.sideEffects('m')")
         results = t.toSet()
         assert 1 == len(results)
@@ -148,6 +150,10 @@ class TestDriverRemoteConnection(TestCase):
             raise Exception("Accessing a non-existent key should throw an error")
         except KeyError:
             pass
+        result = t.side_effects.close()
+        assert not result
+        with pytest.raises(KeyError):
+            x = t.side_effects['m']
         connection.close()
 
 


[07/16] tinkerpop git commit: got rid of wildcard set by intellij

Posted by sp...@apache.org.
got rid of wildcard set by intellij


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

Branch: refs/heads/master
Commit: d876466c8081f1185a9b06791fbb184a158927f2
Parents: ad97af2
Author: davebshow <da...@gmail.com>
Authored: Thu Sep 29 12:04:03 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/server/GremlinServerIntegrateTest.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d876466c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 7d6c0c9..a1d019b 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -65,7 +65,11 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.nio.channels.ClosedChannelException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;


[10/16] tinkerpop git commit: added integration tests for DriverRemoteTraversalSideEffects methods

Posted by sp...@apache.org.
added integration tests for DriverRemoteTraversalSideEffects methods


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

Branch: refs/heads/master
Commit: 7d6641f0d1f15018b8022600ad41c1d4c6934813
Parents: c4e6f87
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 15:01:59 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../server/GremlinServerIntegrateTest.java      | 79 ++++++++++++++++++--
 1 file changed, 73 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7d6641f0/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index e6e0021..61bf994 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -38,6 +38,7 @@ 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.driver.remote.DriverRemoteConnection;
+import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.driver.ser.Serializers;
 import org.apache.tinkerpop.gremlin.driver.simple.NioClient;
 import org.apache.tinkerpop.gremlin.driver.simple.SimpleClient;
@@ -55,6 +56,7 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.server.channel.NioChannelizer;
 import org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor;
+import org.apache.tinkerpop.gremlin.structure.util.Host;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.apache.tinkerpop.gremlin.util.Log4jRecordingAppender;
@@ -64,6 +66,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.lang.reflect.Field;
 import java.nio.channels.ClosedChannelException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -71,6 +74,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -104,7 +108,6 @@ import static org.junit.Assert.assertEquals;
 public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegrationTest {
 
     private Log4jRecordingAppender recordingAppender = null;
-
     private final Supplier<Graph> graphGetter = () -> server.getServerGremlinExecutor().getGraphManager().getGraphs().get("graph");
     private final Configuration conf = new BaseConfiguration() {{
         setProperty(Graph.GRAPH, RemoteGraph.class.getName());
@@ -833,16 +836,80 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    public void shouldCloseLocalSideEffects() throws Exception {
+    public void shouldGetSideEffectKeysUsingWithRemote() throws Exception {
         final Graph graph = EmptyGraph.instance();
         final GraphTraversalSource g = graph.traversal().withRemote(conf);
         g.addV("person").property("age", 20).iterate();
         g.addV("person").property("age", 10).iterate();
         final GraphTraversal traversal = g.V().aggregate("a").aggregate("b");
         traversal.iterate();
-        final List sideEffects = traversal.asAdmin().getSideEffects().get("a");
-        assertFalse(sideEffects.isEmpty());
-        traversal.asAdmin().getSideEffects().close();
-        assertNull(traversal.asAdmin().getSideEffects().get("b"));
+        final DriverRemoteTraversalSideEffects se = (DriverRemoteTraversalSideEffects) traversal.asAdmin().getSideEffects();
+
+        // Get keys
+        final Set<String> sideEffectKeys = se.keys();
+        assertEquals(2, sideEffectKeys.size());
+
+        // Get side effects
+        final List aSideEffects = se.get("a");
+        assertThat(aSideEffects.isEmpty(), is(false));
+        final List bSideEffects = se.get("b");
+        assertThat(bSideEffects.isEmpty(), is(false));
+
+        // Should get local keys/side effects after close
+        se.close();
+
+        final Set<String> localSideEffectKeys = se.keys();
+        assertEquals(2, localSideEffectKeys.size());
+
+        final List localASideEffects = se.get("a");
+        assertThat(localASideEffects.isEmpty(), is(false));
+
+        final List localBSideEffects = se.get("b");
+        assertThat(localBSideEffects.isEmpty(), is(false));
+    }
+
+    @Test
+    public void shouldCloseSideEffectsUsingWithRemote() throws Exception {
+        final Graph graph = EmptyGraph.instance();
+        final GraphTraversalSource g = graph.traversal().withRemote(conf);
+        g.addV("person").property("age", 20).iterate();
+        g.addV("person").property("age", 10).iterate();
+        final GraphTraversal traversal = g.V().aggregate("a").aggregate("b");
+        traversal.iterate();
+        final DriverRemoteTraversalSideEffects se = (DriverRemoteTraversalSideEffects) traversal.asAdmin().getSideEffects();
+        final List sideEffects = se.get("a");
+        assertThat(sideEffects.isEmpty(), is(false));
+        se.close();
+
+        // Can't get new side effects after close
+        assertNull(se.get("b"));
+
+        // Earlier keys should be cached locally
+        final Set<String> localSideEffectKeys = se.keys();
+        assertEquals(1, localSideEffectKeys.size());
+        final List localSideEffects = se.get("a");
+        assertThat(localSideEffects.isEmpty(), is(false));
+
+        // Try to get side effect from server
+        final Cluster cluster = Cluster.build("localhost").create();
+        final Client client = cluster.connect();
+        Field field = DriverRemoteTraversalSideEffects.class.getDeclaredField("serverSideEffect");
+        field.setAccessible(true);
+        UUID serverSideEffectId = (UUID) field.get(se);
+        final RequestMessage msg = RequestMessage.build(Tokens.OPS_GATHER)
+                .addArg(Tokens.ARGS_SIDE_EFFECT, serverSideEffectId)
+                .addArg(Tokens.ARGS_SIDE_EFFECT_KEY, "b")
+                .processor("traversal").create();
+        boolean error;
+        try {
+            client.submitAsync(msg).get();
+            error = false;
+        } catch (Exception ex) {
+            error = true;
+        }
+        assertThat(error, is(true));
     }
 }
+
+
+


[13/16] tinkerpop git commit: closed conn in tests, this should be done with pytest fixtures, but until then, manually

Posted by sp...@apache.org.
closed conn in tests, this should be done with pytest fixtures, but until then, manually


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

Branch: refs/heads/master
Commit: cf02ab102fc2a41473adc110f900e5513fa247bf
Parents: a9dea37
Author: davebshow <da...@gmail.com>
Authored: Thu Oct 6 09:31:18 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../src/main/jython/tests/driver/test_driver_remote_connection.py | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cf02ab10/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
index 0a892c6..1fd28ae 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
@@ -150,6 +150,8 @@ class TestDriverRemoteConnection(TestCase):
             raise Exception("Accessing a non-existent key should throw an error")
         except KeyError:
             pass
+        connection.close()
+
 
     def test_side_effect_close(self):
         connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')
@@ -183,6 +185,7 @@ class TestDriverRemoteConnection(TestCase):
         # Try to get 'b' directly from server, should throw error
         with pytest.raises(Exception):
             t.side_effects.value_lambda('b')
+        connection.close()
 
 
 if __name__ == '__main__':


[16/16] tinkerpop git commit: added not thread safe warning to DriverRemoteTraversalSideEffects

Posted by sp...@apache.org.
added not thread safe warning to DriverRemoteTraversalSideEffects


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

Branch: refs/heads/master
Commit: 24444c502a1ba76fb71a8dc7454746a8e51db780
Parents: 6b5a159
Author: davebshow <da...@gmail.com>
Authored: Fri Oct 7 11:08:35 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../gremlin/driver/remote/DriverRemoteTraversalSideEffects.java     | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/24444c50/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index 1de1766..d0d5678 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * This class is not thread safe.
  */
 public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSideEffects {
 


[05/16] tinkerpop git commit: added close method to DriverRemoteTraversalSideEffects, implement AutoCloseable on TraversalSideEffects, add test for close method

Posted by sp...@apache.org.
added close method to DriverRemoteTraversalSideEffects, implement AutoCloseable on TraversalSideEffects, add test for close method


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

Branch: refs/heads/master
Commit: ad97af215584f25fb1da8ad779b8dae8d4ccf72d
Parents: a08fa26
Author: davebshow <da...@gmail.com>
Authored: Thu Sep 29 11:55:09 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../process/traversal/TraversalSideEffects.java |  9 ++++-
 .../DriverRemoteTraversalSideEffects.java       | 21 +++++++++--
 .../server/GremlinServerIntegrateTest.java      | 38 +++++++++++++-------
 3 files changed, 51 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ad97af21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
index 95b9fb1..ae6ef54 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
@@ -32,7 +32,7 @@ import java.util.function.UnaryOperator;
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface TraversalSideEffects extends Cloneable, Serializable {
+public interface TraversalSideEffects extends Cloneable, Serializable, AutoCloseable {
 
     /**
      * Return true if the key is a registered side-effect.
@@ -83,6 +83,13 @@ public interface TraversalSideEffects extends Cloneable, Serializable {
     public Set<String> keys();
 
     /**
+     * Invalidate the side effect cache for traversal.
+     */
+    public default void close() throws Exception {
+        // do nothing
+    }
+
+    /**
      * Determines if there are any side-effects to be retrieved.
      */
     public default boolean isEmpty() {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ad97af21/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index 85d7abc..c565dfa 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -45,6 +45,8 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
 
     private final Map<String, Object> sideEffects = new HashMap<>();
 
+    private boolean closed = false;
+
     public DriverRemoteTraversalSideEffects(final Client client, final UUID serverSideEffect, final Host host) {
         this.client = client;
         this.serverSideEffect = serverSideEffect;
@@ -99,10 +101,23 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
         return keys;
     }
 
+
     @Override
     public void close() throws Exception {
-        // todo: need to add a call to "close" the side effects on the server - probably should ensure request only sends once
-
-        // leave the client open as it is owned by the DriverRemoteConnection not the traversal or side-effects
+        if (!closed) {
+            final RequestMessage msg = RequestMessage.build(Tokens.OPS_CLOSE)
+                    .addArg(Tokens.ARGS_SIDE_EFFECT, serverSideEffect)
+                    .addArg(Tokens.ARGS_HOST, host)
+                    .processor("traversal").create();
+            try {
+                client.submitAsync(msg).get();
+                sideEffects.clear();
+                keys = null;
+                closed = true;
+            } catch (Exception ex) {
+                final Throwable root = ExceptionUtils.getRootCause(ex);
+                throw new RuntimeException("Error on closing side effects", root);
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ad97af21/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 5a36acf..7d6c0c9 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -49,6 +49,7 @@ import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.InterpreterModeCust
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
@@ -64,11 +65,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.nio.channels.ClosedChannelException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -102,6 +99,14 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
 
     private Log4jRecordingAppender recordingAppender = null;
 
+    private final Supplier<Graph> graphGetter = () -> server.getServerGremlinExecutor().getGraphManager().getGraphs().get("graph");
+    private final Configuration conf = new BaseConfiguration() {{
+        setProperty(Graph.GRAPH, RemoteGraph.class.getName());
+        setProperty(GREMLIN_REMOTE_CONNECTION_CLASS, DriverRemoteConnection.class.getName());
+        setProperty(DriverRemoteConnection.GREMLIN_REMOTE_DRIVER_SOURCENAME, "g");
+        setProperty("hidden.for.testing.only", graphGetter);
+    }};
+
     @Before
     public void setupForEachTest() {
         recordingAppender = new Log4jRecordingAppender();
@@ -814,18 +819,25 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
 
     @Test
     public void shouldSupportLambdasUsingWithRemote() throws Exception {
-        final Supplier<Graph> graphGetter = () -> server.getServerGremlinExecutor().getGraphManager().getGraphs().get("graph");
-        final Configuration conf = new BaseConfiguration() {{
-            setProperty(Graph.GRAPH, RemoteGraph.class.getName());
-            setProperty(GREMLIN_REMOTE_CONNECTION_CLASS, DriverRemoteConnection.class.getName());
-            setProperty(DriverRemoteConnection.GREMLIN_REMOTE_DRIVER_SOURCENAME, "g");
-            setProperty("hidden.for.testing.only", graphGetter);
-        }};
-
         final Graph graph = EmptyGraph.instance();
         final GraphTraversalSource g = graph.traversal().withRemote(conf);
         g.addV("person").property("age", 20).iterate();
         g.addV("person").property("age", 10).iterate();
         assertEquals(50L, g.V().hasLabel("person").map(Lambda.function("it.get().value('age') + 10")).sum().next());
     }
+
+    @Test
+    public void shouldCloseSideEffects() throws Exception {
+        final Graph graph = EmptyGraph.instance();
+        final GraphTraversalSource g = graph.traversal().withRemote(conf);
+        g.addV("person").property("age", 20).iterate();
+        g.addV("person").property("age", 10).iterate();
+        final GraphTraversal traversal = g.V().aggregate("a");
+        traversal.iterate();
+        final Set sideEffects = traversal.asAdmin().getSideEffects().keys();
+        assertTrue(sideEffects.contains("a"));
+        traversal.asAdmin().getSideEffects().close();
+        final Set emptySideEffects = traversal.asAdmin().getSideEffects().keys();
+        assertTrue(emptySideEffects.isEmpty());
+    }
 }


[08/16] tinkerpop git commit: fixed logic in DriverRemoteSideEffects, don't clear local side effect cache

Posted by sp...@apache.org.
fixed logic in DriverRemoteSideEffects, don't clear local side effect cache


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

Branch: refs/heads/master
Commit: 3187354e299f116467eedb24397c0b02f34b81b6
Parents: d876466
Author: davebshow <da...@gmail.com>
Authored: Thu Sep 29 13:04:57 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../DriverRemoteTraversalSideEffects.java       | 48 ++++++++++----------
 .../server/GremlinServerIntegrateTest.java      | 13 +++---
 2 files changed, 31 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3187354e/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index c565dfa..d2fced5 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
 public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSideEffects {
 
     private final Client client;
-    private Set<String> keys = null;
+    private Set<String> keys = Collections.emptySet();
     private final UUID serverSideEffect;
     private final Host host;
 
@@ -56,22 +56,27 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
     @Override
     public <V> V get(final String key) throws IllegalArgumentException {
         if (!sideEffects.containsKey(key)) {
-            // specify the ARGS_HOST so that the LoadBalancingStrategy is subverted and the connection is forced
-            // from the specified host (i.e. the host from the previous request as that host will hold the side-effects)
-            final RequestMessage msg = RequestMessage.build(Tokens.OPS_GATHER)
-                    .addArg(Tokens.ARGS_SIDE_EFFECT, serverSideEffect)
-                    .addArg(Tokens.ARGS_SIDE_EFFECT_KEY, key)
-                    .addArg(Tokens.ARGS_HOST, host)
-                    .processor("traversal").create();
-            try {
-                final Result result = client.submitAsync(msg).get().one();
-                sideEffects.put(key, null == result ? null : result.getObject());
-            } catch (Exception ex) {
-                final Throwable root = ExceptionUtils.getRootCause(ex);
-                if (root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
-                    sideEffects.put(key, null);
-                else
-                    throw new RuntimeException("Could not get keys", root);
+            if (!closed) {
+                // specify the ARGS_HOST so that the LoadBalancingStrategy is subverted and the connection is forced
+                // from the specified host (i.e. the host from the previous request as that host will hold the side-effects)
+                final RequestMessage msg = RequestMessage.build(Tokens.OPS_GATHER)
+                        .addArg(Tokens.ARGS_SIDE_EFFECT, serverSideEffect)
+                        .addArg(Tokens.ARGS_SIDE_EFFECT_KEY, key)
+                        .addArg(Tokens.ARGS_HOST, host)
+                        .processor("traversal").create();
+                try {
+                    final Result result = client.submitAsync(msg).get().one();
+                    sideEffects.put(key, null == result ? null : result.getObject());
+                    keys.add(key);
+                } catch (Exception ex) {
+                    final Throwable root = ExceptionUtils.getRootCause(ex);
+                    if (root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
+                        sideEffects.put(key, null);
+                    else
+                        throw new RuntimeException("Could not get keys", root);
+                }
+            } else {
+                sideEffects.put(key, null);
             }
         }
 
@@ -80,7 +85,7 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
 
     @Override
     public Set<String> keys() {
-        if (null == keys) {
+        if (!closed) {
             // specify the ARGS_HOST so that the LoadBalancingStrategy is subverted and the connection is forced
             // from the specified host (i.e. the host from the previous request as that host will hold the side-effects)
             final RequestMessage msg = RequestMessage.build(Tokens.OPS_KEYS)
@@ -91,9 +96,7 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                 keys = client.submitAsync(msg).get().all().get().stream().map(r -> r.getString()).collect(Collectors.toSet());
             } catch (Exception ex) {
                 final Throwable root = ExceptionUtils.getRootCause(ex);
-                if (root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
-                    keys = Collections.emptySet();
-                else
+                if (!root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
                     throw new RuntimeException("Could not get keys", root);
             }
         }
@@ -101,7 +104,6 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
         return keys;
     }
 
-
     @Override
     public void close() throws Exception {
         if (!closed) {
@@ -111,8 +113,6 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                     .processor("traversal").create();
             try {
                 client.submitAsync(msg).get();
-                sideEffects.clear();
-                keys = null;
                 closed = true;
             } catch (Exception ex) {
                 final Throwable root = ExceptionUtils.getRootCause(ex);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3187354e/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index a1d019b..e6e0021 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -70,6 +70,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -90,6 +91,7 @@ import static org.hamcrest.core.StringEndsWith.endsWith;
 import static org.hamcrest.core.StringStartsWith.startsWith;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeThat;
 import static org.junit.Assert.assertEquals;
@@ -831,17 +833,16 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    public void shouldCloseSideEffects() throws Exception {
+    public void shouldCloseLocalSideEffects() throws Exception {
         final Graph graph = EmptyGraph.instance();
         final GraphTraversalSource g = graph.traversal().withRemote(conf);
         g.addV("person").property("age", 20).iterate();
         g.addV("person").property("age", 10).iterate();
-        final GraphTraversal traversal = g.V().aggregate("a");
+        final GraphTraversal traversal = g.V().aggregate("a").aggregate("b");
         traversal.iterate();
-        final Set sideEffects = traversal.asAdmin().getSideEffects().keys();
-        assertTrue(sideEffects.contains("a"));
+        final List sideEffects = traversal.asAdmin().getSideEffects().get("a");
+        assertFalse(sideEffects.isEmpty());
         traversal.asAdmin().getSideEffects().close();
-        final Set emptySideEffects = traversal.asAdmin().getSideEffects().keys();
-        assertTrue(emptySideEffects.isEmpty());
+        assertNull(traversal.asAdmin().getSideEffects().get("b"));
     }
 }


[11/16] tinkerpop git commit: fixed side effect methods and updated tests

Posted by sp...@apache.org.
fixed side effect methods and updated tests


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

Branch: refs/heads/master
Commit: d0dc52f0dc4ee04826468798c54830e7c09c5589
Parents: 7d6641f
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 17:59:15 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../DriverRemoteTraversalSideEffects.java       |  6 ++++-
 .../DriverRemoteTraversalSideEffectsTest.java   | 24 ++++++++++++++++++--
 .../server/GremlinServerIntegrateTest.java      | 18 +++++++++------
 3 files changed, 38 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0dc52f0/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index d2fced5..2dece11 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.remote.traversal.AbstractRemoteTrave
 
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
@@ -67,10 +68,13 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                 try {
                     final Result result = client.submitAsync(msg).get().one();
                     sideEffects.put(key, null == result ? null : result.getObject());
+                    if (keys.isEmpty())
+                        keys = new HashSet<>();
                     keys.add(key);
                 } catch (Exception ex) {
                     final Throwable root = ExceptionUtils.getRootCause(ex);
-                    if (root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
+                    final String exMsg = null == root ? "" : root.getMessage();
+                    if (exMsg.equals("Could not find side-effects for " + serverSideEffect + "."))
                         sideEffects.put(key, null);
                     else
                         throw new RuntimeException("Could not get keys", root);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0dc52f0/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
index d4c5618..368ca92 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
@@ -29,6 +29,7 @@ import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -63,10 +64,29 @@ public class DriverRemoteTraversalSideEffectsTest extends AbstractResultQueueTes
     }
 
     @Test
-    public void shouldNotContactRemoteMoreThanOnceForClose() throws Exception {
+    public void shoudlNotContactRemoteForGetAfterCloseIsCalled() throws Exception {
         final Client client = mock(Client.class);
         mockClientForCall(client);
         mockClientForCall(client);
+        final UUID sideEffectKey = UUID.fromString("31dec2c6-b214-4a6f-a68b-996608dce0d9");
+        final TraversalSideEffects sideEffects = new DriverRemoteTraversalSideEffects(client, sideEffectKey, null);
+
+        assertNotNull(sideEffects.get("a"));
+        sideEffects.close();
+
+        // Side effect 'a' should be cached locally
+        assertNotNull(sideEffects.get("a"));
+        assertNotNull(sideEffects.get("a"));
+        assertNotNull(sideEffects.get("a"));
+
+        // Once for get and once for close
+        verify(client, times(2)).submitAsync(any(RequestMessage.class));
+    }
+
+    @Test
+    public void shouldNotContactRemoteMoreThanOnceForClose() throws Exception {
+        final Client client = mock(Client.class);
+        mockClientForCall(client);
 
         final UUID sideEffectKey = UUID.fromString("31dec2c6-b214-4a6f-a68b-996608dce0d9");
         final TraversalSideEffects sideEffects = new DriverRemoteTraversalSideEffects(client, sideEffectKey, null);
@@ -79,7 +99,7 @@ public class DriverRemoteTraversalSideEffectsTest extends AbstractResultQueueTes
 
         assertEquals(0, sideEffects.keys().size());
 
-        // once for the keys and once for the close message
+        // once for the close message
         verify(client, times(1)).submitAsync(any(RequestMessage.class));
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0dc52f0/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 61bf994..1c4d19e 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -52,6 +52,7 @@ import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCusto
 import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.server.channel.NioChannelizer;
@@ -850,9 +851,9 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         assertEquals(2, sideEffectKeys.size());
 
         // Get side effects
-        final List aSideEffects = se.get("a");
+        final BulkSet aSideEffects = se.get("a");
         assertThat(aSideEffects.isEmpty(), is(false));
-        final List bSideEffects = se.get("b");
+        final BulkSet bSideEffects = se.get("b");
         assertThat(bSideEffects.isEmpty(), is(false));
 
         // Should get local keys/side effects after close
@@ -861,10 +862,10 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         final Set<String> localSideEffectKeys = se.keys();
         assertEquals(2, localSideEffectKeys.size());
 
-        final List localASideEffects = se.get("a");
+        final BulkSet localASideEffects = se.get("a");
         assertThat(localASideEffects.isEmpty(), is(false));
 
-        final List localBSideEffects = se.get("b");
+        final BulkSet localBSideEffects = se.get("b");
         assertThat(localBSideEffects.isEmpty(), is(false));
     }
 
@@ -877,7 +878,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         final GraphTraversal traversal = g.V().aggregate("a").aggregate("b");
         traversal.iterate();
         final DriverRemoteTraversalSideEffects se = (DriverRemoteTraversalSideEffects) traversal.asAdmin().getSideEffects();
-        final List sideEffects = se.get("a");
+        final BulkSet sideEffects = se.get("a");
         assertThat(sideEffects.isEmpty(), is(false));
         se.close();
 
@@ -887,7 +888,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         // Earlier keys should be cached locally
         final Set<String> localSideEffectKeys = se.keys();
         assertEquals(1, localSideEffectKeys.size());
-        final List localSideEffects = se.get("a");
+        final BulkSet localSideEffects = se.get("a");
         assertThat(localSideEffects.isEmpty(), is(false));
 
         // Try to get side effect from server
@@ -896,13 +897,16 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         Field field = DriverRemoteTraversalSideEffects.class.getDeclaredField("serverSideEffect");
         field.setAccessible(true);
         UUID serverSideEffectId = (UUID) field.get(se);
+        final Map<String, String> aliases = new HashMap<>();
+        aliases.put("g", "g");
         final RequestMessage msg = RequestMessage.build(Tokens.OPS_GATHER)
                 .addArg(Tokens.ARGS_SIDE_EFFECT, serverSideEffectId)
                 .addArg(Tokens.ARGS_SIDE_EFFECT_KEY, "b")
+                .addArg(Tokens.ARGS_ALIASES, aliases)
                 .processor("traversal").create();
         boolean error;
         try {
-            client.submitAsync(msg).get();
+            client.submitAsync(msg).get().one();
             error = false;
         } catch (Exception ex) {
             error = true;


[04/16] tinkerpop git commit: fixed java code as per @spmallette review

Posted by sp...@apache.org.
fixed java code as per @spmallette review


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

Branch: refs/heads/master
Commit: 6b5a1599a971180efa3115dc1e02caab7da86b9e
Parents: cf02ab1
Author: davebshow <da...@gmail.com>
Authored: Thu Oct 6 20:21:37 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../driver/remote/DriverRemoteTraversalSideEffects.java       | 7 +++++--
 .../tinkerpop/gremlin/server/GremlinServerIntegrateTest.java  | 4 ++--
 2 files changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b5a1599/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index 642db13..1de1766 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -68,7 +68,7 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                 try {
                     final Result result = client.submitAsync(msg).get().one();
                     sideEffects.put(key, null == result ? null : result.getObject());
-                    if (keys.isEmpty())
+                    if (keys.equals(Collections.emptySet()))
                         keys = new HashSet<>();
                     keys.add(key);
                 } catch (Exception ex) {
@@ -97,7 +97,10 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                     .addArg(Tokens.ARGS_HOST, host)
                     .processor("traversal").create();
             try {
-                keys = client.submitAsync(msg).get().all().get().stream().map(r -> r.getString()).collect(Collectors.toSet());
+                if (keys.equals(Collections.emptySet()))
+                    keys = new HashSet<>();
+
+                client.submitAsync(msg).get().all().get().forEach(r -> keys.add(r.getString()));
             } catch (Exception ex) {
                 final Throwable root = ExceptionUtils.getRootCause(ex);
                 final String exMsg = null == root ? "" : root.getMessage();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b5a1599/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index f810ebc..9bc6cd9 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -894,9 +894,9 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         // Try to get side effect from server
         final Cluster cluster = Cluster.build("localhost").create();
         final Client client = cluster.connect();
-        Field field = DriverRemoteTraversalSideEffects.class.getDeclaredField("serverSideEffect");
+        final Field field = DriverRemoteTraversalSideEffects.class.getDeclaredField("serverSideEffect");
         field.setAccessible(true);
-        UUID serverSideEffectId = (UUID) field.get(se);
+        final UUID serverSideEffectId = (UUID) field.get(se);
         final Map<String, String> aliases = new HashMap<>();
         aliases.put("g", "g");
         final RequestMessage msg = RequestMessage.build(Tokens.OPS_GATHER)


[14/16] tinkerpop git commit: Add some tests for DriverRemoteTraversalSideEffects.

Posted by sp...@apache.org.
Add some tests for DriverRemoteTraversalSideEffects.


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

Branch: refs/heads/master
Commit: c4e6f87cbee95429656180ea07f35db28cb521df
Parents: 3187354
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Sep 30 09:23:29 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 gremlin-driver/pom.xml                          |  5 +
 .../DriverRemoteTraversalSideEffectsTest.java   | 96 ++++++++++++++++++++
 2 files changed, 101 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c4e6f87c/gremlin-driver/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-driver/pom.xml b/gremlin-driver/pom.xml
index 41e775c..65beb52 100644
--- a/gremlin-driver/pom.xml
+++ b/gremlin-driver/pom.xml
@@ -79,6 +79,11 @@ limitations under the License.
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-all</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c4e6f87c/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
new file mode 100644
index 0000000..d4c5618
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffectsTest.java
@@ -0,0 +1,96 @@
+/*
+ * 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.driver.remote;
+
+import org.apache.tinkerpop.gremlin.driver.AbstractResultQueueTest;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.ResultSet;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.junit.Test;
+
+import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DriverRemoteTraversalSideEffectsTest extends AbstractResultQueueTest {
+
+    @Test
+    public void shouldNotContactRemoteForKeysAfterCloseIsCalled() throws Exception {
+        final Client client = mock(Client.class);
+        mockClientForCall(client);
+        mockClientForCall(client);
+
+        final UUID sideEffectKey = UUID.fromString("31dec2c6-b214-4a6f-a68b-996608dce0d9");
+        final TraversalSideEffects sideEffects = new DriverRemoteTraversalSideEffects(client, sideEffectKey, null);
+
+        assertEquals(1, sideEffects.keys().size());
+        sideEffects.close();
+
+        // call this again and again and it will only hit the cached keys - no more server calls
+        assertEquals(1, sideEffects.keys().size());
+        assertEquals(1, sideEffects.keys().size());
+        assertEquals(1, sideEffects.keys().size());
+        assertEquals(1, sideEffects.keys().size());
+
+        // once for the keys and once for the close message
+        verify(client, times(2)).submitAsync(any(RequestMessage.class));
+    }
+
+    @Test
+    public void shouldNotContactRemoteMoreThanOnceForClose() throws Exception {
+        final Client client = mock(Client.class);
+        mockClientForCall(client);
+        mockClientForCall(client);
+
+        final UUID sideEffectKey = UUID.fromString("31dec2c6-b214-4a6f-a68b-996608dce0d9");
+        final TraversalSideEffects sideEffects = new DriverRemoteTraversalSideEffects(client, sideEffectKey, null);
+
+        sideEffects.close();
+        sideEffects.close();
+        sideEffects.close();
+        sideEffects.close();
+        sideEffects.close();
+
+        assertEquals(0, sideEffects.keys().size());
+
+        // once for the keys and once for the close message
+        verify(client, times(1)).submitAsync(any(RequestMessage.class));
+    }
+
+    private void mockClientForCall(final Client client) throws Exception {
+        final ResultSet returnedResultSet = new ResultSet(resultQueue, pool, readCompleted, RequestMessage.build("traversal").create(), null);
+        addToQueue(1, 0, true, true, 1);
+        final CompletableFuture<ResultSet> returnedFuture = new CompletableFuture<>();
+        returnedFuture.complete(returnedResultSet);
+
+        // the return is just generic garbage from addToQueue for any call to submitAsync() - but given the logic
+        // of DriverRemoteTraversalSideEffects, that's ok
+        when(client.submitAsync(any(RequestMessage.class))).thenReturn(returnedFuture);
+    }
+}


[02/16] tinkerpop git commit: TraversalOpProcessor returns a success message upon receiveing a close command

Posted by sp...@apache.org.
TraversalOpProcessor returns a success message upon receiveing a close command


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

Branch: refs/heads/master
Commit: 69056b2d9f9f42192fc6b4fe54b3a2044aae9bcc
Parents: 9b13383
Author: davebshow <da...@apache.org>
Authored: Thu Sep 22 14:51:21 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:33 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                                | 1 +
 .../gremlin/server/op/traversal/TraversalOpProcessor.java         | 3 +++
 2 files changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/69056b2d/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 9475555..3ab1881 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -76,6 +76,7 @@ TinkerPop 3.2.3 (Release Date: NOT OFFICIALLY RELEASED YET)
 * VertexPrograms can now declare traverser requirements, e.g. to have access to the path when used with `.program()`.
 * New build options for `gremlin-python` where `-DglvPython` is no longer required.
 * Added missing `InetAddress` to GraphSON extension module.
+* Gremlin Server `TraversalOpProcessor` now returns confirmation upon `Op` `close`.
 
 [[release-3-2-2]]
 TinkerPop 3.2.2 (Release Date: September 6, 2016)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/69056b2d/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
index 80cacd2..88d8d90 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
@@ -198,6 +198,9 @@ public class TraversalOpProcessor extends AbstractOpProcessor {
 
                     final Optional<UUID> sideEffect = msg.optionalArgs(Tokens.ARGS_SIDE_EFFECT);
                     cache.invalidate(sideEffect.get());
+
+                    final String successMessage = String.format("Successfully cleared side effect cache for [%s].", Tokens.ARGS_SIDE_EFFECT);
+                    ctx.getChannelHandlerContext().writeAndFlush(ResponseMessage.build(message).code(ResponseStatusCode.NO_CONTENT).statusMessage(successMessage).create());
                 };
 
                 break;


[09/16] tinkerpop git commit: updated driver to cache side effects locally

Posted by sp...@apache.org.
updated driver to cache side effects locally


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

Branch: refs/heads/master
Commit: 7c5f5bfaf1a2155d252535806ccc1a21b6dcdd1a
Parents: d0dc52f
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 18:00:27 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../gremlin_python/driver/remote_connection.py  | 26 ++++++++++----
 .../driver/test_driver_remote_connection.py     | 38 +++++++++++++++++---
 2 files changed, 53 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c5f5bfa/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
index 3e7293f..46fb760 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
@@ -58,18 +58,32 @@ class RemoteTraversal(Traversal):
 
 class RemoteTraversalSideEffects(TraversalSideEffects):
     def __init__(self, keys_lambda, value_lambda, close_lambda):
-        self.keys_lambda = keys_lambda
-        self.value_lambda = value_lambda
-        self.close_lambda = close_lambda
+        self._keys_lambda = keys_lambda
+        self._value_lambda = value_lambda
+        self._close_lambda = close_lambda
+        self._keys = set()
+        self._side_effects = {}
+        self._closed = False
 
     def keys(self):
-        return self.keys_lambda()
+        if not self._closed:
+            self._keys = self._keys_lambda()
+        return self._keys
 
     def get(self, key):
-        return self.value_lambda(key)
+        if not self._side_effects.get(key):
+            if not self._closed:
+                results = self._value_lambda(key)
+                self._side_effects[key] = results
+                self._keys.add(key)
+            else:
+                return None
+        return self._side_effects[key]
 
     def close(self):
-        return self.close_lambda()
+        results = self._close_lambda()
+        self._closed = True
+        return results
 
 
 class RemoteStrategy(TraversalStrategy):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c5f5bfa/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
index c557bbe..0a892c6 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
@@ -150,11 +150,39 @@ class TestDriverRemoteConnection(TestCase):
             raise Exception("Accessing a non-existent key should throw an error")
         except KeyError:
             pass
-        result = t.side_effects.close()
-        assert not result
-        with pytest.raises(KeyError):
-            x = t.side_effects['m']
-        connection.close()
+
+    def test_side_effect_close(self):
+        connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')
+        g = Graph().traversal().withRemote(connection)
+        t = g.V().aggregate('a').aggregate('b')
+        t.toList()
+
+        # The 'a' key should return some side effects
+        results = t.side_effects.get('a')
+        assert results
+
+        # Close result is None
+        results = t.side_effects.close()
+        assert not results
+
+        # Shouldn't get any new info from server
+        # 'b' isn't in local cache
+        results = t.side_effects.get('b')
+        assert not results
+
+        # But 'a' should still be cached locally
+        results = t.side_effects.get('a')
+        assert results
+
+        # 'a' should have been added to local keys cache, but not 'b'
+        results = t.side_effects.keys()
+        assert len(results) == 1
+        a, = results
+        assert a == 'a'
+
+        # Try to get 'b' directly from server, should throw error
+        with pytest.raises(Exception):
+            t.side_effects.value_lambda('b')
 
 
 if __name__ == '__main__':


[15/16] tinkerpop git commit: added 'safe' error parsing code to keys method

Posted by sp...@apache.org.
added 'safe' error parsing code to keys method


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

Branch: refs/heads/master
Commit: a9dea37b901d01ae46efa73f133cb610e5744bfb
Parents: 421f696
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 18:46:37 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../gremlin/driver/remote/DriverRemoteTraversalSideEffects.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a9dea37b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index 2dece11..642db13 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -100,7 +100,8 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
                 keys = client.submitAsync(msg).get().all().get().stream().map(r -> r.getString()).collect(Collectors.toSet());
             } catch (Exception ex) {
                 final Throwable root = ExceptionUtils.getRootCause(ex);
-                if (!root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
+                final String exMsg = null == root ? "" : root.getMessage();
+                if (!exMsg.equals("Could not find side-effects for " + serverSideEffect + "."))
                     throw new RuntimeException("Could not get keys", root);
             }
         }


[06/16] tinkerpop git commit: removed extra lines

Posted by sp...@apache.org.
removed extra lines


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

Branch: refs/heads/master
Commit: 5d450208af7fba96430660569b128a90ee3378cb
Parents: 7c5f5bf
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 18:06:02 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/server/GremlinServerIntegrateTest.java      | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5d450208/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 1c4d19e..f810ebc 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -914,6 +914,3 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
         assertThat(error, is(true));
     }
 }
-
-
-


[12/16] tinkerpop git commit: updated changelog

Posted by sp...@apache.org.
updated changelog


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

Branch: refs/heads/master
Commit: 421f6964213707df606e3548b6a995bbd669c89a
Parents: 5d45020
Author: davebshow <da...@gmail.com>
Authored: Wed Oct 5 18:10:15 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/421f6964/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 3ab1881..daee078 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -77,6 +77,7 @@ TinkerPop 3.2.3 (Release Date: NOT OFFICIALLY RELEASED YET)
 * New build options for `gremlin-python` where `-DglvPython` is no longer required.
 * Added missing `InetAddress` to GraphSON extension module.
 * Gremlin Server `TraversalOpProcessor` now returns confirmation upon `Op` `close`.
+* Added `close` method Java driver and Python driver `DriverRemoteTraversalSideEffects`.
 
 [[release-3-2-2]]
 TinkerPop 3.2.2 (Release Date: September 6, 2016)


[03/16] tinkerpop git commit: Fix up javadoc a little

Posted by sp...@apache.org.
Fix up javadoc a little


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

Branch: refs/heads/master
Commit: fd3c87d1ddc7f61244401753e4447e0a071398fa
Parents: 24444c5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Oct 7 18:31:18 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 7 18:31:34 2016 -0400

----------------------------------------------------------------------
 .../gremlin/driver/remote/DriverRemoteTraversalSideEffects.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fd3c87d1/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index d0d5678..95f049f 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.driver.Result;
 import org.apache.tinkerpop.gremlin.driver.Tokens;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.process.remote.traversal.AbstractRemoteTraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -35,8 +36,9 @@ import java.util.UUID;
 import java.util.stream.Collectors;
 
 /**
+ * Java driver implementation of {@link TraversalSideEffects}. This class is not thread safe.
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
- * This class is not thread safe.
  */
 public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSideEffects {