This is an automated email from the ASF dual-hosted git repository. szetszwo pushed a commit to branch release-3.1.3_review in repository https://gitbox.apache.org/repos/asf/ratis.git
commit fa5a06159f132d6440735ea1812eb3ee2121e02a Author: Ivan Andika <ivan_andi...@rocketmail.com> AuthorDate: Sat Nov 23 01:32:38 2024 +0800 RATIS-2191. Add ResourceLeakDetector to Netty tests (#1180) --- .../ratis/examples/filestore/FileStoreStreamingBaseTest.java | 1 + .../org/apache/ratis/datastream/DataStreamClusterTests.java | 1 + .../org/apache/ratis/datastream/DataStreamTestUtils.java | 12 ++++++++++++ 3 files changed, 14 insertions(+) diff --git a/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreStreamingBaseTest.java b/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreStreamingBaseTest.java index 92147de4e..490f12c8d 100644 --- a/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreStreamingBaseTest.java +++ b/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreStreamingBaseTest.java @@ -56,6 +56,7 @@ public abstract class FileStoreStreamingBaseTest <CLUSTER extends MiniRaftCluste FileStoreStateMachine.class, StateMachine.class); ConfUtils.setFile(p::setFile, FileStoreCommon.STATEMACHINE_DIR_KEY, new File(getClassTestDir(), "filestore")); + DataStreamTestUtils.enableResourceLeakDetector(); } static final int NUM_PEERS = 3; diff --git a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java index f99ff5623..dabc93dda 100644 --- a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java +++ b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java @@ -52,6 +52,7 @@ public abstract class DataStreamClusterTests<CLUSTER extends MiniRaftCluster> ex implements MiniRaftCluster.Factory.Get<CLUSTER> { { setStateMachine(MultiDataStreamStateMachine.class); + DataStreamTestUtils.enableResourceLeakDetector(); } public static final int NUM_SERVERS = 3; diff --git a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java index dfbd98add..a2c3162f5 100644 --- a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java +++ b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java @@ -46,6 +46,9 @@ import org.apache.ratis.statemachine.StateMachine.DataStream; import org.apache.ratis.statemachine.TransactionContext; import org.apache.ratis.statemachine.impl.BaseStateMachine; import org.apache.ratis.thirdparty.com.google.protobuf.ByteString; +import org.apache.ratis.thirdparty.io.netty.buffer.ByteBufUtil; +import org.apache.ratis.thirdparty.io.netty.util.ResourceLeakDetector; +import org.apache.ratis.thirdparty.io.netty.util.ResourceLeakDetector.Level; import org.apache.ratis.util.CollectionUtils; import org.apache.ratis.util.FileUtils; import org.apache.ratis.util.JavaUtils; @@ -416,4 +419,13 @@ public interface DataStreamTestUtils { final LogEntryProto entryFromLog = searchLogEntry(ClientInvocationId.valueOf(request), division.getRaftLog()); Assertions.assertEquals(entryFromStream, entryFromLog); } + + ResourceLeakDetector.LeakListener LEAK_LISTENER = (resourceType, records) -> { + throw new IllegalStateException("Leak detected for resource type: " + resourceType + records); + }; + + static void enableResourceLeakDetector() { + ResourceLeakDetector.setLevel(Level.PARANOID); + ByteBufUtil.setLeakListener(DataStreamTestUtils.LEAK_LISTENER); + } }