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 2018/03/21 12:09:15 UTC

[1/3] tinkerpop git commit: TINKERPOP-1758 Apply RemoteStrategy before all DecorationStrategy instances

Repository: tinkerpop
Updated Branches:
  refs/heads/tp33 38bcdb6c5 -> 0f29e7e8f


TINKERPOP-1758 Apply RemoteStrategy before all DecorationStrategy instances

Played around with a few ways to test this, but none seemed especially good. Everything I try to do seems fairly contrived or redundant. In the end, I ended up feeling like it was safe to just rely on the TraversalStrategies sorting system with posts/priors. Perhaps that is enough...


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

Branch: refs/heads/tp33
Commit: 528851411c6494bf92f2f929324a79ba28a941b2
Parents: 6fbf130
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Mar 5 13:18:35 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Mar 5 13:18:35 2018 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../strategy/decoration/RemoteStrategy.java     | 27 +++++++++++++++++++-
 .../process/traversal/TraversalStrategies.java  | 22 ++++++++--------
 3 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52885141/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b9f22e1..037d94c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -27,6 +27,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Modified `GremlinDslProcessor` so that it generated the `getAnonymousTraversalClass()` method to return the DSL version of `__`.
 * Added the "Kitchen Sink" test data set.
 * Fixed deserialization of `P.not()` for GraphSON.
+* Ensure that `RemoteStrategy` is applied before all other `DecorationStrategy` instances.
 * Added `idleConnectionTimeout` and `keepAliveInterval` to Gremlin Server that enables a "ping" and auto-close for seemingly dead clients.
 * Fixed a bug in `NumberHelper` that led to wrong min/max results if numbers exceeded the Integer limits.
 * Delayed setting of the request identifier until `RequestMessage` construction by the builder.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52885141/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
index d1b14d5..f6e3ed6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
@@ -27,11 +27,22 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
 
@@ -49,7 +60,21 @@ public final class RemoteStrategy extends AbstractTraversalStrategy<TraversalStr
     private static final RemoteStrategy INSTANCE = new RemoteStrategy();
     private final Optional<RemoteConnection> remoteConnection;
 
-    private static final Set<Class<? extends DecorationStrategy>> POSTS = Collections.singleton(VertexProgramStrategy.class);
+    /**
+     * Should be applied before all {@link DecorationStrategy} instances.
+     */
+    private static final Set<Class<? extends DecorationStrategy>> POSTS = new HashSet<Class<? extends DecorationStrategy>>() {{
+        add(VertexProgramStrategy.class);
+        add(ConnectiveStrategy.class);
+        add(ElementIdStrategy.class);
+        add(EventStrategy.class);
+        add(HaltedTraverserStrategy.class);
+        add(PartitionStrategy.class);
+        add(RequirementsStrategy.class);
+        add(SackStrategy.class);
+        add(SideEffectStrategy.class);
+        add(SubgraphStrategy.class);
+    }};
 
     private RemoteStrategy() {
         remoteConnection = Optional.empty();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52885141/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index 63ae23f..c7ee5bf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -141,9 +141,9 @@ public interface TraversalStrategies extends Serializable, Cloneable {
         });
 
         //Add dependencies by category
-        List<Class<? extends TraversalStrategy>> strategiesInPreviousCategories = new ArrayList<>();
+        final List<Class<? extends TraversalStrategy>> strategiesInPreviousCategories = new ArrayList<>();
         for (Class<? extends TraversalStrategy> category : STRATEGY_CATEGORIES) {
-            Set<Class<? extends TraversalStrategy>> strategiesInThisCategory = MultiMap.get(strategiesByCategory, category);
+            final Set<Class<? extends TraversalStrategy>> strategiesInThisCategory = MultiMap.get(strategiesByCategory, category);
             for (Class<? extends TraversalStrategy> strategy : strategiesInThisCategory) {
                 for (Class<? extends TraversalStrategy> previousStrategy : strategiesInPreviousCategories) {
                     MultiMap.put(dependencyMap, strategy, previousStrategy);
@@ -153,16 +153,16 @@ public interface TraversalStrategies extends Serializable, Cloneable {
         }
 
         //Finally sort via t-sort
-        List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses = new ArrayList<>(strategies.stream().map(s -> s.getClass()).collect(Collectors.toSet()));
-        List<Class<? extends TraversalStrategy>> sortedStrategyClasses = new ArrayList<>();
-        Set<Class<? extends TraversalStrategy>> seenStrategyClasses = new HashSet<>();
+        final List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses = new ArrayList<>(strategies.stream().map(s -> s.getClass()).collect(Collectors.toSet()));
+        final List<Class<? extends TraversalStrategy>> sortedStrategyClasses = new ArrayList<>();
+        final Set<Class<? extends TraversalStrategy>> seenStrategyClasses = new HashSet<>();
 
         while (!unprocessedStrategyClasses.isEmpty()) {
-            Class<? extends TraversalStrategy> strategy = unprocessedStrategyClasses.get(0);
+            final Class<? extends TraversalStrategy> strategy = unprocessedStrategyClasses.get(0);
             visit(dependencyMap, sortedStrategyClasses, seenStrategyClasses, unprocessedStrategyClasses, strategy);
         }
 
-        List<TraversalStrategy<?>> sortedStrategies = new ArrayList<>();
+        final List<TraversalStrategy<?>> sortedStrategies = new ArrayList<>();
         //We now have a list of sorted strategy classes
         for (Class<? extends TraversalStrategy> strategyClass : sortedStrategyClasses) {
             for (TraversalStrategy strategy : strategies) {
@@ -172,12 +172,13 @@ public interface TraversalStrategies extends Serializable, Cloneable {
             }
         }
 
-
         return sortedStrategies;
     }
 
-
-    static void visit(Map<Class<? extends TraversalStrategy>, Set<Class<? extends TraversalStrategy>>> dependencyMap, List<Class<? extends TraversalStrategy>> sortedStrategyClasses, Set<Class<? extends TraversalStrategy>> seenStrategyClases, List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses, Class<? extends TraversalStrategy> strategyClass) {
+    static void visit(final Map<Class<? extends TraversalStrategy>, Set<Class<? extends TraversalStrategy>>> dependencyMap,
+                      final List<Class<? extends TraversalStrategy>> sortedStrategyClasses,
+                      final Set<Class<? extends TraversalStrategy>> seenStrategyClases,
+                      final List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses, Class<? extends TraversalStrategy> strategyClass) {
         if (seenStrategyClases.contains(strategyClass)) {
             throw new IllegalStateException("Cyclic dependency between traversal strategies: ["
                     + seenStrategyClases + ']');
@@ -195,7 +196,6 @@ public interface TraversalStrategies extends Serializable, Cloneable {
         }
     }
 
-
     public static final class GlobalCache {
 
         private static final Map<Class<? extends Graph>, TraversalStrategies> GRAPH_CACHE = new HashMap<>();


[2/3] tinkerpop git commit: Merge branch 'TINKERPOP-1758' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1758' into tp32

Conflicts:
	CHANGELOG.asciidoc


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

Branch: refs/heads/tp33
Commit: 6323f4912433f64c1e890f7e6fd8156dc10b299e
Parents: 10d9095 5288514
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Mar 20 15:25:29 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Mar 20 15:25:29 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../strategy/decoration/RemoteStrategy.java     | 27 +++++++++++++++++++-
 .../process/traversal/TraversalStrategies.java  | 22 ++++++++--------
 3 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6323f491/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 0ec6f6d,037d94c..22073ad
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -30,10 -27,8 +30,11 @@@ image::https://raw.githubusercontent.co
  * Modified `GremlinDslProcessor` so that it generated the `getAnonymousTraversalClass()` method to return the DSL version of `__`.
  * Added the "Kitchen Sink" test data set.
  * Fixed deserialization of `P.not()` for GraphSON.
 +* Bumped to Jackson 2.9.4.
 +* Improved performance of `JavaTranslator` by caching reflected methods required for traversal construction.
+ * Ensure that `RemoteStrategy` is applied before all other `DecorationStrategy` instances.
  * Added `idleConnectionTimeout` and `keepAliveInterval` to Gremlin Server that enables a "ping" and auto-close for seemingly dead clients.
 +* Fixed a bug where lambdas in `gremlin-python` would trigger a failure if steps using python-only symbols were present (such as `as_()`).
  * Fixed a bug in `NumberHelper` that led to wrong min/max results if numbers exceeded the Integer limits.
  * Delayed setting of the request identifier until `RequestMessage` construction by the builder.
  * Improved error messaging for failed serialization and deserialization of request/response messages.


[3/3] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/tp33
Commit: 0f29e7e8fedfa860fbf663e7398bbaf05e4d30e2
Parents: 38bcdb6 6323f49
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Mar 20 15:25:39 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Mar 20 15:25:39 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../strategy/decoration/RemoteStrategy.java     | 27 +++++++++++++++++++-
 .../process/traversal/TraversalStrategies.java  | 22 ++++++++--------
 3 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0f29e7e8/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0f29e7e8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
----------------------------------------------------------------------