[
https://issues.apache.org/jira/browse/FLINK-2332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14636970#comment-14636970
]
ASF GitHub Bot commented on FLINK-2332:
---------------------------------------
Github user tillrohrmann commented on the pull request:
https://github.com/apache/flink/pull/917#issuecomment-123737269
* I chose to call the method `decorateMessage` because it not necessarily
only attaches leader session IDs. In the future we might use this method for
something other than just wrapping the messages in a `LeaderSessionMessage`.
Moreover, calling it `attachSession` would contradict the idea of transparency
here. But we can change it as long as we don't have to do any other decorations.
* The trait `RequiresLeaderSessionID` is only a marker trait which does not
contain any code. Thus, it is effectively equivalent to a Java interface and
in fact Java classes can implement it. The only reason I chose a trait instead
of an interface is that all messages which are sent by the actors are
implemented as Scala classes. I can change it to be an interface, however I
don't think that it cements the language blend.
* I agree that it's not necessary to use mixins here. The reason to
implement the logging and leader session message decoration as a mixin was just
the beauty of the implementation. But I forgot about the clumsy names in the
log output. I will include the mixins in the class `FlinkActor`.
* It is true that the leader session ID can change in the case of HA with
ZooKeeper. However, the ZooKeeper HA is not part of this PR.
> Assign session IDs to JobManager and TaskManager messages
> ---------------------------------------------------------
>
> Key: FLINK-2332
> URL: https://issues.apache.org/jira/browse/FLINK-2332
> Project: Flink
> Issue Type: Sub-task
> Components: JobManager, TaskManager
> Reporter: Till Rohrmann
> Assignee: Till Rohrmann
> Fix For: 0.10
>
>
> In order to support true high availability {{TaskManager}} and {{JobManager}}
> have to be able to distinguish whether a message was sent from the leader or
> whether a message was sent from a former leader. Messages which come from a
> former leader have to be discarded in order to guarantee a consistent state.
> A way to do achieve this is to assign a leader session ID to a {{JobManager}}
> once he's elected as leader. This leader session ID is sent to the
> {{TaskManager}} upon registration at the {{JobManager}}. All subsequent
> messages should then be decorated with this leader session ID to mark them as
> valid. On the {{TaskManager}} side the received leader session ID as a
> response to the registration message, can then be used to validate incoming
> messages.
> The same holds true for registration messages which should have a
> registration session ID, too. That way, it is possible to distinguish invalid
> registration messages from valid ones. The registration session ID can be
> assigned once the TaskManager is notified about the new leader.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)