Neil Conway created MESOS-6572:
----------------------------------
Summary: 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
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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)