Pavel Tupitsyn created IGNITE-28106:
---------------------------------------

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


Currently, if the channel is closed (for example, if cluster 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