CreationRecordLeakDetector Class — netty Architecture
Architecture documentation for the CreationRecordLeakDetector class in ResourceLeakDetectorTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD a6efcbd2_cdec_4d5b_3942_fb284b145e82["CreationRecordLeakDetector"] 2fccec07_7249_763a_4cb2_2f948c47b346["ResourceLeakDetectorTest.java"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|defined in| 2fccec07_7249_763a_4cb2_2f948c47b346 ac849901_f87d_9043_8292_673da45d506c["CreationRecordLeakDetector()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| ac849901_f87d_9043_8292_673da45d506c 57aeb634_0e1f_2f43_bfbc_c001da533bd3["initialise()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 57aeb634_0e1f_2f43_bfbc_c001da533bd3 4b2ae9a7_a241_300a_e959_db28768b7cf5["needReport()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 4b2ae9a7_a241_300a_e959_db28768b7cf5 d4f75349_68f5_8fe9_391c_0b8b559f1ec7["reportTracedLeak()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| d4f75349_68f5_8fe9_391c_0b8b559f1ec7 1cee2ef9_7cb5_1ced_e1b6_7d3aaf6bfa1a["reportUntracedLeak()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 1cee2ef9_7cb5_1ced_e1b6_7d3aaf6bfa1a 05b1a84f_bd2b_609b_330f_358f390d3dcd["reportError()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 05b1a84f_bd2b_609b_330f_358f390d3dcd 6646e7c2_f70c_9286_5c95_78bebfe0bde0["Object()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 6646e7c2_f70c_9286_5c95_78bebfe0bde0 70f8812a_9703_dba6_5d96_f3220a8fb1ec["getLeaksFound()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| 70f8812a_9703_dba6_5d96_f3220a8fb1ec d20f9982_a4e6_97cf_52c6_63f3a4f76984["assertNoErrors()"] a6efcbd2_cdec_4d5b_3942_fb284b145e82 -->|method| d20f9982_a4e6_97cf_52c6_63f3a4f76984
Relationship Graph
Source Code
common/src/test/java/io/netty/util/ResourceLeakDetectorTest.java lines 249–304
private static final class CreationRecordLeakDetector<T> extends ResourceLeakDetector<T> {
String canaryString;
Object initialHint;
boolean failOnUntraced = true;
private final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
private final AtomicInteger leaksFound = new AtomicInteger(0);
CreationRecordLeakDetector(Class<?> resourceType, int samplingInterval) {
super(resourceType, samplingInterval);
}
public void initialise() {
canaryString = "creation-canary-" + UUID.randomUUID();
initialHint = canaryString;
leaksFound.set(0);
}
@Override
protected boolean needReport() {
return true;
}
@Override
protected void reportTracedLeak(String resourceType, String records) {
if (!records.contains(canaryString)) {
reportError(new AssertionError("Leak records did not contain canary string"));
}
leaksFound.incrementAndGet();
}
@Override
protected void reportUntracedLeak(String resourceType) {
if (failOnUntraced) {
reportError(new AssertionError("Got untraced leak w/o canary string"));
}
leaksFound.incrementAndGet();
}
private void reportError(AssertionError cause) {
error.compareAndSet(null, cause);
}
@Override
protected Object getInitialHint(String resourceType) {
return initialHint;
}
int getLeaksFound() {
return leaksFound.get();
}
void assertNoErrors() throws Throwable {
ResourceLeakDetectorTest.assertNoErrors(error);
}
}
Source
Frequently Asked Questions
What is the CreationRecordLeakDetector class?
CreationRecordLeakDetector is a class in the netty codebase, defined in common/src/test/java/io/netty/util/ResourceLeakDetectorTest.java.
Where is CreationRecordLeakDetector defined?
CreationRecordLeakDetector is defined in common/src/test/java/io/netty/util/ResourceLeakDetectorTest.java at line 249.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free