2 Replies Latest reply on Nov 12, 2007 9:44 AM by galder.zamarreno

    Related to JBAS-4950: Exception handling in UnifiedInvokerHA

    galder.zamarreno

      Re: http://jira.jboss.com/jira/browse/JBAS-4950

      The fix for this issue is pretty simple, but I feel there's not enough testing in this area to make sure that the port from JRMP invoker to Unified invoker proxy was done correctly. I'm working on a series of tests for JBAS-4950 and JBAS-4455 to solve these shortcomings.

      There's a topic in the JRMP/Unified proxies that requires further thought, which is exception handling. Let's compare the two:

      1.- JRMPInvokerProxyHA

      Exception handling that does not lead to invocationHasReachedAServer() being called:
      * java.net.ConnectException
      * java.net.UnknownHostException
      * java.rmi.ConnectException
      * java.rmi.ConnectIOException
      * java.rmi.NoSuchObjectException
      * java.rmi.UnknownHostException
      * GenericClusteringException.NO

      Exception handling that leads to invocationHasReachedAServer() being called:
      * GenericClusteringException.YES
      * java.rmi.ServerException
      * java.lang.Exception

      2.- UnifiedInvokerHAProxy

      Exception handling that does not lead to invocationHasReachedAServer() being called:
      * org.jboss.remoting.CannotConnectException
      * GenericClusteringException.NO
      * java.rmi.RemoteException
      * java.lang.Throwable

      Exception handling that leads to invocationHasReachedAServer() being called:
      * GenericClusteringException.YES

      As you can see, there're noticeable differences between the handling of the two proxies, and we have no tests to validate that the port from JRMP to Unified was done correctly.

      My intention here is to determine what's missing or needs changing in Unified proxy so that it behaves the same way as the JRMP when it comes to transaction handling and tx failover authorisations.

      I will probably create a different jira for this, rather than using JBAS-4950, because this jira focuses on the calling invocationHasReachedAServer() upon successfull returns, rather than exception handling itself. Thoughts?