You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2017/04/14 15:32:43 UTC
[1/4] tinkerpop git commit: Fixed a bug in where should invalidate
the strategy's application.
Repository: tinkerpop
Updated Branches:
refs/heads/tp32 12e08c366 -> 5ff3e4333
Fixed a bug in where should invalidate the strategy's application.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e033e3c6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e033e3c6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e033e3c6
Branch: refs/heads/tp32
Commit: e033e3c6f8132d0b461a75e479ceea8f8b4b9ca8
Parents: 12e08c3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Apr 13 10:54:29 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Apr 13 10:54:29 2017 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 7 ++--
.../optimization/RepeatUnrollStrategy.java | 10 ++++--
.../step/branch/GroovyRepeatTest.groovy | 6 ++++
.../traversal/step/branch/RepeatTest.java | 34 ++++++++++++++++++--
4 files changed, 50 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e033e3c6/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 18ad774..1e7be59 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,9 +26,10 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Deprecated `authentication.className` setting in favor of using `authentication.authenticator`
-* Added `authentication.authenticationHandler` setting
-* Added abstraction to authorization to allow users to plug in their own `AbstractAuthorizationHandler` implementations
+* Fixed a bug in `RepeatUnrollStrategy` where `LoopsStep` should invalidate the strategy's application.
+* Deprecated `authentication.className` setting in favor of using `authentication.authenticator`.
+* Added `authentication.authenticationHandler` setting.
+* Added abstraction to authorization to allow users to plug in their own `AbstractAuthorizationHandler` implementations.
* Fixed a `NullPointerException` bug in `B_LP_O_S_SE_SL_Traverser`.
* `PathRetractionStrategy` now uses the marker-model to reduce recursive lookups of invalidating steps.
* `ProfileStrategy` now uses the marker-model to reduce recursive lookups of `ProfileSideEffectStep`.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e033e3c6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
index 0a7cd4e..bdde1a1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
@@ -20,23 +20,28 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
private static final RepeatUnrollStrategy INSTANCE = new RepeatUnrollStrategy();
-
protected static final int MAX_BARRIER_SIZE = 2500;
private RepeatUnrollStrategy() {
@@ -52,7 +57,8 @@ public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<Traver
final RepeatStep<?> repeatStep = (RepeatStep) traversal.getSteps().get(i);
if (null == repeatStep.getEmitTraversal() &&
repeatStep.getUntilTraversal() instanceof LoopTraversal && ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops() > 0 &&
- !TraversalHelper.hasStepOfAssignableClassRecursively(Scope.global, DedupGlobalStep.class, repeatStep.getRepeatTraversal())) {
+ !TraversalHelper.hasStepOfAssignableClassRecursively(Scope.global, DedupGlobalStep.class, repeatStep.getRepeatTraversal()) &&
+ !TraversalHelper.hasStepOfAssignableClassRecursively(LoopsStep.class, repeatStep.getRepeatTraversal())) {
final Traversal.Admin<?, ?> repeatTraversal = repeatStep.getGlobalChildren().get(0);
repeatTraversal.removeStep(repeatTraversal.getSteps().size() - 1); // removes the RepeatEndStep
TraversalHelper.applySingleLevelStrategies(traversal, repeatTraversal, RepeatUnrollStrategy.class);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e033e3c6/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index c132e6c..88dce37 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -84,5 +84,11 @@ public abstract class GroovyRepeatTest {
public Traversal<Vertex, String> get_g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name(final Object v1Id) {
new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(out()).until(__.outE.count.is(0)).name", "v1Id", v1Id)
}
+
+ @Override
+ public Traversal<Vertex, Map<Integer, Long>> get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(
+ final Object v1Id) {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(groupCount('m').by(loops()).out()).times(3).cap('m')", "v1Id", v1Id)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e033e3c6/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
index db230d4..56acd2b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
@@ -36,8 +36,17 @@ import java.util.List;
import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.groupCount;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.loops;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -70,6 +79,8 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX();
+ public abstract Traversal<Vertex, Map<Integer, Long>> get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(final Object v1Id);
+
//
public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX();
@@ -234,6 +245,20 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
checkResults(Arrays.asList("lop", "lop", "ripple", "vadas"), traversal);
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_capXmX() {
+ final Traversal<Vertex, Map<Integer, Long>> traversal = get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(convertToVertexId("marko"));
+ printTraversalForm(traversal);
+ final Map<Integer, Long> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(3, map.size());
+ // {0=1, 1=3, 2=2}
+ assertEquals(1L, map.get(0).longValue());
+ assertEquals(3L, map.get(1).longValue());
+ assertEquals(2L, map.get(2).longValue());
+ }
+
public static class Traversals extends RepeatTest {
@Override
@@ -290,5 +315,10 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, String> get_g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name(final Object v1Id) {
return g.V(v1Id).repeat(out()).until(outE().count().is(0)).values("name");
}
+
+ @Override
+ public Traversal<Vertex, Map<Integer, Long>> get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(final Object v1Id) {
+ return g.V(v1Id).repeat(groupCount("m").by(loops()).out()).times(3).cap("m");
+ }
}
}
\ No newline at end of file
[2/4] tinkerpop git commit: got rid of unneeded imports.
Posted by ok...@apache.org.
got rid of unneeded imports.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/710bcdba
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/710bcdba
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/710bcdba
Branch: refs/heads/tp32
Commit: 710bcdba20b65ad33aa4af4b0792cabae9c9e1c8
Parents: e033e3c
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Apr 13 10:56:54 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Apr 13 10:56:54 2017 -0600
----------------------------------------------------------------------
.../traversal/strategy/optimization/RepeatUnrollStrategy.java | 5 -----
1 file changed, 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/710bcdba/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
index bdde1a1..d97ce1e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
@@ -20,7 +20,6 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Scope;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
@@ -32,10 +31,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
[4/4] tinkerpop git commit: updated CHANGELOG with LambdaHolder note.
Posted by ok...@apache.org.
updated CHANGELOG with LambdaHolder note.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5ff3e433
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5ff3e433
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5ff3e433
Branch: refs/heads/tp32
Commit: 5ff3e43330dfe9869947e354e77f2d4cd542996c
Parents: 3b22c90
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 14 09:32:40 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 14 09:32:40 2017 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ff3e433/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 1e7be59..21c58ee 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,7 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Fixed a bug in `RepeatUnrollStrategy` where `LoopsStep` should invalidate the strategy's application.
+* Fixed a bug in `RepeatUnrollStrategy` where `LoopsStep` and `LambdaHolder` should invalidate the strategy's application.
* Deprecated `authentication.className` setting in favor of using `authentication.authenticator`.
* Added `authentication.authenticationHandler` setting.
* Added abstraction to authorization to allow users to plug in their own `AbstractAuthorizationHandler` implementations.
[3/4] tinkerpop git commit: added LambdaHolder to the mix as its
better to just have it logically sound then have 'side leak' potentials.
Posted by ok...@apache.org.
added LambdaHolder to the mix as its better to just have it logically sound then have 'side leak' potentials.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3b22c909
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3b22c909
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3b22c909
Branch: refs/heads/tp32
Commit: 3b22c90969c56a754d8ba65f92857de95da03bd2
Parents: 710bcdb
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 14 07:49:41 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 14 07:49:41 2017 -0600
----------------------------------------------------------------------
.../strategy/optimization/RepeatUnrollStrategy.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3b22c909/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
index d97ce1e..078e749 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsStep;
@@ -31,6 +32,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -38,6 +43,7 @@ public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<Traver
private static final RepeatUnrollStrategy INSTANCE = new RepeatUnrollStrategy();
protected static final int MAX_BARRIER_SIZE = 2500;
+ private static final Set<Class> INVALIDATING_STEPS = new HashSet<>(Arrays.asList(LambdaHolder.class, LoopsStep.class));
private RepeatUnrollStrategy() {
}
@@ -53,7 +59,7 @@ public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<Traver
if (null == repeatStep.getEmitTraversal() &&
repeatStep.getUntilTraversal() instanceof LoopTraversal && ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops() > 0 &&
!TraversalHelper.hasStepOfAssignableClassRecursively(Scope.global, DedupGlobalStep.class, repeatStep.getRepeatTraversal()) &&
- !TraversalHelper.hasStepOfAssignableClassRecursively(LoopsStep.class, repeatStep.getRepeatTraversal())) {
+ !TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEPS, repeatStep.getRepeatTraversal())) {
final Traversal.Admin<?, ?> repeatTraversal = repeatStep.getGlobalChildren().get(0);
repeatTraversal.removeStep(repeatTraversal.getSteps().size() - 1); // removes the RepeatEndStep
TraversalHelper.applySingleLevelStrategies(traversal, repeatTraversal, RepeatUnrollStrategy.class);