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

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


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-6.0.0.M1, JBossAS-5.1.0.GA
            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