From 9441e3ae4de65a2594e9007e96f6631a8b52a854 Mon Sep 17 00:00:00 2001 From: Nick Tindall Date: Wed, 26 Jun 2024 13:11:19 +1000 Subject: [PATCH 1/3] Add leak tracking and unmute Netty4ChunkedContinuationsIT Related to: 109866 --- .../http/netty4/Netty4ChunkedContinuationsIT.java | 4 +++- muted-tests.yml | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java index 5ad1152d65e85..cfb69c7ec41fe 100644 --- a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java +++ b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java @@ -74,6 +74,7 @@ import org.elasticsearch.test.MockLog; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.threadpool.ThreadPool; +import org.elasticsearch.transport.LeakTracker; import org.elasticsearch.transport.TransportService; import org.elasticsearch.transport.netty4.Netty4Utils; import org.elasticsearch.xcontent.ToXContentObject; @@ -316,13 +317,14 @@ public void onFailure(Exception exception) { private static Releasable withResourceTracker() { assertNull(refs); final var latch = new CountDownLatch(1); - refs = AbstractRefCounted.of(latch::countDown); + refs = LeakTracker.wrap(AbstractRefCounted.of(latch::countDown)); return () -> { refs.decRef(); try { safeAwait(latch); } finally { refs = null; + System.gc(); } }; } diff --git a/muted-tests.yml b/muted-tests.yml index dc59d49a66c91..0733b1fb9c89f 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -78,9 +78,6 @@ tests: - class: org.elasticsearch.xpack.transform.transforms.TransformIndexerTests method: testMaxPageSearchSizeIsResetToConfiguredValue issue: https://github.com/elastic/elasticsearch/issues/109844 -- class: "org.elasticsearch.http.netty4.Netty4ChunkedContinuationsIT" - issue: "https://github.com/elastic/elasticsearch/issues/109866" - method: "testClientCancellation" - class: "org.elasticsearch.test.jvm_crash.JvmCrashIT" issue: "https://github.com/elastic/elasticsearch/issues/110052" method: "testJvmCrash" From b61179f0060aa916a9ed5c4da25edcd1f71ad511 Mon Sep 17 00:00:00 2001 From: Nick Tindall Date: Wed, 26 Jun 2024 13:16:09 +1000 Subject: [PATCH 2/3] Use ReachabilityChecker to ensure refs goes out of scope --- .../http/netty4/Netty4ChunkedContinuationsIT.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java index cfb69c7ec41fe..53f37fb33ace2 100644 --- a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java +++ b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java @@ -72,6 +72,7 @@ import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskCancelledException; import org.elasticsearch.test.MockLog; +import org.elasticsearch.test.ReachabilityChecker; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.LeakTracker; @@ -316,15 +317,16 @@ public void onFailure(Exception exception) { private static Releasable withResourceTracker() { assertNull(refs); + final ReachabilityChecker reachabilityChecker = new ReachabilityChecker(); final var latch = new CountDownLatch(1); - refs = LeakTracker.wrap(AbstractRefCounted.of(latch::countDown)); + refs = LeakTracker.wrap(reachabilityChecker.register(AbstractRefCounted.of(latch::countDown))); return () -> { refs.decRef(); try { safeAwait(latch); } finally { refs = null; - System.gc(); + reachabilityChecker.ensureUnreachable(); } }; } From 7484319e70111c5d4a39404a6834455e1411c072 Mon Sep 17 00:00:00 2001 From: Nick Tindall Date: Wed, 26 Jun 2024 14:17:19 +1000 Subject: [PATCH 3/3] Update modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java Co-authored-by: Yang Wang --- .../http/netty4/Netty4ChunkedContinuationsIT.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java index 53f37fb33ace2..21437c06c803d 100644 --- a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java +++ b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/http/netty4/Netty4ChunkedContinuationsIT.java @@ -322,11 +322,15 @@ private static Releasable withResourceTracker() { refs = LeakTracker.wrap(reachabilityChecker.register(AbstractRefCounted.of(latch::countDown))); return () -> { refs.decRef(); + boolean success = false; try { safeAwait(latch); + success = true; } finally { refs = null; - reachabilityChecker.ensureUnreachable(); + if (success == false) { + reachabilityChecker.ensureUnreachable(); + } } }; }