Home / Class/ CreationRecordLeakDetector Class — netty Architecture

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

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