[
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)