Liu-Delin created TINKERPOP-2475:
------------------------------------
Summary: Barrier step touches one more element of next loop
Key: TINKERPOP-2475
URL: https://issues.apache.org/jira/browse/TINKERPOP-2475
Project: TinkerPop
Issue Type: Bug
Components: process
Affects Versions: 3.4.8
Reporter: Liu-Delin
This bug will preload one more element in barrier action. For example, if we
have 4 vertices, and we have a barrier(2) step, we expect to get the first 2 in
a barrier then the last 2 in another barrier loop. But when we get the first 2
vertices, the third one has already been loaded.
The root cause is below code:
{code:java}
@Override
public void processAllStarts() {
while (this.starts.hasNext() && (this.maxBarrierSize == Integer.MAX_VALUE
|| this.barrier.size() < this.maxBarrierSize)) {
final Traverser.Admin<S> traverser = this.starts.next();
traverser.setStepId(this.getNextStep().getId()); // when barrier is
reloaded, the traversers should be at the next step
this.barrier.add(traverser);
}
}
{code}
In while loop, we use this.starts.hasNext() at first, and it will cause the
vertex loading action. It will affect the performance when the vertex is saved
in DB instead of memory.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)