[
https://issues.apache.org/jira/browse/TINKERPOP-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stephen mallette reopened TINKERPOP-1035:
-----------------------------------------
sorry - guys - have to re-open this. don't think i nailed it completely and on
top of that i came up with what i think is a better way to do it that doesn't
involve the extra commit i included for {{Mutating}} traversals. if the
approach fails, i'll just close this and keep my changes as is.
> Better Consistency in Gremlin Server Transaction Management
> ------------------------------------------------------------
>
> Key: TINKERPOP-1035
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1035
> Project: TinkerPop
> Issue Type: Improvement
> Components: server
> Affects Versions: 3.1.0-incubating
> Reporter: stephen mallette
> Assignee: stephen mallette
> Fix For: 3.1.1-incubating
>
>
> For sessionless requests, Gremlin Server currently calls commit after
> iteration of results is complete. The problem is that if the user issues:
> {{g.addV()}} then a graph may not have assigned proper identifiers at that
> point (or have other issues) at the time of serialization. Gremlin Server
> also then spends time sending back results (if it can) when a call to
> {{commit()}} will ultimately fail.
> A solution that seems to work is to move the {{commit()}} to occur after eval
> but before iteration of results to the client. Moreover, if the result to be
> iterated is a {{Traversal}} then we can check if it has {{Mutating}} steps
> and if so, iterate it out first to {{List}}, call {{commit()}} and then
> iterate the {{List}}. The obvious downside is that we lose streaming in
> these cases as the result has to be held in memory.
> For now, I think we need to take the downside as there aren't any other
> solutions that work consistently across all graphs. For 3.2.x and forward we
> can think of better fixes that might introduce some breaking change.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)