This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 04396ca78 RATIS-2191. Add ResourceLeakDetector to Netty tests (#1180)
04396ca78 is described below
commit 04396ca780d857863e81a7bf48ae52fa9cbec2b2
Author: Ivan Andika <[email protected]>
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 ab28214f9..4909f436d 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;
@@ -418,4 +421,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);
+ }
}