You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Dian Fu (Jira)" <ji...@apache.org> on 2020/08/15 01:58:00 UTC
[jira] [Closed] (FLINK-18956) StreamTask.invoke should catch
Throwable instead of Exception
[ 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)