[erlang-questions] Delivery of messages
Thu Feb 23 18:49:53 CET 2012
Hello - I'm new to Erlang but have been working on concurrency stuff
for 27 years plus. I'm afraid I want to ask a question asked many
times before, but under specific conditions that I've not seen nailed
down. It's about the guaranteed delivery of messages.
The most authoritative discussion I've found is question 10.10 at:
The answer quotes Per Hedeland:
"Delivery is guaranteed if nothing breaks ..."
which would have been enough but for the following discussion! This
"It seems this issue of "guaranteed delivery" comes up every now
and then, but I've never managed to find out exactly what it is
those that are asking for it actually want ..."
Three possible wants are then itemised, none of which are mine. My
If process P sends a message to process Q and:
* neither process crashes;
* Q commits to receive P's message;
* the cores/processors/computers on which P and Q are running
do not crash or get turned off;
* no part of the communication fabric delivering the message
crashes or gets turned off;
is Q guaranteed to receive the message? (1)
I want to be sure that, under these conditions (in which nothing is
breaking), no message is ever lost in the system between P and Q.
A message *might* be lost by a non-crashing communication fabric
(e.g. if a buffer somewhere became full and, for memory or time
reasons, it was thought best to discard some traffic silently) or
by a non-crashing Erlang run-time system (same reason).
Do we have a guarantee that this (or something similar) does not
Is the answer to question (1) ... "Yes"?
More information about the erlang-questions