[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