-
Bug
-
Resolution: Done
-
Major
-
JBossAS-3.2.5 Final, JBossAS-4.0.0 Final, JBossAS-4.0.1RC1, JBossAS-3.2.6 Final, JBossAS-3.2.7 Final, JBossAS-4.0.1 Final, JBossAS-4.0.1 SP1, JBossAS-4.0.2RC1, JBossAS-4.0.2 Final
-
None
It is possible to have deadlock in DistributedReplicantManagerImpl when HAServiceMBeanSupport service is stopped (e.g. on application server shutdown).
Relevant thread dump:
"JBoss Shutdown Hook":
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.lookupReplicants(DistributedReplicantManagerImpl.java:367)
- waiting to lock <0x916c7648> (a java.util.HashMap)
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.remove(DistributedReplicantManagerImpl.java:346) - locked <0x916c7620> (a java.util.HashMap)
at org.jboss.ha.jmx.HAServiceMBeanSupport.unregisterDRMListener(HAServiceMBeanSupport.java:213)
at org.jboss.ha.jmx.HAServiceMBeanSupport.stopService(HAServiceMBeanSupport.java:159)
at org.jboss.system.ServiceMBeanSupport.stop(ServiceMBeanSupport.java:240)
at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:976)
at $Proxy14.stop(Unknown Source)
at org.jboss.system.ServiceController.stop(ServiceController.java:471)
at org.jboss.system.ServiceController.stop(ServiceController.java:462)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
at $Proxy4.stop(Unknown Source)
at org.jboss.deployment.SARDeployer.stop(SARDeployer.java:373)
at org.jboss.deployment.MainDeployer.stop(MainDeployer.java:489)
at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:472)
at org.jboss.deployment.MainDeployer.shutdown(MainDeployer.java:359)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
at org.jboss.system.server.ServerImpl$ShutdownHook.shutdownDeployments(ServerImpl.java:849)
at org.jboss.system.server.ServerImpl$ShutdownHook.shutdown(ServerImpl.java:824)
at org.jboss.system.server.ServerImpl$ShutdownHook.run(ServerImpl.java:812)
"UpHandler (STATE_TRANSFER)":
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.lookupLocalReplicant(DistributedReplicantManagerImpl.java:358) - waiting to lock <0x916c7620> (a java.util.HashMap)
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.lookupReplicants(DistributedReplicantManagerImpl.java:364)
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.purgeDeadMembers(DistributedReplicantManagerImpl.java:810) - locked <0x916c7648> (a java.util.HashMap)
at org.jboss.ha.framework.server.DistributedReplicantManagerImpl.membershipChanged(DistributedReplicantManagerImpl.java:310)
at org.jboss.ha.framework.server.HAPartitionImpl.notifyListeners(HAPartitionImpl.java:873) - locked <0x916d0720> (a java.util.ArrayList)
at org.jboss.ha.framework.server.HAPartitionImpl.viewAccepted(HAPartitionImpl.java:481)
at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.passUp(MessageDispatcher.java:571)
at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:316)
at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:596)
at org.jgroups.JChannel.up(JChannel.java:873)
at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:349)
at org.jgroups.stack.ProtocolStack.receiveUpEvent(ProtocolStack.java:365)
at org.jgroups.stack.Protocol.passUp(Protocol.java:482)
at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:129)
at org.jgroups.stack.UpHandler.run(Protocol.java:55)