Amichai Rothman created ARIES-2113:
--------------------------------------

             Summary: TCP provider doesn't distinguish returned value from 
thrown exceptions
                 Key: ARIES-2113
                 URL: https://issues.apache.org/jira/browse/ARIES-2113
             Project: Aries
          Issue Type: Bug
          Components: Remote Service Admin
    Affects Versions: rsa-1.16.1
            Reporter: Amichai Rothman


The TCP provider currently returns a single object from the remote invocation, 
which can be either the result object or an exception. While this works in most 
cases, it is technically incorrect since a method can return an exception 
object without throwing it so the two cases should be treated differently. It 
should return both an exception (which is rethrown if not null) and the result 
object (which is returned to caller normally even if it is a Throwable).

Furthermore, when an exception is thrown/returned, there is ambiguity between 
an exception thrown by the invoked method implementation itself (which should 
be thrown transparently to the caller) and those caused by the provider (bugs 
or otherwise which should probably be remote ServiceExceptions). A simple 
solution is to always wrap method implementation exceptions in an 
InvocationTargetException (as invoke already does but the async result 
resolution does not) and other provider exceptions (explicit or implicit) 
thrown as-is. The receiver can then distinguish the two and process them 
differently if necessary.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to