You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Neil Conway (JIRA)" <ji...@apache.org> on 2016/11/10 17:30:59 UTC

[jira] [Created] (MESOS-6572) Consider introducing a "linked" predicate in libprocess

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)