[
https://issues.apache.org/jira/browse/MESOS-6572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Neil Conway updated MESOS-6572:
-------------------------------
Description:
Whether there is a {{link}} between two processes is an important correctness
requirement (for example, libprocess currently only guarantees ordered delivery
if the sender is linked to the receiver). However, there is currently no way to
check whether a link exists.
We should consider adding a predicate, {{linked(pid)}}, that returns true iff
the current process is linked to {{pid}}. This might be a little subtle to
implement correctly: it would need to return {{true}} if there is a pending
{{ExitedEvent}} on the socket (since the sender won't have been given a chance
to re-establish the link after a socket error).
Note that various places in Mesos (e.g., master, agent, and scheduler driver)
maintain {{connected}} booleans that they use to track whether they have seen a
socket error when communicating with a particular entity. It might be worth
exploring if we can either replace these variables with a call to {{linked}},
or less aggressively, to add a {{CHECK}} to ensure that we are always linked to
a process we think we are connected to.
A related idea (per Joris) would be to add a {{linked_send}} variant, that
buffers or drops an outbound message if the recipient is not linked to.
was:
Whether there is a {{link}} between two processes is an important correctness
requirement (for example, libprocess currently only guarantees ordered delivery
if the sender is linked to the receiver). However, there is currently no way to
check whether a link exists.
We should consider adding a predicate, {{linked(pid)}}, that returns true iff
the current process is linked to {{pid}}. This might be a little subtle to
implement correctly: it would need to return {{true}} if there is a pending
{{ExitedEvent}} on the socket (since the sender won't have been given a chance
to re-establish the link after a socket error).
Note that various places in Mesos (e.g., master, agent, and scheduler driver)
maintain {{connected}} booleans that they use to track whether they have seen a
socket error when communicating with a particular entity. It might be worth
exploring if we can either replace these variables with a call to {{linked}},
or less aggressively, to add {{CHECK}}s to ensure that we are always linked to
a process we think we are connected to.
A related idea (per Joris) would be to add a {{linked_send}} variant, that
buffers or drops an outbound message if the recipient is not linked to.
> Consider introducing a "linked" predicate in libprocess
> -------------------------------------------------------
>
> Key: MESOS-6572
> URL: https://issues.apache.org/jira/browse/MESOS-6572
> Project: Mesos
> Issue Type: Improvement
> Components: libprocess
> Reporter: Neil Conway
> Labels: mesosphere
>
> Whether there is a {{link}} between two processes is an important correctness
> requirement (for example, libprocess currently only guarantees ordered
> delivery if the sender is linked to the receiver). However, there is
> currently no way to check whether a link exists.
> We should consider adding a predicate, {{linked(pid)}}, that returns true iff
> the current process is linked to {{pid}}. This might be a little subtle to
> implement correctly: it would need to return {{true}} if there is a pending
> {{ExitedEvent}} on the socket (since the sender won't have been given a
> chance to re-establish the link after a socket error).
> Note that various places in Mesos (e.g., master, agent, and scheduler driver)
> maintain {{connected}} booleans that they use to track whether they have seen
> a socket error when communicating with a particular entity. It might be worth
> exploring if we can either replace these variables with a call to {{linked}},
> or less aggressively, to add a {{CHECK}} to ensure that we are always linked
> to a process we think we are connected to.
> A related idea (per Joris) would be to add a {{linked_send}} variant, that
> buffers or drops an outbound message if the recipient is not linked to.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)