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)

Reply via email to