You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2024/05/27 07:15:00 UTC
[jira] [Commented] (ARIES-2113) TCP provider doesn't distinguish returned value from thrown exceptions
[ https://issues.apache.org/jira/browse/ARIES-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17849642#comment-17849642 ]
ASF subversion and git services commented on ARIES-2113:
--------------------------------------------------------
Commit eef376be221700e79034bd27187d13120278ab5a in aries-rsa's branch refs/heads/master from Amichai Rothman
[ https://gitbox.apache.org/repos/asf?p=aries-rsa.git;h=eef376be ]
ARIES-2113 - Distinguish result object, invoked method exceptions and provider exceptions
> 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
>
> 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)