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");
