You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sz...@apache.org on 2024/11/22 17:32:44 UTC
(ratis) branch master updated: RATIS-2191. Add ResourceLeakDetector to Netty tests (#1180)
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 <iv...@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 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);
+ }
}