Uploaded image for project: 'TinkerPop'
  1. TinkerPop
  2. TINKERPOP-1994

LazyBarrierStrategy fully responsible for barrier() additions

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Done
    • Affects Version/s: 3.2.9
    • Fix Version/s: 3.5.0, 3.4.11
    • Component/s: process
    • Labels:
      None

      Description

      As it stands, LazyBarrierStrategy, RepeatUnrollStrategy and PathRetractionStrategy (others??) add barrier() steps as needed - for example:

      gremlin> g.V().repeat(out().barrier()).times(2).explain()
      ==>Traversal Explanation
      ===============================================================================================================================================================================================
      Original Traversal                 [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      
      ConnectiveStrategy           [D]   [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      MatchPredicateStrategy       [O]   [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      FilterRankingStrategy        [O]   [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      InlineFilterStrategy         [O]   [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[]), RepeatStep([VertexStep(OUT,vertex), NoOpBarrierStep, RepeatEndStep],until(loops(2)),emit(false))]
      RepeatUnrollStrategy         [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      PathRetractionStrategy       [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      CountStrategy                [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      LazyBarrierStrategy          [O]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      TinkerGraphCountStrategy     [P]   [GraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      ProfileStrategy              [F]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      
      Final Traversal                    [TinkerGraphStep(vertex,[]), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500), VertexStep(OUT,vertex), NoOpBarrierStep, NoOpBarrierStep(2500)]
      

      We should centralize the logic for this in LazyBarrierStrategy and remove it from other strategies. By keeping the logic in a single place we can (1) ensure the best implementation - note in the above example, we're getting extra barrier() steps (2) users can be assured that removing the single LazyBarrierStrategy will remove all automated barrier() applications.

      This isn't a breaking change, but it could change traversal behavior I suppose - perhaps this goes just to 3.4.0.......

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                spmallette Stephen Mallette
                Reporter:
                spmallette Stephen Mallette
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: