This is an automated email from the ASF dual-hosted git repository.
alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new dd1b4394bd5 IGNITE-28489 Fix tx map cleanup on tx timeout during
initialization (#12998)
dd1b4394bd5 is described below
commit dd1b4394bd51e8f1ad0e7daac0d156feadcc609e
Author: Maksim Davydov <[email protected]>
AuthorDate: Fri Apr 10 17:14:46 2026 +0300
IGNITE-28489 Fix tx map cleanup on tx timeout during initialization (#12998)
---
.../cache/distributed/near/GridNearTxLocal.java | 2 ++
.../internal/client/thin/FunctionalTest.java | 26 ++++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index 3c79a2f9083..92479aae7be 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -4368,6 +4368,8 @@ public class GridNearTxLocal extends
GridDhtTxLocalAdapter implements GridTimeou
if (remainingTime() == -1L) {
onTimeout();
+ cctx.tm().clearThreadMap(this);
+
throw new TransactionTimeoutException(
"Failed to start transaction. Transaction is timed out
during initialization.");
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/FunctionalTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/FunctionalTest.java
index 4153ea56a82..a3cb5e82418 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/FunctionalTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/FunctionalTest.java
@@ -54,6 +54,7 @@ import org.apache.ignite.client.ClientCacheConfiguration;
import org.apache.ignite.client.ClientConnectionException;
import org.apache.ignite.client.ClientException;
import org.apache.ignite.client.ClientTransaction;
+import org.apache.ignite.client.ClientTransactions;
import org.apache.ignite.client.Config;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.client.LocalIgniteCluster;
@@ -743,6 +744,31 @@ public class FunctionalTest extends
AbstractBinaryArraysTest {
}
}
+ /** */
+ @Test
+ public void testTxResumeAfterTxTimeoutOnInitialize() {
+ IgniteConfiguration cfg =
Config.getServerConfiguration().setClientConnectorConfiguration(
+ new ClientConnectorConfiguration().setThreadPoolSize(2));
+
+ try (Ignite ignite = Ignition.start(cfg); IgniteClient client =
Ignition.startClient(getClientConfiguration())) {
+ ClientTransactions txs = client.transactions();
+
+ for (int i = 0; i < 10_000; i++) {
+ try {
+ try (ClientTransaction tx = txs.txStart(OPTIMISTIC,
SERIALIZABLE, 1)) {
+ tx.commit();
+ }
+ }
+ catch (ClientException e) {
+ assertTrue(
+ "Wrong exception: " + e.getMessage(),
+ e.getCause().getMessage().contains("timed out")
+ );
+ }
+ }
+ }
+ }
+
/**
* Test transactions.
*/