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 2016/02/25 18:40:47 UTC
incubator-tinkerpop git commit: RangeGlobalStep is now computing in
TraversalVertexProgram. Will slowly dissect away the end-steps of
TraverserMapReduce such that we have a pure OLTP/OLAP model within
TraversalVertexProgram.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1166 aae891038 -> d1812f806
RangeGlobalStep is now computing in TraversalVertexProgram. Will slowly dissect away the end-steps of TraverserMapReduce such that we have a pure OLTP/OLAP model within TraversalVertexProgram.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/d1812f80
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/d1812f80
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/d1812f80
Branch: refs/heads/TINKERPOP-1166
Commit: d1812f806cd360ce5716a620413a28938ef80ab6
Parents: aae8910
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Feb 25 10:40:40 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Feb 25 10:40:40 2016 -0700
----------------------------------------------------------------------
.../traversal/TraversalVertexProgram.java | 28 ++++++---
.../computer/traversal/TraverserExecutor.java | 9 +++
.../mapreduce/TraverserMapReduce.java | 12 +---
.../process/traversal/step/GraphComputing.java | 4 +-
.../traversal/step/filter/RangeGlobalStep.java | 61 +++++++++++++++++---
.../step/sideEffect/SideEffectCapStep.java | 11 +---
.../ComputerVerificationStrategy.java | 3 +-
7 files changed, 89 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/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 9d7be24..70dbf94 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
@@ -36,6 +36,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
@@ -119,14 +120,16 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
this.mapReducers.add(mapReducer.getMapReduce());
this.memoryComputeKeys.add(MemoryComputeKey.of(mapReducer.getMapReduce().getMemoryKey(), MemoryComputeKey.setOperator(), false, false));
}
- if (!(this.traversal.get().getEndStep() instanceof SideEffectCapStep) && !(this.traversal.get().getEndStep() instanceof ReducingBarrierStep)) {
+ if (!(this.traversal.get().getEndStep() instanceof SideEffectCapStep) && !(this.traversal.get().getEndStep() instanceof ReducingBarrierStep) && !(this.traversal.get().getEndStep() instanceof RangeGlobalStep)) {
this.mapReducers.add(new TraverserMapReduce(this.traversal.get()));
- this.memoryComputeKeys.add(MemoryComputeKey.of(TraverserMapReduce.TRAVERSERS, MemoryComputeKey.setOperator(), false, false));
}
- for (final GraphComputing graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, this.traversal.get())) {
+
+ for (final GraphComputing<?> graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, this.traversal.get())) {
graphComputing.getMemoryComputeKey().ifPresent(this.memoryComputeKeys::add);
- graphComputing.getMemoryComputeKey().ifPresent(x -> this.sideEffectKeys.add(x.getKey())); // TODO: when no more MapReducers, you can remove this
+ graphComputing.getMemoryComputeKey().ifPresent(x -> this.sideEffectKeys.add(x.getKey())); // TODO: when no more MapReducers, you can remove thisi
}
+
+ this.memoryComputeKeys.add(MemoryComputeKey.of(TraverserMapReduce.TRAVERSERS, MemoryComputeKey.setOperator(), false, false));
}
@Override
@@ -141,6 +144,9 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
for (final ReducingBarrierStep<?, ?> reducingBarrierStep : TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, this.traversal.get())) {
memory.set(ReducingBarrierStep.REDUCING, reducingBarrierStep.getSeedSupplier().get());
}
+ for (final RangeGlobalStep<?> reducingBarrierStep : TraversalHelper.getStepsOfAssignableClassRecursively(RangeGlobalStep.class, this.traversal.get())) {
+ memory.set(reducingBarrierStep.getId(), new TraverserSet<>());
+ }
}
@Override
@@ -194,9 +200,17 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
public boolean terminate(final Memory memory) {
final boolean voteToHalt = memory.<Boolean>get(VOTE_TO_HALT);
if (voteToHalt) {
- for (final GraphComputing graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, this.traversal.get())) {
- graphComputing.getMemoryComputeKey().ifPresent(key -> {
- memory.set(key.getKey(), graphComputing.generateFinalResult(memory.get(key.getKey())));
+ for (final GraphComputing<Object> graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, this.traversal.get())) {
+ graphComputing.getMemoryComputeKey().ifPresent(memoryKey -> {
+ final String key = memoryKey.getKey();
+ if (memory.exists(key)) {
+ if(graphComputing instanceof RangeGlobalStep) {
+ memory.set(TraverserMapReduce.TRAVERSERS, ((TraverserSet)graphComputing.generateFinalResult(memory.get(key))).iterator());
+ } else {
+ memory.set(key, graphComputing.generateFinalResult(memory.get(key)));
+ }
+
+ }
});
}
return true;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
index 4660183..18bf48f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Messenger;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
@@ -107,6 +108,14 @@ public final class TraverserExecutor {
private static void drainStep(final Step<?, ?> step, final TraverserSet<?> aliveTraversers, final TraverserSet<?> haltedTraversers, final Memory memory) {
if (step instanceof ReducingBarrierStep) {
memory.add(ReducingBarrierStep.REDUCING, step.next().get());
+ } else if (step instanceof RangeGlobalStep) {
+ ((RangeGlobalStep) step).setBypass(true);
+ final TraverserSet<?> traverserSet = new TraverserSet<>();
+ step.forEachRemaining(traverser -> {
+ traverser.asAdmin().detach();
+ traverserSet.add((Traverser.Admin) traverser);
+ });
+ memory.add(step.getId(), traverserSet);
} else {
step.forEachRemaining(traverser -> {
if (traverser.asAdmin().isHalted()) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/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 a0245aa..77eb344 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
@@ -22,13 +22,11 @@ import org.apache.commons.configuration.Configuration;
import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
@@ -57,7 +55,6 @@ public final class TraverserMapReduce implements MapReduce<Comparable, Traverser
private Comparator<Comparable> comparator = null;
private CollectingBarrierStep<?> collectingBarrierStep = null;
private boolean attachHaltedTraverser = false;
- private RangeGlobalStep<?> rangeGlobalStep = null;
private TailGlobalStep<?> tailGlobalStep = null;
private boolean dedupGlobal = false;
@@ -96,8 +93,6 @@ public final class TraverserMapReduce implements MapReduce<Comparable, Traverser
this.attachHaltedTraverser = ((TraversalParent) this.collectingBarrierStep).getLocalChildren().stream().filter(TraversalHelper::isBeyondElementId).findAny().isPresent();
}
}
- if (traversalEndStep instanceof RangeGlobalStep)
- this.rangeGlobalStep = ((RangeGlobalStep) traversalEndStep).clone();
if (traversalEndStep instanceof TailGlobalStep)
this.tailGlobalStep = ((TailGlobalStep) traversalEndStep).clone();
if (traversalEndStep instanceof DedupGlobalStep)
@@ -107,7 +102,7 @@ public final class TraverserMapReduce implements MapReduce<Comparable, Traverser
@Override
public boolean doStage(final Stage stage) {
- return stage.equals(Stage.MAP) || null != this.collectingBarrierStep || null != this.rangeGlobalStep || null != this.tailGlobalStep || this.dedupGlobal;
+ return stage.equals(Stage.MAP) || null != this.collectingBarrierStep || null != this.tailGlobalStep || this.dedupGlobal;
}
@Override
@@ -161,11 +156,6 @@ public final class TraverserMapReduce implements MapReduce<Comparable, Traverser
}
this.collectingBarrierStep.barrierConsumer((TraverserSet) traverserSet);
return (Iterator) traverserSet.iterator();
- } else if (null != this.rangeGlobalStep) {
- final RangeGlobalStep<?> rangeGlobalStep = this.rangeGlobalStep;
- rangeGlobalStep.setBypass(false);
- rangeGlobalStep.addStarts(IteratorUtils.map(keyValues, keyValue -> (Traverser) keyValue.getValue()));
- return (Iterator) rangeGlobalStep;
} else if (null != this.tailGlobalStep) {
final TailGlobalStep<?> tailGlobalStep = this.tailGlobalStep;
tailGlobalStep.setBypass(false);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
index 941681f..3904d74 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
@@ -25,7 +25,7 @@ import java.util.Optional;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public interface GraphComputing {
+public interface GraphComputing<R> {
public void onGraphComputer();
@@ -33,7 +33,7 @@ public interface GraphComputing {
return Optional.empty();
}
- public default Object generateFinalResult(final Object a) {
+ public default R generateFinalResult(final R a) {
return a;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
index e270204..bf64761 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
@@ -18,28 +18,34 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
import org.apache.tinkerpop.gremlin.process.traversal.step.Ranging;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import java.io.Serializable;
import java.util.Collections;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BinaryOperator;
/**
* @author Bob Briody (http://bobbriody.com)
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, Bypassing {
+public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, GraphComputing<TraverserSet>, Bypassing {
- private final long low;
+ private long low;
private final long high;
private AtomicLong counter = new AtomicLong(0l);
- private boolean bypass = false;
+ private boolean bypass;
public RangeGlobalStep(final Traversal.Admin traversal, final long low, final long high) {
super(traversal);
@@ -50,10 +56,6 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
this.high = high;
}
- public void setBypass(final boolean bypass) {
- this.bypass = bypass;
- }
-
@Override
protected boolean filter(final Traverser.Admin<S> traverser) {
if (this.bypass) return true;
@@ -99,10 +101,12 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
return StringFactory.stepString(this, this.low, this.high);
}
+ @Override
public long getLowRange() {
return this.low;
}
+ @Override
public long getHighRange() {
return this.high;
}
@@ -116,11 +120,52 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
@Override
public int hashCode() {
- return super.hashCode() ^ Long.hashCode(this.low) ^ Long.hashCode(this.high) ^ Boolean.hashCode(this.bypass);
+ return super.hashCode() ^ Long.hashCode(this.low) ^ Long.hashCode(this.high);
}
@Override
public Set<TraverserRequirement> getRequirements() {
return Collections.singleton(TraverserRequirement.BULK);
}
+
+ @Override
+ public void onGraphComputer() {
+
+ }
+
+ @Override
+ public Optional<MemoryComputeKey> getMemoryComputeKey() {
+ return Optional.of(MemoryComputeKey.of(this.getId(), new RangeBiOperator(this.high), false, true));
+ }
+
+ @Override
+ public TraverserSet generateFinalResult(final TraverserSet traverserSet) {
+ final TraverserSet resultSet = new TraverserSet();
+ this.addStarts(traverserSet.iterator());
+ this.forEachRemaining(t -> resultSet.add(t.asAdmin()));
+ return resultSet;
+ }
+
+ @Override
+ public void setBypass(final boolean bypass) {
+ this.bypass = bypass;
+ }
+
+ ////////////////
+
+ public static final class RangeBiOperator implements BinaryOperator<TraverserSet>, Serializable {
+
+ private final long highRange;
+
+ public RangeBiOperator(final long highRange) {
+ this.highRange = highRange;
+ }
+
+ @Override
+ public TraverserSet apply(final TraverserSet mutatingSeed, final TraverserSet set) {
+ if (mutatingSeed.size() < this.highRange)
+ mutatingSeed.addAll(set);
+ return mutatingSeed;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
index 7929297..1a973a3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -37,7 +36,7 @@ import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class SideEffectCapStep<S, E> extends SupplyingBarrierStep<S, E> implements ByModulating, GraphComputing {
+public final class SideEffectCapStep<S, E> extends SupplyingBarrierStep<S, E> implements GraphComputing {
private List<String> sideEffectKeys;
private transient Map<String, GraphComputing> sideEffectFinalizer;
@@ -80,7 +79,7 @@ public final class SideEffectCapStep<S, E> extends SupplyingBarrierStep<S, E> im
if (!this.onGraphComputer && null == this.sideEffectFinalizer) {
this.sideEffectFinalizer = new HashMap<>();
for (final String key : this.sideEffectKeys) {
- for (final GraphComputing graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, TraversalHelper.getRootTraversal(this.getTraversal()))) {
+ for (final GraphComputing<?> graphComputing : TraversalHelper.getStepsOfAssignableClassRecursively(GraphComputing.class, TraversalHelper.getRootTraversal(this.getTraversal()))) {
if (graphComputing.getMemoryComputeKey().isPresent() && graphComputing.getMemoryComputeKey().get().getKey().equals(key)) {
this.sideEffectFinalizer.put(key, graphComputing);
}
@@ -120,12 +119,6 @@ public final class SideEffectCapStep<S, E> extends SupplyingBarrierStep<S, E> im
return sideEffects;
}
- // TODO: either expand or make this a strategy
- @Override
- public void modulateBy(final Traversal.Admin<?, ?> traversal) throws UnsupportedOperationException {
- ((ByModulating) this.getPreviousStep()).modulateBy(traversal);
- }
-
@Override
public void onGraphComputer() {
this.onGraphComputer = true;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d1812f80/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
index aefe44c..ca61103 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
@@ -65,7 +65,6 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg
ReducingBarrierStep.class,
SupplyingBarrierStep.class,
OrderGlobalStep.class,
- RangeGlobalStep.class,
TailGlobalStep.class,
DedupGlobalStep.class));
@@ -114,7 +113,7 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg
throw new VerificationException("The final CollectingBarrierStep can not operate on edges or their properties:" + endStep, traversal);
}
///
- if (endStep instanceof RangeGlobalStep || endStep instanceof TailGlobalStep || endStep instanceof DedupGlobalStep)
+ if (endStep instanceof TailGlobalStep || endStep instanceof DedupGlobalStep)
((Bypassing) endStep).setBypass(true);
if (endStep instanceof DedupGlobalStep && !((DedupGlobalStep) endStep).getScopeKeys().isEmpty())
throw new VerificationException("Path history de-duplication is not possible in GraphComputer:" + endStep, traversal);