Pavel Pereslegin created IGNITE-27091:
-----------------------------------------

             Summary: Java thin. Rollback of client transaction on a closed 
channel should not throw exceptions
                 Key: IGNITE-27091
                 URL: https://issues.apache.org/jira/browse/IGNITE-27091
             Project: Ignite
          Issue Type: Improvement
          Components: thin clients ai3
            Reporter: Pavel Pereslegin


Currently, if the channel is closed (for example, if the node was restarted), 
the transaction rollback fails with the error "Channel is closed".
It seems like an exception shouldn't be thrown in this case. For example, this 
wouldn't be expected by a user which uses a finally block to rollback a 
transaction.

Reproducer (for RetryPolicyTest)
{code:java}
@Test
public void testTransactionRollbackOnClosedChannel() {
    initServer(reqId -> reqId % 4 == 0);
    var plc = new TestRetryPolicy();

    try (var client = getClient(plc)) {
        RecordView<Tuple> recView = client.tables().table("t").recordView();
        Transaction tx = client.transactions().begin();

        try {
            ClientLazyTransaction.ensureStarted(tx, ((TcpIgniteClient) 
client).channel()).get1().join();
            assertThrows(IgniteException.class, () -> recView.get(tx, 
Tuple.create().set("id", 1)));
        } finally {
            tx.rollback(); // fails with "Channel is closed"
        }
    }
}
{code}



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

Reply via email to