You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Anton Vinogradov (JIRA)" <ji...@apache.org> on 2015/10/01 16:00:40 UTC

[jira] [Updated] (IGNITE-804) [Test] Synchronous evicts may cause a deadlock

     [ https://issues.apache.org/jira/browse/IGNITE-804?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Anton Vinogradov updated IGNITE-804:
------------------------------------
    Labels: Muted_test  (was: failedtest)

> [Test] Synchronous evicts may cause a deadlock
> ----------------------------------------------
>
>                 Key: IGNITE-804
>                 URL: https://issues.apache.org/jira/browse/IGNITE-804
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Artem Shutak
>              Labels: Muted_test
>
> See gg-5276
> {noformat}
> [20:22:49,442][INFO ][start-stop-thread-1][GridDataLoaderProcessorSelfTest] >>>>>>> Started node: 2ed6cd2e-f581-4831-81e5-7e8063e020c4
> java.lang.Exception: <20:22:49,911><DEBUG><gridgain-#1467%dataload.GridDataLoaderProcessorSelfTest4%> >>>>>>>>>>>>>>>>>>>
> 	at org.gridgain.grid.util.GridUtils.dumpStack(GridUtils.java:661)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.wLock(GridDhtPartitionTopologyImpl.java:179)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.onEvicted(GridDhtPartitionTopologyImpl.java:1105)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.preloader.GridDhtPreloader.onPartitionEvicted(GridDhtPreloader.java:475)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtLocalPartition.tryEvict(GridDhtLocalPartition.java:393)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtLocalPartition.onRemoved(GridDhtLocalPartition.java:188)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.onRemoved(GridDhtPartitionTopologyImpl.java:567)
> 	at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtCacheEntry.onMarkedObsolete(GridDhtCacheEntry.java:97)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheMapEntry.evictInternal(GridCacheMapEntry.java:2187)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager.evict0(GridCacheEvictionManager.java:693)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager.access$2200(GridCacheEvictionManager.java:49)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager$EvictionFuture.prepare0(GridCacheEvictionManager.java:1678)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager$EvictionFuture.prepare(GridCacheEvictionManager.java:1591)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager.addToCurrentFuture(GridCacheEvictionManager.java:1052)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager.checkEvictionQueue(GridCacheEvictionManager.java:1008)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheEvictionManager.unwind(GridCacheEvictionManager.java:1278)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheUtils.unwindEvicts(GridCacheUtils.java:1402)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager.processUnordered(GridCacheIoManager.java:210)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager.access$500(GridCacheIoManager.java:35)
> 	at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:113)
> 	at org.gridgain.grid.kernal.managers.communication.GridIoManager$GridFilteredMessageListener.onMessage(GridIoManager.java:1612)
> 	at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:675)
> 	at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1900(GridIoManager.java:50)
> 	at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:636)
> 	at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:139)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:722)
> {noformat}
> To debug this, I have added a check before write lock acquisition:
> {noformat}
>     private void wLock() {
>         int cnt0 = cnt.get();
>         if (cnt0 > 0)
>             U.dumpStack(">>>>>>>>>>>>>>>>>>>");
>         lock.writeLock().lock();
>     }
> {noformat}
> cnt here is a thread local that holds count of read locks hold by current thread.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)