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

Dick Cavender closed GEODE-3718.
--------------------------------

> The InternalResourceManager fails to shutdown if a redundancy recovery task 
> is scheduled but hasn't fired yet
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-3718
>                 URL: https://issues.apache.org/jira/browse/GEODE-3718
>             Project: Geode
>          Issue Type: Bug
>          Components: core
>            Reporter: Barrett Oglesby
>            Assignee: Mario Ivanac
>            Priority: Major
>              Labels: needs-review, pull-request-available, recovery
>             Fix For: 1.10.0
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> This happens with recovery-delay or startup-recovery-delay > 0.
> The thread gets stuck here:
> {noformat}
> "Thread-20" #133 prio=10 os_prio=31 tid=0x00007fa85b886000 nid=0x890b waiting 
> on condition [0x000070001269e000]
>    java.lang.Thread.State: TIMED_WAITING (parking)
>       at sun.misc.Unsafe.park(Native Method)
>       - parking to wait for  <0x00000007bc408900> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>       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.ThreadPoolExecutor.awaitTermination(ThreadPoolExecutor.java:1465)
>       at 
> org.apache.geode.internal.cache.control.InternalResourceManager.stopExecutor(InternalResourceManager.java:375)
>       at 
> org.apache.geode.internal.cache.control.InternalResourceManager.close(InternalResourceManager.java:187)
>       at 
> org.apache.geode.internal.cache.GemFireCacheImpl.close(GemFireCacheImpl.java:2161)
>       - locked <0x00000007bc0bc520> (a java.lang.Class for 
> org.apache.geode.internal.cache.GemFireCacheImpl)
>       at 
> org.apache.geode.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:1367)
>       - locked <0x00000007bc0bc520> (a java.lang.Class for 
> org.apache.geode.internal.cache.GemFireCacheImpl)
>       at 
> org.apache.geode.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:1017)
>       at 
> org.apache.geode.management.internal.beans.MemberMBeanBridge$1.run(MemberMBeanBridge.java:986)
>       at java.lang.Thread.run(Thread.java:745)
> {noformat}
> The InternalResourceManager is waiting for the termination of its 
> scheduledExecutor.
> The PRHARedundancyProvider initializes its recoveryExecutor using the 
> InternalResourceManager's scheduledExecutor:
> {noformat}
> recoveryExecutor = new OneTaskOnlyExecutor(resourceManager.getExecutor(),
>   new OneTaskOnlyExecutor.ConflatedTaskListener() {
>     public void taskDropped() {
>       InternalResourceManager.getResourceObserver().recoveryConflated(region);
>     }
>   });
> {noformat}
> The scheduleRedundancyRecovery method schedules a RecoveryRunnable if 
> necessary.
> If that task hasn't fired yet, the InternalResourceManager doesn't close, and 
> the JVM stays up.



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

Reply via email to