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

korlov 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 79268a026c IGNITE-23480 Sql. Add debug output to investigate flakiness 
of basicMultiStatementQuery test (#4586)
79268a026c is described below

commit 79268a026c6d3b4eaf00e55c8facff0906656b78
Author: korlov42 <[email protected]>
AuthorDate: Mon Oct 21 13:45:14 2024 +0300

    IGNITE-23480 Sql. Add debug output to investigate flakiness of 
basicMultiStatementQuery test (#4586)
---
 .../sql/engine/BaseSqlMultiStatementTest.java      | 33 +++++++++++++++-------
 .../sql/engine/exec/rel/AsyncRootNode.java         |  2 +-
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/BaseSqlMultiStatementTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/BaseSqlMultiStatementTest.java
index 320c407849..23ed7fc3d8 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/BaseSqlMultiStatementTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/BaseSqlMultiStatementTest.java
@@ -23,17 +23,19 @@ import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCo
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.empty;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.ignite.internal.sql.BaseSqlIntegrationTest;
 import org.apache.ignite.internal.sql.engine.property.SqlProperties;
 import org.apache.ignite.internal.sql.engine.property.SqlPropertiesHelper;
+import org.apache.ignite.internal.sql.engine.util.CursorUtils;
 import org.apache.ignite.internal.tx.InternalTransaction;
 import org.apache.ignite.internal.util.AsyncCursor.BatchedResult;
 import org.jetbrains.annotations.Nullable;
@@ -136,23 +138,34 @@ public abstract class BaseSqlMultiStatementTest extends 
BaseSqlIntegrationTest {
         BatchedResult<InternalSqlRow> res = await(cursor.requestNextAsync(1));
         assertNotNull(res);
 
+        Function<InternalSqlRow, List<Object>> rowConverter = internalRow -> {
+            List<Object> row = new ArrayList<>(internalRow.fieldCount());
+            for (int i = 0; i < internalRow.fieldCount(); i++) {
+                row.add(internalRow.get(i));
+            }
+
+            return row;
+        };
+
         if (expected.length == 0) {
             assertThat(res.items(), empty());
         } else {
             List<InternalSqlRow> items = res.items();
-            List<Object> rows = new ArrayList<>(items.size());
-            for (InternalSqlRow item : items) {
-                List<Object> row = new ArrayList<>(item.fieldCount());
-                for (int i = 0; i < item.fieldCount(); i++) {
-                    row.add(item.get(i));
-                }
-                rows.add(row);
-            }
+            List<Object> rows = items.stream()
+                    .map(rowConverter)
+                    .collect(Collectors.toList());
 
             assertEquals(List.of(List.of(expected)), rows);
         }
 
-        assertFalse(res.hasMore());
+        if (res.hasMore()) {
+            List<Object> remainingRows = CursorUtils.getAllFromCursor(cursor)
+                    .stream()
+                    .map(rowConverter)
+                    .collect(Collectors.toList());
+
+            fail("Cursor must not have more data, but was: " + remainingRows);
+        }
 
         cursor.closeAsync();
     }
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AsyncRootNode.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AsyncRootNode.java
index 20b42ce50c..26e5fb7bfd 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AsyncRootNode.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AsyncRootNode.java
@@ -242,7 +242,7 @@ public class AsyncRootNode<InRowT, OutRowT> implements 
Downstream<InRowT>, Async
 
         if (waiting == 0) {
             source.request(waiting = IN_BUFFER_SIZE);
-        } else if (waiting == -1 && buff.isEmpty()) {
+        } else if (!hasMoreRows) {
             closeAsync();
         }
     }

Reply via email to