[infinispan-issues] [JBoss JIRA] (ISPN-9979) AbstractComponentRegistry.stop() can hang if called concurrently

Dan Berindei (Jira) issues at jboss.org
Fri May 24 04:58:00 EDT 2019


     [ https://issues.jboss.org/browse/ISPN-9979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Berindei updated ISPN-9979:
-------------------------------
    Fix Version/s: 10.0.0.Beta4


> AbstractComponentRegistry.stop() can hang if called concurrently
> ----------------------------------------------------------------
>
>                 Key: ISPN-9979
>                 URL: https://issues.jboss.org/browse/ISPN-9979
>             Project: Infinispan
>          Issue Type: Bug
>    Affects Versions: 9.4.3.Final
>            Reporter: Philippe Julien
>            Assignee: Dan Berindei
>            Priority: Major
>             Fix For: 10.0.0.Beta4
>
>
> I believe that there is a bug in org.infinispan.factories.AbstractComponentRegistry.stop()
> Our Wildfly 15 nodes often hang on shutdown on the following:
> {noformat}
> "MSC service thread 1-2" #37 prio=5 os_prio=0 tid=0x0000000003807000 nid=0xf32d in Object.wait() [0x00007f0012c6f000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0x00000005cc795fa8> (a org.infinispan.factories.ComponentRegistry)
> 	at java.lang.Object.wait(Object.java:502)
> 	at org.infinispan.factories.AbstractComponentRegistry.stop(AbstractComponentRegistry.java:359)
> 	- locked <0x00000005cc795fa8> (a org.infinispan.factories.ComponentRegistry)
> 	at org.infinispan.cache.impl.CacheImpl.performImmediateShutdown(CacheImpl.java:1159)
> 	at org.infinispan.cache.impl.CacheImpl.stop(CacheImpl.java:1124)
> 	at org.infinispan.cache.impl.AbstractDelegatingCache.stop(AbstractDelegatingCache.java:520)
> 	at org.infinispan.manager.DefaultCacheManager.terminate(DefaultCacheManager.java:734)
> 	at org.infinispan.manager.DefaultCacheManager.stopCaches(DefaultCacheManager.java:786)
> 	at org.infinispan.manager.DefaultCacheManager.stop(DefaultCacheManager.java:762)
> 	at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.accept(CacheContainerServiceConfigurator.java:114)
> 	at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.accept(CacheContainerServiceConfigurator.java:70)
> 	at org.wildfly.clustering.service.FunctionalService.stop(FunctionalService.java:77)
> 	at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1794)
> 	at org.jboss.msc.service.ServiceControllerImpl$StopTask.execute(ServiceControllerImpl.java:1763)
> 	at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1558)
> 	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
> 	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
> 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
> 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1364)
> 	at java.lang.Thread.run(Thread.java:748)
> {noformat}
> There are no other threads that are working with 0x00000005cc795fa8 in the thread dump.
> I checked in a heap dump and the 0x00000005cc795fa8 org.infinispan.factories.ComponentRegistry object state is TERMINATED.
> I think that the finally block of AbstractComponentRegistry.stop() is missing a notifyAll().
> Shouldn't this:
> {code}
> ...
>       } finally {
>          synchronized (this) {
>             state = ComponentStatus.TERMINATED;
>          }
>       }
> {code}
> Be:
> {code}
> ...
>       } finally {
>          synchronized (this) {
>             state = ComponentStatus.TERMINATED;
>             notifyAll();
>          }
>       }
> {code}
> This way, if two thread try to stop the same cache, the one that wins will notify the one that is waiting letting its stop complete.



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the infinispan-issues mailing list