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

ASF GitHub Bot commented on FLINK-5830:
---------------------------------------

Github user tillrohrmann commented on the issue:

    https://github.com/apache/flink/pull/3360
  
    Thanks for the clarification @zhijiangW. I know understand the problem that 
we effectively introduce via `RpcEndpoint.runAsync` another message which might 
get "lost" (e.g. due to OOM exception).
    
    I agree with Stephan that it's hard to reason about the consistency of the 
`AkkaRpcActor
    s` internal state once we see an exception. The conservative approach would 
probably be to let it terminate or calling `notifyFatalError` to handle it.
    
    Related to this is also how we handle exceptions in the 
`AkkaRpcActor.handleRpcInvocation`. There we catch all exception and simply 
send them to the caller. I think in this method we should only send the 
non-fatal exceptions back and terminate otherwise.
    
    To follow a similar pattern for the `handleRunAsync` we could think about 
returning a `Future` which we return when calling `RpcEndpoint.runAsync` which 
will be completed with non fatal exceptions or if the `Runnable` has been 
executed. And in case that we see a fatal exception we terminate or call 
`notifyFatalError`. What do you think?


> OutOfMemoryError during notify final state in TaskExecutor may cause job stuck
> ------------------------------------------------------------------------------
>
>                 Key: FLINK-5830
>                 URL: https://issues.apache.org/jira/browse/FLINK-5830
>             Project: Flink
>          Issue Type: Bug
>            Reporter: zhijiang
>            Assignee: zhijiang
>
> The scenario is like this:
> {{JobMaster}} tries to cancel all the executions when process failed 
> execution, and the task executor already acknowledge the cancel rpc message.
> When notify the final state in {{TaskExecutor}}, it causes OOM in 
> {{AkkaRpcActor}} and this error is caught to log the info. The final state 
> will not be sent any more.
> The {{JobMaster}} can not receive the final state and trigger the restart 
> strategy.
> One solution is to catch the {{OutOfMemoryError}} and throw it, then it will 
> cause to shut down the {{ActorSystem}} resulting in exiting the 
> {{TaskExecutor}}. The {{JobMaster}} can be notified of {{TaskExecutor}} 
> failure and fail all the tasks to trigger restart successfully.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to