[
https://issues.apache.org/jira/browse/TINKERPOP-1458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15552175#comment-15552175
]
ASF GitHub Bot commented on TINKERPOP-1458:
-------------------------------------------
Github user spmallette commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/451#discussion_r82212090
--- Diff:
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
---
@@ -814,18 +829,88 @@ public void
shouldStillSupportDeprecatedRebindingsParameterOnServer() throws Exc
@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 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 DriverRemoteTraversalSideEffects se =
(DriverRemoteTraversalSideEffects) traversal.asAdmin().getSideEffects();
+
+ // Get keys
+ final Set<String> sideEffectKeys = se.keys();
+ assertEquals(2, sideEffectKeys.size());
+
+ // Get side effects
+ final BulkSet aSideEffects = se.get("a");
+ assertThat(aSideEffects.isEmpty(), is(false));
+ final BulkSet 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 BulkSet localASideEffects = se.get("a");
+ assertThat(localASideEffects.isEmpty(), is(false));
+
+ final BulkSet 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 BulkSet 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 BulkSet 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");
--- End diff --
please `final` your `Field` and `UUID` variables. glad the reflection trick
worked for this test.
> Gremlin Server doesn't return confirmation upon Traversal OpProcessor "close"
> op
> --------------------------------------------------------------------------------
>
> Key: TINKERPOP-1458
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1458
> Project: TinkerPop
> Issue Type: Bug
> Components: server
> Affects Versions: 3.2.2
> Reporter: David M. Brown
> Assignee: David M. Brown
> Fix For: 3.2.3
>
>
> Gremlin Server should return some sort of success message to driver upon
> invalidating the side effect cache for a traversal.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)