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)

Reply via email to