It is because MiniCluster start a SystemResourcesCounter for gathering metrics but no logic for shutdown. Thus on cluster exist the thread leak.
Best, tison. tison <wander4...@gmail.com> 于2019年11月14日周四 上午10:21写道: > We found this issue previous. > > In our case where leak thread comes from is tracked as > https://issues.apache.org/jira/browse/FLINK-14565 > > Best, > tison. > > > vino yang <yanghua1...@gmail.com> 于2019年11月14日周四 上午10:15写道: > >> Hi Theo, >> >> If you think there is a thread leakage problem. You can create a JIRA >> issue and write a detailed description. >> >> Ping @Gary Yao <g...@data-artisans.com> and @Zhu Zhu <reed...@gmail.com> to >> help to locate and analyze this problem? >> >> Best, >> Vino >> >> Theo Diefenthal <theo.diefent...@scoop-software.de> 于2019年11月14日周四 >> 上午3:16写道: >> >>> I included a Solr End2End test in my project, inheriting from Junit 4 >>> SolrCloudTestCase. >>> >>> The solr-test-framework for junit 4 makes use of >>> com.carrotsearch.randomizedtesting >>> which automatically tests for thread leakages on test end. In my other >>> projects, that tool doesn't produce any problems. >>> When used in a test together with a Flink LocalExecutionEnvironment, it >>> will prevent the test from suceeding due the following error at shutdown >>> phase: >>> >>> com.carrotsearch.randomizedtesting.ThreadLeakError: 3 threads leaked >>> from SUITE scope at somepackage.E2ETest: >>> 1) Thread[id=170, name=FlinkCompletableFutureDelayScheduler-thread-1, >>> state=TIMED_WAITING, group=TGRP-E2ETest] >>> at sun.misc.Unsafe.park(Native Method) >>> at >>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) >>> at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) >>> at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>> at java.lang.Thread.run(Thread.java:748) >>> 2) Thread[id=29, name=metrics-meter-tick-thread-2, state=WAITING, >>> group=TGRP-E2ETest] >>> at sun.misc.Unsafe.park(Native Method) >>> at >>> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) >>> at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) >>> at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>> at java.lang.Thread.run(Thread.java:748) >>> 3) Thread[id=28, name=metrics-meter-tick-thread-1, >>> state=TIMED_WAITING, group=TGRP-E2ETest] >>> at sun.misc.Unsafe.park(Native Method) >>> at >>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) >>> at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) >>> at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>> at java.lang.Thread.run(Thread.java:748) >>> >>> at __randomizedtesting.SeedInfo.seed([CC6ED531AFECBAF6]:0) >>> >>> Note that I can suppress the errors easily via setting >>> @ThreadLeakScope(ThreadLeakScope.Scope.NONE) in my tests, but I just want >>> to point out possible thread leaks in the mailing list here. As the >>> first thread is named FlinkCompletableFutureDelayScheduler, I suggest that >>> Flink doesn't shut down some of its multitude of threads nicely in a local >>> execution environment. My question: Is that some kind of problem / thread >>> leakage in Flink or is it just a false warning? >>> >>> >>> >>>