[ 
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)

Reply via email to