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

Marko A. Rodriguez commented on TINKERPOP3-763:
-----------------------------------------------

This is not related to {{where()}} or {{is()}}. I suspect that {{ProfileStep}} 
is not handled {{addStart()}} and {{hasNext()}} correctly.

{code}
gremlin> 
g.V().hasLabel("person").filter(values("age")).profile().cap(TraversalMetrics.METRICS_KEY)
==>Traversal Metrics
Step                                                               Count  
Traversers       Time (ms)    % Dur
=============================================================================================================
TinkerGraphStep(vertex,[~label.eq(person)])                            4        
   4           0.222    28.65
TraversalFilterStep([PropertiesStep([age],value...                     4        
   4           0.171    22.08
  PropertiesStep([age],value)                                          0        
   0           0.066
SideEffectCapStep([~metrics])                                          1        
   1           0.382    49.27
                                            >TOTAL                     -        
   -           0.776        -
{code}

{{TraversalFilterStep}} simply takes the incoming traverser, add it to the 
internal traversal, and calls {{hasNext()}} on the traversal. Moreover, for 
each call, it {{Traversal.reset()}}.

{code}
    // TraversalFilterStep
    @Override
    protected boolean filter(final Traverser.Admin<S> traverser) {
        return TraversalUtil.test(traverser, this.filterTraversal);
    }
  // TraversalUtil
public static final <S, E> boolean test(final Traverser.Admin<S> traverser, 
final Traversal.Admin<S, E> traversal) {
        final Traverser.Admin<S> split = traverser.split();
        split.setSideEffects(traversal.getSideEffects());
        split.setBulk(1l);
        traversal.reset();
        traversal.addStart(split);
        return traversal.hasNext(); // filter
    }
{code}

Look at just having an {{IdentityStep}}.

{code}gremlin> 
g.V().hasLabel("person").filter(identity().as('a')).profile().cap(TraversalMetrics.METRICS_KEY)
==>Traversal Metrics
Step                                                               Count  
Traversers       Time (ms)    % Dur
=============================================================================================================
TinkerGraphStep(vertex,[~label.eq(person)])                            4        
   4           0.184    28.36
TraversalFilterStep([IdentityStep@[a], ProfileS...                     4        
   4           0.117    18.06
  IdentityStep@[a]                                                     0        
   0           0.036
SideEffectCapStep([~metrics])                                          1        
   1           0.349    53.58
                                            >TOTAL                     -        
   -           0.651        -
{code}

> IsStep broken when profiling is enabled.
> ----------------------------------------
>
>                 Key: TINKERPOP3-763
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-763
>             Project: TinkerPop 3
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.0.0-incubating
>            Reporter: Bob Briody
>            Assignee: Marko A. Rodriguez
>            Priority: Minor
>
> The .profile()-Step and the is()-Step do not play well together. Results are 
> not emitted when profiling is enabled. 
> Perhaps this is the same type of issue that caused problems between the 
> Profile and Where/Match steps???
> {code}
> gremlin> graph = TinkerFactory.createModern()
> ==>tinkergraph[vertices:6 edges:6]
> gremlin> g = graph.traversal()
> ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
> gremlin> 
> g.V().hasLabel("person").where(both("knows").values("age").is(lt(30)))
> ==>v[1]
> ==>v[2]
> ==>v[4]
> gremlin> 
> g.V().hasLabel("person").where(both("knows").values("age").is(lt(30))).profile().cap(TraversalMetrics.METRICS_KEY)
> ==>Traversal Metrics
> Step                                                               Count  
> Traversers       Time (ms)    % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[~label.eq(person)])                            4      
>      4           8.813    27.73
> TraversalFilterStep([VertexStep(BOTH,[knows],ve...                     3      
>      3           0.597     1.88
>   VertexStep(BOTH,[knows],vertex)                                      3      
>      3           0.108
>   PropertiesStep([age],value)                                          3      
>      3           0.080
>   IsStep(lt(30))                                                       0      
>      0           0.289
> SideEffectCapStep([~metrics])                                          1      
>      1          22.367    70.39
>                                             >TOTAL                     -      
>      -          31.777        -
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to