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

Dian Fu closed FLINK-18956.
---------------------------
    Resolution: Fixed

master: 14665dd468a638b6d6c5f5f241455c8d81825b76
release-1.11: 792855277be38fafed27a7aaa7c98628ea256850

> StreamTask.invoke should catch Throwable instead of Exception
> -------------------------------------------------------------
>
>                 Key: FLINK-18956
>                 URL: https://issues.apache.org/jira/browse/FLINK-18956
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Task
>    Affects Versions: 1.11.0
>            Reporter: Dian Fu
>            Assignee: Dian Fu
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.12.0, 1.11.2
>
>
> In StreamTask.invoke, we should catch Throwable. Otherwise, cleanUpInvoke() 
> will not be called if Error is thrown:
> {code}
>       @Override
>       public final void invoke() throws Exception {
>               try {
>                       beforeInvoke();
>                       // final check to exit early before starting to run
>                       if (canceled) {
>                               throw new CancelTaskException();
>                       }
>                       // let the task do its work
>                       runMailboxLoop();
>                       // if this left the run() method cleanly despite the 
> fact that this was canceled,
>                       // make sure the "clean shutdown" is not attempted
>                       if (canceled) {
>                               throw new CancelTaskException();
>                       }
>                       afterInvoke();
>               }
>               catch (Exception invokeException) {
>                       failing = !canceled;
>                       try {
>                               cleanUpInvoke();
>                       }
>                       // TODO: investigate why Throwable instead of Exception 
> is used here.
>                       catch (Throwable cleanUpException) {
>                               Throwable throwable = 
> ExceptionUtils.firstOrSuppressed(cleanUpException, invokeException);
>                               throw (throwable instanceof Exception ? 
> (Exception) throwable : new Exception(throwable));
>                       }
>                       throw invokeException;
>               }
>               cleanUpInvoke();
>       }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to