Stephen Mallette created TINKERPOP-2365:
-------------------------------------------

             Summary: profile() adds a NoOpBarrierStep
                 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


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)

Reply via email to