[erlang-questions] : : PID recycling

Raimo Niskanen <>
Tue Sep 9 13:14:26 CEST 2008


On Tue, Sep 09, 2008 at 10:38:54AM +0200, Zoltan Peter Toth wrote:
> Hi,
> 
> What about the case when we have a number of erlang nodes on different 
> hosts ?
> Will the epmd-s on the other hosts maintain the incarnation counter for 
> a restarted host ?
> 
> It seems to me that even if one host is restarted (or beam and epmd 
> killed on it), the
> incarnation counter continues as if the local epmd was running. So I 
> assume that
> those are the other epmd-s that keep track of that counter.
> (... or I just overlooked something ? )

Well, yes.

The incarnation counter aka creation is kept in the local epmd.
Any erlang node only registers with the local epmd. When you 
look up a node on a remote host you ask the remote epmd.
Epmd is mostly a local register on a host to map from node
to TCP/IP port number, and it also keeps the creation counter
(for the local nodes).

For a new node (also when epmd is new) the initial creation
is "randomized" in the interval 1..3 as current time in
seconds modulo 3 plus 1.

epmd_srv.c:1093:
	  node->creation = (current_time(g) % 3) + 1; /* "random" 1-3 */


> 
> Br,
>    Zoltan
> 
> Raimo Niskanen wrote:
> >On Mon, Sep 08, 2008 at 01:59:56PM +0200, Zoltan Peter Toth wrote:
> >  
> >>Hi Raimo !
> >>
> >>Thanks. So if a node completely restarts, i.e. epmd as well, then the 
> >>cycling is lost,
> >>i.e. after 0 there will be 0 again after the reboot, right ?
> >>    
> >
> >Well, 1, since nodes with names use creation 1..3,
> >but you are right.
> >
> >  

-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list