You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Ken Hu (Jira)" <ji...@apache.org> on 2025/03/12 02:06:00 UTC

[jira] [Updated] (TINKERPOP-3141) TinkerTransactionGraph doesn't allow deleting and adding element back in same transaction

     [ https://issues.apache.org/jira/browse/TINKERPOP-3141?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ken Hu updated TINKERPOP-3141:
------------------------------
    Description: 
Originally discovered from:

https://stackoverflow.com/questions/79467860/issue-with-transactions-in-local-tinkerpop-gremlin-setup
[https://groups.google.com/g/gremlin-users/c/NRwb4xy2eXs]

 

An element with the same Id cannot be dropped and then added back in the same transaction.

 
{code:java}
@Test
public void shouldAllowDropThenInsert() throws InterruptedException {
    final TinkerTransactionGraph g = TinkerTransactionGraph.open();
    final GraphTraversalSource gtx = g.tx().begin();

    gtx.addV().property(T.id, 1).next();
    gtx.tx().commit();

    GraphTraversalSource gtx2 = g.tx().begin();

    gtx2.V().drop().iterate();
    gtx.addV().property(T.id, 1).next();
    gtx2.tx().commit();

    assertEquals(1, g.getVertices().size());
} {code}
throws a TransactionException.

This occurs when the transaction attempts to get updated, the old vertex"isDeletedInTx" but has a different txNumber than the newly created vertex.

[https://github.com/apache/tinkerpop/blob/3.7.3/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerElementContainer.java#L185] should probably allow this case through.

 

  was:
An element with the same Id cannot be dropped and then added back in the same transaction.

 
{code:java}
@Test
public void shouldAllowDropThenInsert() throws InterruptedException {
    final TinkerTransactionGraph g = TinkerTransactionGraph.open();
    final GraphTraversalSource gtx = g.tx().begin();

    gtx.addV().property(T.id, 1).next();
    gtx.tx().commit();

    GraphTraversalSource gtx2 = g.tx().begin();

    gtx2.V().drop().iterate();
    gtx.addV().property(T.id, 1).next();
    gtx2.tx().commit();

    assertEquals(1, g.getVertices().size());
} {code}
throws a TransactionException.

This occurs when the transaction attempts to get updated, the old vertex"isDeletedInTx" but has a different txNumber than the newly created vertex.

[https://github.com/apache/tinkerpop/blob/3.7.3/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerElementContainer.java#L185] should probably allow this case through.

 


> TinkerTransactionGraph doesn't allow deleting and adding element back in same transaction
> -----------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-3141
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3141
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: tinkergraph
>    Affects Versions: 3.7.3
>            Reporter: Ken Hu
>            Priority: Major
>
> Originally discovered from:
> https://stackoverflow.com/questions/79467860/issue-with-transactions-in-local-tinkerpop-gremlin-setup
> [https://groups.google.com/g/gremlin-users/c/NRwb4xy2eXs]
>  
> An element with the same Id cannot be dropped and then added back in the same transaction.
>  
> {code:java}
> @Test
> public void shouldAllowDropThenInsert() throws InterruptedException {
>     final TinkerTransactionGraph g = TinkerTransactionGraph.open();
>     final GraphTraversalSource gtx = g.tx().begin();
>     gtx.addV().property(T.id, 1).next();
>     gtx.tx().commit();
>     GraphTraversalSource gtx2 = g.tx().begin();
>     gtx2.V().drop().iterate();
>     gtx.addV().property(T.id, 1).next();
>     gtx2.tx().commit();
>     assertEquals(1, g.getVertices().size());
> } {code}
> throws a TransactionException.
> This occurs when the transaction attempts to get updated, the old vertex"isDeletedInTx" but has a different txNumber than the newly created vertex.
> [https://github.com/apache/tinkerpop/blob/3.7.3/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerElementContainer.java#L185] should probably allow this case through.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)