[ 
https://issues.apache.org/jira/browse/ARIES-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Amichai Rothman resolved ARIES-2113.
------------------------------------
    Fix Version/s: rsa-2.0.0
       Resolution: Fixed

> 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
>            Priority: Major
>             Fix For: rsa-2.0.0
>
>
> 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