From 0f03d598d3db26e36f2244ab7eef3e080a378b4b Mon Sep 17 00:00:00 2001 From: ggivo Date: Tue, 14 Jan 2025 19:05:11 +0200 Subject: [PATCH] Attempt to fix sporadic test failing with OOM Troubleshooting flaky test failing with OOM --- .github/workflows/test-on-docker.yml | 12 ++++++++++++ pom.xml | 1 + .../TokenBasedAuthenticationUnitTests.java | 5 +++++ 3 files changed, 18 insertions(+) diff --git a/.github/workflows/test-on-docker.yml b/.github/workflows/test-on-docker.yml index 985b9cc45b..bd94c7a607 100644 --- a/.github/workflows/test-on-docker.yml +++ b/.github/workflows/test-on-docker.yml @@ -83,7 +83,19 @@ jobs: mvn -Dtest=$TESTS clean compile test fi env: + JVM_OPTS: "-XX:+PrintFlagsFinal -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -XX:HeapDumpPath=${{ runner.temp }}/heapdump-${{ matrix.redis_version }}.hprof" TESTS: ${{ github.event.inputs.specific_test || '' }} + - name: Upload Heap Dumps + if: failure() + uses: actions/upload-artifact@v4 + with: + name: heap-dumps-${{ matrix.redis_version }} + path: ${{ runner.temp }}/heapdump-${{ matrix.redis_version }}.hprof + - name: Upload Surefire Dump File + uses: actions/upload-artifact@v3 + with: + name: surefire-dumpstream + path: target/surefire-reports/*.dumpstream - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 if: always() diff --git a/pom.xml b/pom.xml index add6b378ea..ca5f6aace4 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,7 @@ maven-surefire-plugin ${maven.surefire.version} + ${JVM_OPTS} ${redis-hosts} diff --git a/src/test/java/redis/clients/jedis/authentication/TokenBasedAuthenticationUnitTests.java b/src/test/java/redis/clients/jedis/authentication/TokenBasedAuthenticationUnitTests.java index d3f02fb2c8..6ac734ed50 100644 --- a/src/test/java/redis/clients/jedis/authentication/TokenBasedAuthenticationUnitTests.java +++ b/src/test/java/redis/clients/jedis/authentication/TokenBasedAuthenticationUnitTests.java @@ -83,6 +83,7 @@ public void evict() throws Exception { await().pollInterval(ONE_HUNDRED_MILLISECONDS).atMost(FIVE_HUNDRED_MILLISECONDS) .until(numberOfEvictions::get, Matchers.greaterThanOrEqualTo(1)); + pool.close(); } public void withLowerRefreshBounds_testJedisAuthXManagerTriggersEvict() throws Exception { @@ -108,6 +109,7 @@ public void evict() throws Exception { await().pollInterval(ONE_HUNDRED_MILLISECONDS).atMost(FIVE_HUNDRED_MILLISECONDS) .until(numberOfEvictions::get, Matchers.greaterThanOrEqualTo(1)); + pool.close(); } public static class TokenManagerConfigWrapper extends TokenManagerConfig { @@ -229,6 +231,7 @@ public void testAuthXManagerReceivesNewToken() manager.start(); assertEquals(tokenHolder[0].getValue(), "tokenVal"); + manager.stop(); } @Test @@ -300,6 +303,7 @@ public void testTokenManagerWithFailingTokenRequest() verify(identityProvider, times(numberOfRetries)).requestToken(); verify(listener, never()).onError(any()); assertEquals("tokenValX", argument.getValue().getValue()); + tokenManager.stop(); } @Test @@ -338,5 +342,6 @@ public void testTokenManagerWithHangingTokenRequest() await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> { verify(manager, times(1)).authenticateConnections(any()); }); + manager.stop(); } }