[jboss-jira] [JBoss JIRA] Closed: (JBAS-7544) HttpInvokerHA doesn't check reachability of HATarget before invoking

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Sun Dec 13 13:35:30 EST 2009


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

Brian Stansberry closed JBAS-7544.
----------------------------------

    Resolution: Done


> HttpInvokerHA doesn't check reachability of HATarget before invoking
> --------------------------------------------------------------------
>
>                 Key: JBAS-7544
>                 URL: https://jira.jboss.org/jira/browse/JBAS-7544
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: JBossAS-5.1.0.GA, JBossAS-6.0.0.M1
>            Reporter: Brian Stansberry
>            Assignee: Brian Stansberry
>             Fix For: JBossAS-6.0.0.M2
>
>
> HttpInvokerHA.invoke is missing logic like this found in the other HA detached invokers:
> HATarget target = (HATarget)beanMap.get(invocation.getObjectName());
>          if (target == null) 
>          {
>             // We could throw IllegalStateException but we have a race condition that could occur:
>             // when we undeploy a bean, the cluster takes some time to converge
>             // and to recalculate a new viewId and list of replicant for each HATarget.
>             // Consequently, a client could own an up-to-date list of the replicants
>             // (before the cluster has converged) and try to perform an invocation
>             // on this node where the HATarget no more exist, thus receiving a
>             // wrong exception and no failover is performed with an IllegalStateException
>             //
>             throw new GenericClusteringException(GenericClusteringException.COMPLETED_NO, 
>                                                  "target is not/no more registered on this node");            
>          }
>          
>          if (!target.invocationsAllowed ())
>             throw new GenericClusteringException(GenericClusteringException.COMPLETED_NO, 
>                                         "invocations are currently not allowed on this target");            
> This is why HAInvokerUnitTestCase.testHttpHAProxyFailover intermittently fails with
> java.lang.IllegalArgumentException: null object name
> 	at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:515)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:662)
> 	at org.jboss.invocation.http.server.HttpInvokerHA.invoke(HttpInvokerHA.java:135)
> If the missing code were there, the MBeanServer.invoke call with the null object name would never occur and the client would get a GenericClusteringException that would trigger failover.

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

        



More information about the jboss-jira mailing list