[ https://issues.apache.org/jira/browse/GEODE-2228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hitesh Khamesra closed GEODE-2228. ---------------------------------- > FutureResult.get() does not check for cancellation prior to waiting for a > result > --------------------------------------------------------------------------------- > > Key: GEODE-2228 > URL: https://issues.apache.org/jira/browse/GEODE-2228 > Project: Geode > Issue Type: Bug > Components: distributed lock service > Reporter: Bruce Schuchardt > Assignee: Bruce Schuchardt > Fix For: 1.1.0 > > > A system was found hung with a thread in this state: > {noformat} > vm_0_bridge1_w1-gst-dev23_17330:ServerConnection on port 21566 Thread 352 > ID=861 state=TIMED_WAITING > waiting to lock <java.util.concurrent.CountDownLatch$Sync@41c71f7d> > at sun.misc.Unsafe.park(Native Method) > at > java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1033) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326) > at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:282) > at > com.gemstone.gemfire.internal.util.concurrent.StoppableCountDownLatch.await(StoppableCountDownLatch.java:55) > at > com.gemstone.gemfire.internal.util.concurrent.FutureResult.get(FutureResult.java:54) > at > com.gemstone.gemfire.distributed.internal.locks.DLockService.waitForLockGrantorFutureResult(DLockService.java:774) > at > com.gemstone.gemfire.distributed.internal.locks.DLockService.notLockGrantorId(DLockService.java:837) > at > com.gemstone.gemfire.distributed.internal.locks.DLockService.releaseTryLocks(DLockService.java:2216) > at > com.gemstone.gemfire.internal.cache.locks.TXLockServiceImpl.release(TXLockServiceImpl.java:222) > locked <java.util.ArrayList@34bbf1cf> > at > com.gemstone.gemfire.internal.cache.TXLockRequest.releaseDistributed(TXLockRequest.java:91) > at > com.gemstone.gemfire.internal.cache.TXLockRequest.cleanup(TXLockRequest.java:120) > at com.gemstone.gemfire.internal.cache.TXState.cleanup(TXState.java:730) > at com.gemstone.gemfire.internal.cache.TXState.commit(TXState.java:447) > at > com.gemstone.gemfire.internal.cache.TXStateProxyImpl.commit(TXStateProxyImpl.java:234) > at > com.gemstone.gemfire.internal.cache.TXManagerImpl.commit(TXManagerImpl.java:325) > {noformat} > No other threads were trying to find the lock grantor and further testing > showed that the FutureResult that this thread was using must have been > cancelled by another thread. I wrote a unit test and found that FutureResult > is not respecting its cancelled state in its get() methods. -- This message was sent by Atlassian JIRA (v6.3.15#6346)