You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "stephen mallette (JIRA)" <ji...@apache.org> on 2015/09/09 17:54:48 UTC

[jira] [Commented] (TINKERPOP3-297) Ensure Consistent Behavior Over Deleted Elements

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

stephen mallette commented on TINKERPOP3-297:
---------------------------------------------

Deprecated {{Element.Exceptions.elementAlreadyRemoved}} and removed test enforcement for consistency in this area as it is clear that maintaining consistency across all the graph implementations is too difficult given the great disparity in how "deleted elements" are treated.  It also introduce a fair bit of complexity to the core implementations to maintain the notion of "deleted", so falling back to rely on each graph's sensibilities in this area should simplify code a fair deal.  As it stand now, implementers may choose to deal with access to deleted elements in whatever fashion best suits their graph.

This issue is "breaking" because of the removal of the following tests (which may affect implementer's {{@OptOut}} annotations:

* {{VertexPropertyTest.ExceptionConsistencyWhenVertexPropertyRemovedTest}}
* {{EdgeTest.ExceptionConsistencyWhenVertexPropertyRemovedTest}}
* {{VertexTest.ExceptionConsistencyWhenVertexRemovedTest}}

It is also considered "breaking" In that implementers should review usage of {{Element.Exceptions.elementAlreadyRemoved}}.  If the above tests were passing and they wish to keep this capability then they should consider throwing their own exception as this method will be removed at some point in the future.  Alternatively, they could simply remove code that "tracks" deletion and treat it in some other way.

For {{Neo4jGraph}} this meant completely falling back to using Neo4j handling of "deletion" - there are no checks to try to wrap up their internal handling of such things.  For {{TinkerGraph}} this meant maintaining state of deletion and using it consistently to prevent mutation of a deleted element.

> Ensure Consistent Behavior Over Deleted Elements
> ------------------------------------------------
>
>                 Key: TINKERPOP3-297
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-297
>             Project: TinkerPop 3
>          Issue Type: Improvement
>          Components: test-suite
>    Affects Versions: 3.0.1-incubating
>            Reporter: stephen mallette
>            Assignee: stephen mallette
>              Labels: breaking
>             Fix For: 3.1.0-incubating
>
>
> Better define the expected behavior when accessing deleted elements.  Return empty? How about the label? What about other attributes like in/out vertices, etc?  Throw exceptions?
> from [~mbroecheler]



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