You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "chenliang (JIRA)" <ji...@apache.org> on 2015/09/13 09:56:45 UTC

[jira] [Commented] (FLINK-2646) Rich functions should provide a method "closeAfterFailure()"

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

chenliang commented on FLINK-2646:
----------------------------------

1.Can you help me to quickly understand "The runtime is the changed to call close() as part of the regular execution and closeAfterFailure() in case of an irregular exit.".

2.Just i checked source code, the ChainedAllReduceDriver(one of runtime Driver) already have cancelTask() method for irregular exit.

@Override
	public void closeTask() throws Exception {
		RegularPactTask.closeUserCode(this.reducer);
	}
//chenliang613 remark: "RegularPactTask.closeUserCode(this.reducer)" also will invoke "FunctionUtils.closeFunction(this.reducer)"

	@Override
	public void cancelTask() {
		try {
			FunctionUtils.closeFunction(this.reducer);
		} catch (Throwable t) {
		}
	}

> Rich functions should provide a method "closeAfterFailure()"
> ------------------------------------------------------------
>
>                 Key: FLINK-2646
>                 URL: https://issues.apache.org/jira/browse/FLINK-2646
>             Project: Flink
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.10
>            Reporter: Stephan Ewen
>            Assignee: chenliang
>             Fix For: 0.10
>
>
> Right now, the {{close()}} method of rich functions is invoked in case of proper completion, and in case of canceling in case of error (to allow for cleanup).
> In certain cases, the user function needs to know why it is closed, whether the task completed in a regular fashion, or was canceled/failed.
> I suggest to add a method {{closeAfterFailure()}} to the {{RichFunction}}. By default, this method calls {{close()}}. The runtime is the changed to call {{close()}} as part of the regular execution and {{closeAfterFailure()}} in case of an irregular exit.
> Because by default all cases call {{close()}} the change would not be API breaking.



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