[
https://issues.apache.org/jira/browse/FLINK-3347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15611669#comment-15611669
]
ASF GitHub Bot commented on FLINK-3347:
---------------------------------------
Github user StephanEwen commented on the issue:
https://github.com/apache/flink/pull/2696
That's a very good addition, we need something like that.
After an offline discussion with @tillrohrmann we came to the following
conclusion:
There is a tricky problem with that pure appraoch: When the JobManager
fails, all TaskManagers will "quarantine" that JobManager's actor system after
they detected the failure. That means they exit and restart. Effectively, a
JobManager failure results in all TaskManagers restarting.
That is a bit heavy.
Instead, we'll adjust this to do the following:
- TaskManagers must not watch the JobManager via Akka. That way,
JobManager failures do not cause any quarantining on the TaskManager side.
- The JobManager keeps watching the TaskManagers via Akka, so TaskManager
failures (false positives) still result in TaskManager quarantine, which means
the TaskManager need to restart when a TM-JM link breaks
How do TaskManagers then detect JobManager failure?
- TaskManagers send heartbeats to the JobManager anyways (accumulators,
in the future task status reconciliation). The TaskManagers use that to detect
JobManager failures.
- In high availability setups, TaskManagers notice JobManager failure
also via ZooKeeper
- In addition, in flip-6 the resource manager tells TaskManagers about
JobManager container failures
> TaskManager (or its ActorSystem) need to restart in case they notice
> quarantine
> -------------------------------------------------------------------------------
>
> Key: FLINK-3347
> URL: https://issues.apache.org/jira/browse/FLINK-3347
> Project: Flink
> Issue Type: Improvement
> Components: TaskManager
> Affects Versions: 0.10.1
> Reporter: Stephan Ewen
> Assignee: Till Rohrmann
> Priority: Critical
> Fix For: 1.0.0, 1.2.0, 1.1.4
>
>
> There are cases where Akka quarantines remote actor systems. In that case, no
> further communication is possible with that actor system unless one of the
> two actor systems is restarted.
> The result is that a TaskManager is up and available, but cannot register at
> the JobManager (Akka refuses connection because of the quarantined state),
> making the TaskManager a useless process.
> I suggest to let the TaskManager restart itself once it notices that either
> it quarantined the JobManager, or the JobManager quarantined it.
> It is possible to recognize that by listening to certain events in the actor
> system event stream:
> http://stackoverflow.com/questions/32471088/akka-cluster-detecting-quarantined-state
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)