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

github-merge-queue[bot] pushed a commit to branch 
gh-readonly-queue/dev/pr-12329-c24e46adfd2efc32e2aa6b37caf8eb808dc491ed
in repository https://gitbox.apache.org/repos/asf/seatunnel.git

commit c191297c955945b62a6eb2cb7de581bfc5784646
Author: Daniel <[email protected]>
AuthorDate: Fri Sep 18 14:57:52 2026 +0000

    [Test][E2E] Retry NebulaPool init to absorb graphd's status-vs-RPC-port 
startup race (#12329)
    
    Co-authored-by: DanielLeens <[email protected]>
    Co-authored-by: Claude Sonnet 5 <[email protected]>
---
 .../e2e/connector/nebulagraph/NebulaGraphIT.java   | 33 +++++++++++++++++-----
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-nebulagraph-e2e/src/test/java/org/apache/seatunnel/e2e/connector/nebulagraph/NebulaGraphIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-nebulagraph-e2e/src/test/java/org/apache/seatunnel/e2e/connector/nebulagraph/NebulaGraphIT.java
index cd687c6e03..f23ff4bf9c 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-nebulagraph-e2e/src/test/java/org/apache/seatunnel/e2e/connector/nebulagraph/NebulaGraphIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-nebulagraph-e2e/src/test/java/org/apache/seatunnel/e2e/connector/nebulagraph/NebulaGraphIT.java
@@ -42,7 +42,6 @@ import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class NebulaGraphIT extends TestSuiteBase implements TestResource {
 
@@ -104,13 +103,33 @@ public class NebulaGraphIT extends TestSuiteBase 
implements TestResource {
         storaged.start();
         graphd.start();
 
-        adminPool = new NebulaPool();
         NebulaPoolConfig poolConfig = new 
NebulaPoolConfig().setMaxConnSize(1).setTimeout(30000);
-        assertTrue(
-                adminPool.init(
-                        Arrays.asList(
-                                new HostAddress(graphd.getHost(), 
graphd.getMappedPort(9669))),
-                        poolConfig));
+        HostAddress graphdAddress = new HostAddress(graphd.getHost(), 
graphd.getMappedPort(9669));
+        // graphd's "/status" HTTP endpoint (waited on above via the 
container's own wait
+        // strategy) can start answering slightly before its raw graph RPC 
port (9669) is ready
+        // to serve connections, so the very first NebulaPool#init call can 
transiently throw
+        // IOErrorException even though the container itself started 
successfully. Retry pool
+        // creation on a fresh NebulaPool instance instead of failing the 
whole suite on that
+        // narrow startup race; closing a pool that failed to initialize 
avoids leaking its
+        // connections across attempts.
+        Awaitility.await()
+                .atMost(30, TimeUnit.SECONDS)
+                .pollInterval(1, TimeUnit.SECONDS)
+                .until(
+                        () -> {
+                            NebulaPool candidatePool = new NebulaPool();
+                            try {
+                                if 
(!candidatePool.init(Arrays.asList(graphdAddress), poolConfig)) {
+                                    candidatePool.close();
+                                    return false;
+                                }
+                            } catch (Exception e) {
+                                candidatePool.close();
+                                return false;
+                            }
+                            adminPool = candidatePool;
+                            return true;
+                        });
         adminSession = adminPool.getSession("root", "nebula", false);
         execute("ADD HOSTS \"storaged0\":9779");
 

Reply via email to