Pavel Pereslegin created IGNITE-15146:
-----------------------------------------

             Summary: Checking the snapshot creates a large number of unused 
threads that do not terminate.
                 Key: IGNITE-15146
                 URL: https://issues.apache.org/jira/browse/IGNITE-15146
             Project: Ignite
          Issue Type: Bug
            Reporter: Pavel Pereslegin


Each new run of snapshot verification creates dozens of new threads that do not 
terminate after the procedure is complete.

{code:java}
    @Test
    public void testClusterSnapshotCheckMultipleTimes() throws Exception {
        IgniteEx ignite = startGridsWithCache(3, dfltCacheCfg, 
CACHE_KEYS_RANGE);

        startClientGrid();
        
        ignite.snapshot().createSnapshot(SNAPSHOT_NAME)
            .get();

        int activeThreadsCntBefore = Thread.activeCount();

        int iterations = 10;

        for (int i = 0; i < iterations; i++)
            snp(ignite).checkSnapshot(SNAPSHOT_NAME).get();

        int createdThreads = Thread.activeCount() - activeThreadsCntBefore;

        assertTrue("Threads created: " + createdThreads, createdThreads < 
iterations);
    }
{code}

Reproducer shows that 10 snapshot checks add approx 
*{color:#DE350B}~250{color}* new threads that do not terminate. 

The dump of "leaked" thread looks like this:

{noformat}
"binary-metadata-writer-#2208" #2249 prio=5 os_prio=0 tid=0x00007f9974087000 
nid=0x65b38 waiting on condition [0x00007f986cf9c000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <merged>(a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at 
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataFileStore$BinaryMetadataAsyncWriter.body0(BinaryMetadataFileStore.java:460)
        at 
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataFileStore$BinaryMetadataAsyncWriter.body(BinaryMetadataFileStore.java:441)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at java.lang.Thread.run(Thread.java:748)
{noformat}





--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to