[ https://issues.apache.org/jira/browse/TINKERPOP-1822?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16494005#comment-16494005 ]
ASF GitHub Bot commented on TINKERPOP-1822: ------------------------------------------- Github user spmallette commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r191525536 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java --- @@ -273,11 +300,40 @@ public RepeatEndStep(final Traversal.Admin traversal) { super(traversal); } + final LinkedList<Traverser.Admin<S>> stashedStarts = new LinkedList<>(); + + private Traverser.Admin<S> nextStart(RepeatStep<S> repeatStep, boolean useDfs) { + if (!useDfs) { + return this.starts.next(); + } else { + if (this.starts.hasNext()) { + return this.starts.next(); + } else { + return this.stashedStarts.pop(); + } + } + } + + @Override + public boolean hasNext() { + return super.hasNext() || !this.stashedStarts.isEmpty(); + } + @Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); + final List<Step> steps = repeatStep.repeatTraversal.getSteps(); + final Step stepBeforeRepeatEndStep = steps.get(steps.size() - 2); + final boolean useDfs = !(stepBeforeRepeatEndStep instanceof Barrier); while (true) { - final Traverser.Admin<S> start = this.starts.next(); + final Traverser.Admin<S> start = nextStart(repeatStep, useDfs); + if (useDfs) { + final List<Traverser.Admin<S>> localStarts = new ArrayList<>(); --- End diff -- any reason you need to allocate a `List` here? could you not write directly to `stashedStarts`? > Repeat should depth first search > -------------------------------- > > Key: TINKERPOP-1822 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1822 > Project: TinkerPop > Issue Type: Improvement > Components: process > Affects Versions: 3.3.0, 3.2.6 > Reporter: Robert Dale > Priority: Major > > Perhaps optionally. > See also: > * https://groups.google.com/forum/#!topic/gremlin-users/gLSLxH_K-wE > * https://github.com/apache/tinkerpop/pull/715 -- This message was sent by Atlassian JIRA (v7.6.3#76005)