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