Marko A. Rodriguez created TINKERPOP3-961:
---------------------------------------------
Summary: Barrier steps need to truly "barrier" in OLAP.
Key: TINKERPOP3-961
URL: https://issues.apache.org/jira/browse/TINKERPOP3-961
Project: TinkerPop 3
Issue Type: Bug
Components: process
Affects Versions: 3.1.0-incubating
Reporter: Marko A. Rodriguez
Assignee: Marko A. Rodriguez
A {{Barrier}} step works great in OLTP. It blocks until it can not longer pull
from the previous step. At which point, it drains its barrier to the right step.
Unfortunately, in OLAP which is a barrier system (BSP), the semantics are not
correct. For {{ReducingBarrierSteps}}, these MUST be the final step in the
traversal. However, for {{CollectingBarrierSteps}} (e.g. {{aggregate()}},
{{barrier()}}), the semantics are messed up. Given that OLAP works in a lock
step fashion, a {{barrier()}} will pull from the left step and will be "ready
to drain" at the end of that iteration as there is nothing left to pull. Thus,
while more traversers my come in the previous step, the {{barrier()}} has
already drained what it has gathered to subsequent step. Thus, its a "local
barrier" and not a "global barrier."
This problem is most apparent when using sacks and merging at an iteration
doesn't work. I will provide an explicit example over {{MODERN}} later.
Finally, note that this might be a way to also solve the "allow mid-traversal
barriers" problem where {{SumStep}} could be mid-traversal (i.e.
{{ReducingBarrierSteps}}).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)