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);
+  }
 }

Reply via email to