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)