You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2015/08/14 14:56:45 UTC

[jira] [Commented] (QPID-6694) Ensure that future wiring within async model operations preserves exceptions

    [ https://issues.apache.org/jira/browse/QPID-6694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14696962#comment-14696962 ] 

ASF subversion and git services commented on QPID-6694:
-------------------------------------------------------

Commit 1695883 from [~k-wall] in branch 'java/trunk'
[ https://svn.apache.org/r1695883 ]

QPID-6694: [Java Broker] Ensure that asynch model operations chain exceptions through the futures

The work of Alex Rudyy <or...@apache.org> and me.

> Ensure that future wiring within async model operations preserves exceptions
> ----------------------------------------------------------------------------
>
>                 Key: QPID-6694
>                 URL: https://issues.apache.org/jira/browse/QPID-6694
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: qpid-java-6.0
>            Reporter: Keith Wall
>             Fix For: qpid-java-6.0
>
>
> We have a number of cases in asynchronous model operations where we chain code to run after a future completes, returning a future to the caller that completes once the chained code completes.
> The idiom looks like this:
> {code:java}
> public ListenableFuture<Void> doMyStateChangeOp() 
> {
>   final SettableFuture<Void> returnVal = SettableFuture.create();
>   ListenableFuture opFuture = operationAsync();
>   opFuture.addListener(new Runnable()
>   {
>                 // some code
>                 returnVal.set(null);
>   });
>   return returnVal;
> }
> {code} 
> where #addListener executes the Runnable when the future opFuture completes, successfully or otherwise.  The idiom suffers from the fact that opFuture if contains an exception, the exception itself is lost.  The caller who receives returnVal gets a success future and the exception is effectively swallowed.
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org