This is an automated email from the ASF dual-hosted git repository.

sk0x50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new d008791f2ad IGNITE-25930 Fix ItSqlAsynchronousApiTest.cancelScript 
(#6265)
d008791f2ad is described below

commit d008791f2ad7e03e9cc892b2248af167ff6a0efd
Author: Slava Koptilin <slava.kopti...@gmail.com>
AuthorDate: Thu Jul 17 11:59:42 2025 +0300

    IGNITE-25930 Fix ItSqlAsynchronousApiTest.cancelScript (#6265)
---
 .../ignite/internal/sql/api/ItSqlApiBaseTest.java  | 24 ++++++++++++----------
 .../internal/sql/api/ItSqlAsynchronousApiTest.java |  5 ++---
 .../internal/sql/api/ItSqlSynchronousApiTest.java  |  5 ++---
 .../internal/sql/BaseSqlIntegrationTest.java       | 16 +++++++++++++--
 4 files changed, 31 insertions(+), 19 deletions(-)

diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlApiBaseTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlApiBaseTest.java
index f92bc0422f4..253a1301621 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlApiBaseTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlApiBaseTest.java
@@ -240,7 +240,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
         }
 
         // No new transactions through ddl.
-        assertEquals(0, txManager.pending());
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     /** Check correctness of implicit and explicit transactions. */
@@ -301,7 +301,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
 
         assertEquals(ROW_COUNT + 1 + 1 + 1 + 1 + 1 + 1, 
txManagerInternal.finished() - txPrevCnt);
 
-        assertEquals(0, txManagerInternal.pending());
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     /** Check correctness of explicit transaction rollback. */
@@ -552,7 +552,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
 
         assertEquals(ROW_COUNT, txManager.finished() - txPrevCnt);
         // No new transactions through ddl.
-        assertEquals(0, txManager.pending());
+        waitUntilActiveTransactionsCount(is(0));
 
         checkDml(ROW_COUNT, sql, "UPDATE TEST SET VAL0 = VAL0 + ?", 1);
 
@@ -772,7 +772,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
 
         execute(1, sql, "SELECT * FROM TEST");
 
-        assertEquals(0, txManager().pending(), "Expected no pending 
transactions");
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     /**
@@ -810,7 +810,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
             assertEquals(1, execute(sql, "SELECT ID FROM TEST WHERE ID = 
-1").result().size());
         }
 
-        assertEquals(0, txManager().pending());
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     @Test
@@ -829,9 +829,11 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
                 .build();
 
         ResultSet<?> rs = executeForRead(sql, statement);
-        assertEquals(1, txManager().pending());
+        waitUntilActiveTransactionsCount(is(1));
+
         rs.close();
-        assertEquals(0, txManager().pending(), "Expected no pending 
transactions");
+
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     @Test
@@ -973,13 +975,13 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
         expectQueryCancelled(() -> await(scriptFut));
 
         waitUntilRunningQueriesCount(is(0));
-        assertThat(txManager().pending(), is(0));
+        waitUntilActiveTransactionsCount(is(0));
 
         // Checks the exception that is thrown if a query is canceled before a 
cursor is obtained.
         expectQueryCancelled(() -> executeScript(sql, token, "SELECT 1; SELECT 
2;"));
 
         waitUntilRunningQueriesCount(is(0));
-        assertThat(txManager().pending(), is(0));
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     @Test
@@ -1009,7 +1011,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
         // Query was actually cancelled.
         waitUntilRunningQueriesCount(is(0));
         expectQueryCancelled(() -> await(f));
-        assertThat(txManager().pending(), is(0));
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     @ParameterizedTest
@@ -1056,7 +1058,7 @@ public abstract class ItSqlApiBaseTest extends 
BaseSqlIntegrationTest {
             // Query was actually cancelled.
             waitUntilRunningQueriesCount(is(0));
             expectQueryCancelled(() -> await(fut));
-            assertThat(txManager().pending(), is(0));
+            waitUntilActiveTransactionsCount(is(0));
         }
     }
 
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
index e501ae35e6d..66906a1464d 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.sql.api;
 
 import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
-import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.greaterThan;
 import static org.hamcrest.Matchers.is;
@@ -202,7 +201,7 @@ public class ItSqlAsynchronousApiTest extends 
ItSqlApiBaseTest {
         await(cancelHandle.cancelAsync());
 
         // Expect all transactions to be rolled back.
-        assertThat(txManager().pending(), is(0));
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     private void executeBatchAndCancel(Function<CancellationToken, 
CompletableFuture<long[]>> execute) throws InterruptedException {
@@ -223,7 +222,7 @@ public class ItSqlAsynchronousApiTest extends 
ItSqlApiBaseTest {
         await(cancelHandle.cancelAsync());
 
         // Expect all transactions to be rolled back.
-        waitForCondition(() -> txManager().pending() == 0, 5000);
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     private static class DrainResultSet implements Executable {
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
index 33c9950a489..696ba381f73 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.sql.api;
 
 import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
-import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.greaterThan;
 import static org.hamcrest.Matchers.is;
@@ -163,7 +162,7 @@ public class ItSqlSynchronousApiTest extends 
ItSqlApiBaseTest {
         await(cancelHandle.cancelAsync());
 
         // Expect all transactions to be rolled back.
-        assertThat(txManager().pending(), is(0));
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     private void executeBatchAndCancel(Function<CancellationToken, long[]> 
execute) throws InterruptedException {
@@ -186,7 +185,7 @@ public class ItSqlSynchronousApiTest extends 
ItSqlApiBaseTest {
         await(cancelHandle.cancelAsync());
 
         // Expect all transactions to be rolled back.
-        waitForCondition(() -> txManager().pending() == 0, 5000);
+        waitUntilActiveTransactionsCount(is(0));
     }
 
     @Override
diff --git 
a/modules/sql-engine/src/testFixtures/java/org/apache/ignite/internal/sql/BaseSqlIntegrationTest.java
 
b/modules/sql-engine/src/testFixtures/java/org/apache/ignite/internal/sql/BaseSqlIntegrationTest.java
index 4febb9446cd..ca39a5353aa 100644
--- 
a/modules/sql-engine/src/testFixtures/java/org/apache/ignite/internal/sql/BaseSqlIntegrationTest.java
+++ 
b/modules/sql-engine/src/testFixtures/java/org/apache/ignite/internal/sql/BaseSqlIntegrationTest.java
@@ -17,8 +17,10 @@
 
 package org.apache.ignite.internal.sql;
 
+import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.apache.ignite.internal.TestWrappers.unwrapIgniteImpl;
 import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertAll;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -27,7 +29,6 @@ import static org.junit.jupiter.api.Assertions.assertSame;
 
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.internal.ClusterPerClassIntegrationTest;
@@ -49,6 +50,7 @@ import org.apache.ignite.sql.ColumnMetadata;
 import org.apache.ignite.sql.IgniteSql;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.tx.IgniteTransactions;
+import org.awaitility.Awaitility;
 import org.hamcrest.Matcher;
 import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -283,13 +285,23 @@ public abstract class BaseSqlIntegrationTest extends 
ClusterPerClassIntegrationT
         SqlTestUtils.waitUntilRunningQueriesCount(queryProcessor(), matcher);
     }
 
+    /**
+     * Waits until the number of active (pending) transactions matches the 
specified matcher.
+     *
+     * @param matcher Matcher to check the number of active transactions.
+     * @throws AssertionError If after waiting the number of active 
transactions still does not match the specified matcher.
+     */
+    protected void waitUntilActiveTransactionsCount(Matcher<Integer> matcher) {
+        Awaitility.await().timeout(5, SECONDS).untilAsserted(() -> 
assertThat(txManager().pending(), matcher));
+    }
+
     protected static void gatherStatistics() {
         SqlStatisticManagerImpl statisticManager = (SqlStatisticManagerImpl) 
((SqlQueryProcessor) unwrapIgniteImpl(CLUSTER.aliveNode())
                 .queryEngine()).sqlStatisticManager();
 
         statisticManager.forceUpdateAll();
         try {
-            statisticManager.lastUpdateStatisticFuture().get(5_000, 
TimeUnit.SECONDS);
+            statisticManager.lastUpdateStatisticFuture().get(5_000, SECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException 
e) {
             throw new RuntimeException(e);
         }

Reply via email to