This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch repeatLimit in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c7f5c06a25b8f1618214e911f737f800430be76c Author: Andrea Child <[email protected]> AuthorDate: Wed Sep 3 18:09:53 2025 -0700 Fixed standard algo. --- .../process/traversal/step/branch/RepeatStep.java | 8 +++--- .../traversal/step/filter/RangeGlobalStep.java | 31 ++++++++++------------ .../process/traversal/step/map/VertexStep.java | 9 +------ .../tinkergraph/structure/TinkerGraphPlayTest.java | 2 +- 4 files changed, 20 insertions(+), 30 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java index 97533940df..b76c3a6378 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java @@ -371,11 +371,11 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); final Traverser.Admin<S> start = this.starts.next(); - System.out.printf("RepeatEndStep.computerAlgorithm: %s loops=%d before incrLoops%n", start.path(), start.loops()); +// System.out.printf("RepeatEndStep.computerAlgorithm: %s loops=%d before incrLoops%n", start.path(), start.loops()); start.incrLoops(); - System.out.printf("RepeatEndStep.computerAlgorithm: %s loops=%d after incrLoops%n", start.path(), start.loops()); +// System.out.printf("RepeatEndStep.computerAlgorithm: %s loops=%d after incrLoops%n", start.path(), start.loops()); if (repeatStep.doUntil(start, false)) { - System.out.printf("RepeatEndStep.computerAlgorithm: doUntil=true, calling resetLoops for %s%n", start.path()); +// System.out.printf("RepeatEndStep.computerAlgorithm: doUntil=true, calling resetLoops for %s%n", start.path()); start.resetLoops(); start.setStepId(repeatStep.getNextStep().getId()); start.addLabels(repeatStep.labels); @@ -384,7 +384,7 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav start.setStepId(repeatStep.getId()); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); - System.out.printf("RepeatEndStep.computerAlgorithm: doEmit=true, calling resetLoops for emitSplit %s%n", emitSplit.path()); +// System.out.printf("RepeatEndStep.computerAlgorithm: doEmit=true, calling resetLoops for emitSplit %s%n", emitSplit.path()); emitSplit.resetLoops(); emitSplit.setStepId(repeatStep.getNextStep().getId()); emitSplit.addLabels(repeatStep.labels); 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 50ea137f20..37f814a0d4 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 @@ -68,34 +68,31 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, @Override protected boolean filter(final Traverser.Admin<S> traverser) { - System.out.printf("Filter called: %s loops=%d%n", traverser.path(), traverser.loops()); +// System.out.printf("Filter called: %s loops=%d%n", traverser.path(), traverser.loops()); if (this.bypass) return true; // Determine which counter to use AtomicLong currentCounter = this.counter; if (usePerIterationCounters) { - // Find the parent repeat step and use its loop context - String repeatStepId = null; - int repeatLoops = 0; - + StringBuilder sb = new StringBuilder(); Traversal.Admin<?,?> t = this.traversal; while (!t.isRoot()) { TraversalParent pt = t.getParent(); Step<?, ?> ps = pt.asStep(); - if (ps.getClass().getSimpleName().equals("RepeatStep")) { - repeatStepId = ps.getId(); - if (traverser.getLoopNames().contains(repeatStepId)) { - repeatLoops = traverser.loops(repeatStepId); - } - break; + String pid = ps.getId(); + if (traverser.getLoopNames().contains(pid)) { + sb.append(pid).append(":"); + sb.append(traverser.loops(pid)).append(":"); } t = ps.getTraversal(); } - - // Create key based on repeat step and its current iteration - String iterationKey = repeatStepId + ":" + repeatLoops; + sb.append(this.getId()).append(":").append(traverser.loops()); + + // Create counter key that isolates between different repeat step contexts + String iterationKey = sb.toString(); +// Object vId = ((Vertex) traverser.get()).property("id").value(); currentCounter = perIterationCounters.computeIfAbsent(iterationKey, k -> new AtomicLong(0L)); - System.out.printf("IterationKey: %s RepeatLoops: %d Counter: %d Path: %s%n", iterationKey, repeatLoops, currentCounter.get(), traverser.path()); + // System.out.printf("IterationKey: %s Traverser: %s Path: %s Counter: %s High: %s%n", iterationKey, vId, traverser.path(), currentCounter.get(), this.high); } System.out.printf("Traverser: %s%n", traverser); @@ -238,9 +235,9 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, @Override public void addBarrier(final TraverserSet<S> barrier) { - System.out.printf("=== addBarrier called with %d traversers ===%n", barrier.size()); +// System.out.printf("=== addBarrier called with %d traversers ===%n", barrier.size()); IteratorUtils.removeOnNext(barrier.iterator()).forEachRemaining(traverser -> { - System.out.printf("Barrier traverser: %s loops=%d%n", traverser.path(), traverser.loops()); +// System.out.printf("Barrier traverser: %s loops=%d%n", traverser.path(), traverser.loops()); traverser.setSideEffects(this.getTraversal().getSideEffects()); this.addStart(traverser); }); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java index f23d17e8cf..f4d2743f24 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java @@ -70,16 +70,9 @@ public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E> implem @Override protected Iterator<E> flatMap(final Traverser.Admin<Vertex> traverser) { - Iterator<E> result = Vertex.class.isAssignableFrom(this.returnClass) ? + return Vertex.class.isAssignableFrom(this.returnClass) ? (Iterator<E>) traverser.get().vertices(this.direction, this.edgeLabels) : (Iterator<E>) traverser.get().edges(this.direction, this.edgeLabels); - - // Count results for debugging - List<E> resultList = new java.util.ArrayList<>(); - result.forEachRemaining(resultList::add); - System.out.printf("VertexStep.flatMap: traverser=%s direction=%s labels=%s results=%s%n", - traverser, this.direction, Arrays.toString(this.edgeLabels), resultList); - return resultList.iterator(); } @Override diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java index 594090b1e1..d74992dc61 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java @@ -73,7 +73,7 @@ public class TinkerGraphPlayTest { public static void setup() { g = TinkerGraph.open().traversal().withoutStrategies(RepeatUnrollStrategy.class); load(g); - g = g.withComputer(Computer.compute().workers(1)); +// g = g.withComputer(Computer.compute().workers(1)); } @Test
