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.
      */

Reply via email to