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 2015/05/08 19:20:38 UTC
incubator-tinkerpop git commit: Revert "TraversalVertexProgram will
delay traversal compilation until the first vertex is processed so it can
compile against the Vertex.graph()."
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 6a198f21e -> e99a57b23
Revert "TraversalVertexProgram will delay traversal compilation until the first vertex is processed so it can compile against the Vertex.graph()."
This reverts commit 6a198f21ebb8cce85ff37d97c440c70a805a5165.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e99a57b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e99a57b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e99a57b2
Branch: refs/heads/master
Commit: e99a57b23b510fd92ab752ce551256a87d11f927
Parents: 6a198f2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 11:20:29 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 11:20:29 2015 -0600
----------------------------------------------------------------------
.../traversal/TraversalVertexProgram.java | 45 +++++++-------------
.../mapreduce/TraverserMapReduce.java | 3 +-
.../process/traversal/step/map/GroupStep.java | 4 +-
.../step/sideEffect/AggregateStep.java | 2 +-
.../sideEffect/GroupCountSideEffectStep.java | 2 +-
.../step/sideEffect/GroupSideEffectStep.java | 4 +-
.../traversal/step/sideEffect/StoreStep.java | 2 +-
7 files changed, 27 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index bc63328..4f630c6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -99,20 +99,29 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
* @param configuration The configuration containing the public static TRAVERSAL_SUPPLIER key.
* @return the traversal supplier in the configuration
*/
- public static Traversal.Admin<?, ?> getTraversal(final Configuration configuration) {
- return VertexProgram.<TraversalVertexProgram>createVertexProgram(configuration).getTraversal();
+ public static Supplier<Traversal.Admin<?, ?>> getTraversalSupplier(final Configuration configuration) {
+ return LambdaHolder.<Supplier<Traversal.Admin<?, ?>>>loadState(configuration, TraversalVertexProgram.TRAVERSAL_SUPPLIER).get();
}
public Traversal.Admin<?, ?> getTraversal() {
- this.compileTraversal(Optional.empty());
return this.traversal;
}
@Override
public void loadState(final Configuration configuration) {
this.traversalSupplier = LambdaHolder.loadState(configuration, TRAVERSAL_SUPPLIER);
- if (null == this.traversalSupplier)
+ if (null == this.traversalSupplier) {
throw new IllegalArgumentException("The configuration does not have a traversal supplier");
+ }
+ this.traversal = this.traversalSupplier.get().get();
+ if (!this.traversal.isLocked()) this.traversal.applyStrategies();
+ ((ComputerResultStep) this.traversal.getEndStep()).byPass();
+ this.traversalMatrix = new TraversalMatrix<>(this.traversal);
+ for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
+ this.mapReducers.add(mapReducer.getMapReduce());
+ }
+ if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
+ this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
}
@Override
@@ -133,7 +142,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
@Override
public void execute(final Vertex vertex, final Messenger<TraverserSet<?>> messenger, final Memory memory) {
- this.compileTraversal(Optional.of(vertex));
this.traversal.getSideEffects().setLocalVertex(vertex);
if (memory.isInitialIteration()) { // ITERATION 1
final TraverserSet<Object> haltedTraversers = new TraverserSet<>();
@@ -202,7 +210,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
@Override
public Set<MapReduce> getMapReducers() {
- this.compileTraversal(Optional.<Vertex>empty());
return this.mapReducers;
}
@@ -215,10 +222,8 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
public TraversalVertexProgram clone() {
try {
final TraversalVertexProgram clone = (TraversalVertexProgram) super.clone();
- if (null != this.traversal) {
- clone.traversal = this.traversal.clone();
- clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
- }
+ clone.traversal = this.traversal.clone();
+ clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
return clone;
} catch (final CloneNotSupportedException e) {
throw new IllegalStateException(e.getMessage(), e);
@@ -237,7 +242,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
@Override
public String toString() {
- final String traversalString = this.getTraversal().toString().substring(1);
+ final String traversalString = this.traversal.toString().substring(1);
return StringFactory.vertexProgramString(this, traversalString.substring(0, traversalString.length() - 1));
}
@@ -262,24 +267,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
return traversal;
}
- private void compileTraversal(final Optional<Vertex> currentVertex) {
- if (null != this.traversal)
- return;
-
- this.traversal = this.traversalSupplier.get().get();
- if (!this.traversal.isLocked()) {
- if (currentVertex.isPresent()) this.traversal.setGraph(currentVertex.get().graph());
- this.traversal.applyStrategies();
- }
- ((ComputerResultStep) this.traversal.getEndStep()).byPass();
- this.traversalMatrix = new TraversalMatrix<>(this.traversal);
- for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
- this.mapReducers.add(mapReducer.getMapReduce());
- }
- if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
- this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
- }
-
//////////////
public static Builder build() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
index 819c038..3e38325 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -57,7 +58,7 @@ public final class TraverserMapReduce extends StaticMapReduce<Comparable, Object
@Override
public void loadState(final Configuration configuration) {
- this.traversal = TraversalVertexProgram.getTraversal(configuration);
+ this.traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
final Step endStep = this.traversal.getEndStep().getPreviousStep(); // don't get the ComputerResultStep
this.comparator = Optional.ofNullable(endStep instanceof OrderGlobalStep ? new ChainedComparator<Comparable>(((OrderGlobalStep) endStep).getComparators()) : null);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 96b58fd..2dc1be6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -211,7 +211,9 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
@Override
public void loadState(final Configuration configuration) {
this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
- final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
+ final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+ if (!traversal.isLocked())
+ traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
final GroupStep groupStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
this.reduceTraversal = groupStep.getReduceTraversal();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index 27607c7..3ce80a5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -132,7 +132,7 @@ public final class AggregateStep<S> extends CollectingBarrierStep<S> implements
@Override
public void loadState(final Configuration configuration) {
this.sideEffectKey = configuration.getString(AGGREGATE_STEP_SIDE_EFFECT_KEY);
- this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+ this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index 2578c77..de88730 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -129,7 +129,7 @@ public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> impl
@Override
public void loadState(final Configuration configuration) {
this.sideEffectKey = configuration.getString(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
- this.mapSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
+ this.mapSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index ec89349..57fbc6f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -190,7 +190,9 @@ public final class GroupSideEffectStep<S, K, V, R> extends SideEffectStep<S> imp
public void loadState(final Configuration configuration) {
this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
- final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
+ final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+ if (!traversal.isLocked())
+ traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
final GroupSideEffectStep groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
this.reduceTraversal = groupSideEffectStep.getReduceTraversal();
this.mapSupplier = traversal.getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index d0b3e7d..3c1a979 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -130,7 +130,7 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
@Override
public void loadState(final Configuration configuration) {
this.sideEffectKey = configuration.getString(STORE_STEP_SIDE_EFFECT_KEY);
- this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+ this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
}
@Override