You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Marko A. Rodriguez (JIRA)" <ji...@apache.org> on 2016/04/28 18:53:12 UTC
[jira] [Commented] (TINKERPOP-1281) Memory.HALTED_TRAVERSER
transience is not sound.
[ https://issues.apache.org/jira/browse/TINKERPOP-1281?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15262499#comment-15262499 ]
Marko A. Rodriguez commented on TINKERPOP-1281:
-----------------------------------------------
I think the solution to this problem is to simply always have {{Memory.HALTED_TRAVERSERS}} NOT be transient. If there are traversers halted, great. If not, its an empty set. We still need the concept of {{this.keepDistributedHaltedTraversers}}, but it shouldn't be used to regulate {{Memory.HALTED_TRAVERSERS}} transience.
We should then have a test case in {{ProgramTest}} that have a dummy {{VertexProgram}} that ensures proper propagation of across OLAP jobs.
> Memory.HALTED_TRAVERSER transience is not sound.
> ------------------------------------------------
>
> Key: TINKERPOP-1281
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1281
> Project: TinkerPop
> Issue Type: Bug
> Components: process
> Affects Versions: 3.2.0-incubating
> Reporter: Marko A. Rodriguez
>
> {code}
> g.V().out().program(xxx)
> {code}
> The above {{xxx}} VertexProgram will have access to the {{VertexProperty.HALTED_TRAVERSERS}} from {{out()}}.
> {code}
> g.V().out().groupCount().program(yyy)
> {code}
> The above {{yyy}} VertexProgram will not have access to the {{Memory.HALTED_TRAVERSERS}} from {{groupCount()}} (barrier) because it will be declared transient.
> ---------
> [10:32 AM] Marko Rodriguez: this.memoryComputeKeys.add(MemoryComputeKey.of(HALTED_TRAVERSERS, Operator.addAll, false, this.keepDistributedHaltedTraversers)); // only keep if it will be preserved
> [10:32 AM] Daniel Kuppitz: when is keepDistributedHaltedTraversers false?
> [10:33 AM] Marko Rodriguez: this.keepDistributedHaltedTraversers =
> !(this.traversal.get().getParent().asStep().getNextStep() instanceof ComputerResultStep || // if its just going to stream it out, don't distribute
> this.traversal.get().getParent().asStep().getNextStep() instanceof EmptyStep || // same as above, but if using TraversalVertexProgramStep directly
> (this.traversal.get().getParent().asStep().getNextStep() instanceof ProfileStep && // same as above, but needed for profiling
> this.traversal.get().getParent().asStep().getNextStep().getNextStep() instanceof ComputerResultStep));
> Show more
> given that ProgramVertexProgramStep is next, it will false and thus, Memory.HALTED_TRAVERSERS is transient and is erased.
> [10:34 AM] Marko Rodriguez: I think that is the problem.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)