diff --git a/pom.xml b/pom.xml
index 1284e2f873..cffadfc443 100644
--- a/pom.xml
+++ b/pom.xml
@@ -176,7 +176,7 @@
3.3.0
4.0.6
1.6.1
- 3.0.0-M4
+ 3.5.1
3.5.3
3.4.0
@@ -223,8 +223,8 @@
4
2.0.7
- 5.10.1
- 0.8.11
+ 5.11.2
+ 0.8.12
@@ -427,7 +427,7 @@
org.junit
junit-bom
- ${junit.jupiter.version}
+ ${junit-bom.version}
pom
import
@@ -643,7 +643,7 @@
all
600
- -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError @{argLine}
+ -Xmx8g -XX:+HeapDumpOnOutOfMemoryError @{argLine}
${project.build.directory}/log
${project.build.directory}/tmp
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/ReferenceCountedLeakDetector.java b/ratis-common/src/main/java/org/apache/ratis/util/ReferenceCountedLeakDetector.java
index 1c794a516b..e38066b471 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/ReferenceCountedLeakDetector.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/ReferenceCountedLeakDetector.java
@@ -213,7 +213,7 @@ public synchronized boolean release() {
}
private static class AdvancedTracing extends SimpleTracing {
- enum Op {CREATION, RETAIN, RELEASE}
+ enum Op {CREATION, RETAIN, RELEASE, LEAK}
static class Counts {
private final int refCount;
@@ -304,7 +304,6 @@ public String toString() {
}
private final List traceInfos = new ArrayList<>();
- private int traceCount = 0;
private TraceInfo previous;
AdvancedTracing(T value, Runnable retainMethod, Consumer releaseMethod, LeakDetector leakDetector) {
@@ -313,7 +312,7 @@ public String toString() {
}
private synchronized TraceInfo addTraceInfo(Op op, int previousRefCount) {
- final TraceInfo current = new TraceInfo(traceCount++, op, previous, previousRefCount);
+ final TraceInfo current = new TraceInfo(traceInfos.size(), op, previous, previousRefCount);
traceInfos.add(current);
previous = current;
return current;
@@ -342,13 +341,20 @@ public synchronized boolean release() {
@Override
synchronized String getTraceString(int count) {
- return super.getTraceString(count) + formatTraceInfos(traceInfos);
+ return super.getTraceString(count) + formatTraceInfos();
}
- private static String formatTraceInfos(List infos) {
- final int n = infos.size();
+ private String formatTraceInfos() {
+ final int n = traceInfos.size();
final StringBuilder b = new StringBuilder(n << 10).append(" #TraceInfos=").append(n);
- infos.forEach(info -> info.appendTo(b.append("\n")));
+ TraceInfo previous = null;
+ for (TraceInfo info : traceInfos) {
+ info.appendTo(b.append("\n"));
+ previous = info;
+ }
+ final TraceInfo last = new TraceInfo(n, Op.LEAK, previous, getCount());
+ last.appendTo(b.append("\n"));
+
return b.toString();
}
}
diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
index dbb0dbcabc..34a3c5581b 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
@@ -335,7 +335,7 @@ public String toString() {
@Test
@Timeout(value = 300)
public void testWithLoad() throws Exception {
- runWithNewCluster(NUM_SERVERS, cluster -> testWithLoad(10, 300, false, cluster, LOG));
+ runWithNewCluster(NUM_SERVERS, cluster -> testWithLoad(5, 100, false, cluster, LOG));
}
static void testWithLoad(final int numClients, final int numMessages,