[jboss-jira] [JBoss JIRA] Closed: (JBAS-3194) Proxies for HAServiceMBeanSupport subclass unbound across cluster when any instance undeployed

Brian Stansberry (JIRA) jira-events at jboss.com
Thu Aug 24 17:10:51 EDT 2006


     [ http://jira.jboss.com/jira/browse/JBAS-3194?page=all ]

Brian Stansberry closed JBAS-3194.
----------------------------------

    Resolution: Done

Fixed by adding property "sendRemoteLifecycleNotifications" to HAServiceMBeanSupport.  If false, any AttributeChangeNotification for the "State" attribute will not be broadcast to remote nodes.

This is by default "true" to be consistent with existing behavior.  Services that will be exposed via a proxy can set this to false.

Note that this property is not exposed in the HAServiceMBean interface; whether or not to expose it is up to the individual service that uses HAServiceMBeanSupport.

Just to be complete, property "sendLocalLifecycleNotifications" was also added, although I don't know a use case for setting it to false.

> Proxies for HAServiceMBeanSupport subclass unbound across cluster when any instance undeployed
> ----------------------------------------------------------------------------------------------
>
>                 Key: JBAS-3194
>                 URL: http://jira.jboss.com/jira/browse/JBAS-3194
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Clustering
>    Affects Versions: JBossAS-4.0.4.CR2, JBossAS-4.0.3 SP1, JBossAS-4.0.3 Final
>            Reporter: Brian Stansberry
>         Assigned To: Brian Stansberry
>             Fix For: JBossAS-4.0.5.CR1
>
>
> ProxyFactoryHA registers a JMX notification listener for the shutdown of its target service and removes the proxy from JNDI on receipt of the notification.  HAServiceMBeanSupport broadcasts its JMX notifications *across the cluster*.  The effect of this is that the ProxyFactoryHA on all cluster nodes will receive the notification when any one instance of the service undeploys.  The effect is all proxies across the cluster are removed from JNDI.
> Test org.jboss.test.cluster.jmx.test.HAInvokerUnitTestCase demonstrates this.
> Following is a deliberately created stacktrace showing the origin of a notification that caused an invalid removal from JNDI:
> 2006-05-08 01:51:53,703 DEBUG [org.jboss.proxy.generic.ProxyFactoryHA] About to stop: disabling remote access to mbean jboss.test:service=HAService
> 2006-05-08 01:51:53,703 DEBUG [org.jboss.proxy.generic.ProxyFactoryHA] java.lang.Exception: stacktrace
> java.lang.Exception: stacktrace
> 	at org.jboss.proxy.generic.ProxyFactoryHA.containerIsAboutToStop(ProxyFactoryHA.java:169)
> 	at org.jboss.proxy.generic.ProxyFactoryHA$StateChangeListener.handleNotification(ProxyFactoryHA.java:231)
> 	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.notification.NotificationListenerProxy.invoke(NotificationListenerProxy.java:153)
> 	at $Proxy10.handleNotification(Unknown Source)
> 	at org.jboss.mx.util.JBossNotificationBroadcasterSupport.handleNotification(JBossNotificationBroadcasterSupport.java:127)
> 	at org.jboss.mx.util.JBossNotificationBroadcasterSupport.sendNotification(JBossNotificationBroadcasterSupport.java:110)
> 	at org.jboss.ha.jmx.HAServiceMBeanSupport._receiveRemoteNotification(HAServiceMBeanSupport.java:393)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jgroups.blocks.MethodCall.invoke(MethodCall.java:330)
> 	at org.jboss.ha.framework.server.HAPartitionImpl.handle(HAPartitionImpl.java:1017)
> 	at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:597)
> 	at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:497)
> 	at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:320)
> 	at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:725)
> 	at org.jgroups.JChannel.up(JChannel.java:1041)
> 	at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:377)
> 	at org.jgroups.stack.ProtocolStack.receiveUpEvent(ProtocolStack.java:393)
> 	at org.jgroups.stack.Protocol.passUp(Protocol.java:538)
> 	at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:141)
> 	at org.jgroups.stack.UpHandler.run(Protocol.java:60)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list