[erlang-questions] monitor and failure detectors

Johan Montelius <>
Tue Jun 8 09:58:28 CEST 2010

One might want it to be more than the "current behaviour" :-)

To exemplify how this question lacks a precise answer one can read this in  
the Reference Manual:

"Message sending is asynchronous and safe, the message is guaranteed to  
eventually reach the recipient, provided that the recipient exists."

In the manual for erlang:monitor/2 we are only told that down messages  
will be sent:

"A 'DOWN' message will be sent to the monitoring process if Item dies, if  
Item does not exist, or if the connection is lost to the node which Item   
resides on."

In the description by Barklund and Virdning it is stated that:

"It is ensured that whenever possible, a signal dispatched to a process  
should eventually arrive at it."

In the "Pitfalls and Recipes" we have:

"If two messages m1 and m2 are sent, in order, from a process Q to a  
process P, and Q is linked (or monitors) to P, and no exit message from P  
is received at Q, then it is guaranteed that the message have been  
delivered, in order, at P."

Which is the opposit of what I propose.

It could well be that it is the "current behaviour" but is it defined by  
the language?


On Tue, 08 Jun 2010 03:00:26 +0200, Scott Lystig Fritchie  
<> wrote:

> Johan Montelius <> wrote:
> jw> If a sequence of messages is potentially lost from A to B and B is
> jw> monitoring A the B will receive a DOWN-noconnection message. The
> jw> DOWN message is delivered to B after the last message that was
> jw> reliably delivered and before any message sent after the potentially
> jw> lost sequence of messages.
> IIRC, that's the current behavior, described in "Programming Distributed
> Erlang Applications: Pitfalls and Recipes" by H. Nilsson &
> L-Ã. Fredlund, ACM Erlang Workshop, 2007.
> -Scott

Associate Professor Johan Montelius
Royal Institute of Technology - KTH
School of Information and Communication Technology - ICT

More information about the erlang-questions mailing list