[ 
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)

Reply via email to