This is an automated email from the ASF dual-hosted git repository. Cole-Greer pushed a commit to branch fixFlakyTests in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 215b707f2246ff7033d4ad0f048a77f32a49be43 Author: Cole Greer <[email protected]> AuthorDate: Wed May 20 14:51:50 2026 -0700 Fix flaky transaction integration tests shouldTrackTransactionCountAccurately was racing because commitTx() and rollbackTx() returned without consuming the HTTP response. With chunked transfer encoding, the client can receive response headers before the server completes transactionManager.destroy(). Wrapping in try-with-resources ensures the full response is read, guaranteeing server-side processing is complete before asserting the count. shouldTimeoutIdleTransactionWithNoOperations used a 1ms timeout, which could expire during the beginTx() HTTP round-trip itself, causing getFirstHeader(TRANSACTION_ID) to return null and NPE. Increased to 500ms — still well below the 1000ms sleep that validates timeout behavior. --- .../server/GremlinServerHttpTransactionIntegrateTest.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpTransactionIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpTransactionIntegrateTest.java index dd61bfa1cc..ce21743c50 100644 --- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpTransactionIntegrateTest.java +++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpTransactionIntegrateTest.java @@ -96,7 +96,7 @@ public class GremlinServerHttpTransactionIntegrateTest extends AbstractGremlinSe settings.transactionTimeout = 1000; break; case "shouldTimeoutIdleTransactionWithNoOperations": - settings.transactionTimeout = 1; + settings.transactionTimeout = 500; break; case "shouldTimeoutAndRejectLateCommit": case "shouldTrackTransactionCountAccurately": @@ -333,7 +333,7 @@ public class GremlinServerHttpTransactionIntegrateTest extends AbstractGremlinSe public void shouldTimeoutIdleTransactionWithNoOperations() throws Exception { final String txId = beginTx(client, GTX); - // wait for the transaction to timeout (configured at 1ms) + // wait for the transaction to timeout (configured at 500ms) Thread.sleep(1000); // the transaction should be gone @@ -382,12 +382,16 @@ public class GremlinServerHttpTransactionIntegrateTest extends AbstractGremlinSe assertEquals(3, txManager.getActiveTransactionCount()); - // commit one - commitTx(client, txId1, GTX); + // commit one - must close response to ensure server-side processing completes + try (final CloseableHttpResponse r = commitTx(client, txId1, GTX)) { + assertEquals(200, r.getStatusLine().getStatusCode()); + } assertEquals(2, txManager.getActiveTransactionCount()); // rollback one - rollbackTx(client, txId2, GTX); + try (final CloseableHttpResponse r = rollbackTx(client, txId2, GTX)) { + assertEquals(200, r.getStatusLine().getStatusCode()); + } assertEquals(1, txManager.getActiveTransactionCount()); // let the third one timeout
