You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/05/01 16:22:00 UTC

[jira] [Commented] (TINKERPOP-2365) LazyBarrierStrategy adds a NoOpBarrierStep when profile() is present

    [ https://issues.apache.org/jira/browse/TINKERPOP-2365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17097485#comment-17097485 ] 

ASF GitHub Bot commented on TINKERPOP-2365:
-------------------------------------------

spmallette opened a new pull request #1283:
URL: https://github.com/apache/tinkerpop/pull/1283


   https://issues.apache.org/jira/browse/TINKERPOP-2365
   
   LazyBarrierStrategy was improperly adding a barrier step to the end of a traversal when profile() was called. This wasn't noticeable in testing because of an overly zealous choice to disable the strategy in testing if profile() was present. Modified the strategy to more properly handle this situation and to limit the removal of LazyBarrierStrategy to ProfileTest only.
   
   All tests pass with `docker/build.sh -t -n -i`
   
   VOTE +1


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> LazyBarrierStrategy adds a NoOpBarrierStep when profile() is present
> --------------------------------------------------------------------
>
>                 Key: TINKERPOP-2365
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2365
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.3.10
>            Reporter: Stephen Mallette
>            Priority: Minor
>
> Not sure if this needs to behave like this for any particular reason but:
> {code}
> gremlin> g.V().both().profile()
> ==>Traversal Metrics
> Step                                                               Count  Traversers       Time (ms)    % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[])                                             1           1           0.055    67.30
> VertexStep(BOTH,vertex)                                                2           2           0.012    15.51
> NoOpBarrierStep(2500)                                                  2           1           0.014    17.19
>                                             >TOTAL                     -           -           0.082        -
> {code}
> the {{NoOpBarrierStep}} doesn't get added unless {{profile()}} is present as shown in this {{explain()}}:
> {code}
> gremlin> g.V().both().explain()
> ==>Traversal Explanation
> ========================================================================================
> Original Traversal                 [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> ConnectiveStrategy           [D]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> MatchPredicateStrategy       [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> EarlyLimitStrategy           [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> FilterRankingStrategy        [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> InlineFilterStrategy         [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> RepeatUnrollStrategy         [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> CountStrategy                [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> PathRetractionStrategy       [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> LazyBarrierStrategy          [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> TinkerGraphCountStrategy     [P]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> ProfileStrategy              [F]   [TinkerGraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> Final Traversal                    [TinkerGraphStep(vertex,[]), VertexStep(BOTH,vertex)]
> {code}
> unless of course we {{explain()}} the {{profile()}} which seems weird:
> {code}
> gremlin> g.V().both().profile().explain()
> ==>Traversal Explanation
> ==========================================================================================================================================================================================================
> Original Traversal                 [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> ConnectiveStrategy           [D]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> MatchPredicateStrategy       [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> EarlyLimitStrategy           [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> FilterRankingStrategy        [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> InlineFilterStrategy         [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> RepeatUnrollStrategy         [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> CountStrategy                [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> PathRetractionStrategy       [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> LazyBarrierStrategy          [O]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), NoOpBarrierStep(2500), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> TinkerGraphCountStrategy     [P]   [GraphStep(vertex,[]), VertexStep(BOTH,vertex), NoOpBarrierStep(2500), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[]), VertexStep(BOTH,vertex), NoOpBarrierStep(2500), ProfileSideEffectStep, SideEffectCapStep([~metrics])]
> ProfileStrategy              [F]   [TinkerGraphStep(vertex,[]), ProfileStep, VertexStep(BOTH,vertex), ProfileStep, NoOpBarrierStep(2500), ProfileStep, ProfileSideEffectStep, SideEffectCapStep([~metrics]
>                                       )]
> StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[]), ProfileStep, VertexStep(BOTH,vertex), ProfileStep, NoOpBarrierStep(2500), ProfileStep, ProfileSideEffectStep, SideEffectCapStep([~metrics]
>                                       )]
> Final Traversal                    [TinkerGraphStep(vertex,[]), ProfileStep, VertexStep(BOTH,vertex), ProfileStep, NoOpBarrierStep(2500), ProfileStep, ProfileSideEffectStep, SideEffectCapStep([~metrics]
>                                       )]
> {code}
> Seems like this is a bit of a bug in the sense that I would expect {{explain()}} and {{profile()}} to examine the same working traversal up to the point of that call.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)