Starting processes at remote nodes

Fredrik Linder fredrik.linder@REDACTED
Mon Jun 7 11:27:51 CEST 2004


> -----Original Message-----
> From: owner-erlang-questions@REDACTED
> [mailto:owner-erlang-questions@REDACTED]On Behalf Of Martin 
> Bjorklund
> 
> Vance Shipley <vances@REDACTED> wrote:
> > Folks,
> > 
> > Is there a good reason why we don't have a proc_lib function
> > to synchronously start a process on a remote node?
> 
> proc_lib and gen_* _could_ have these functions, but a supervisor
> should only supervise local processes, otherwise it can't do it's job
> properly - which is to guarantee that workers are running according to
> the specs, and exit if they don't.
> 
> Suppose that supervisor S runs on A and supervises W on node B.  now
> the link between A and B goes down.  S will get a
> {'EXIT',W,noconnection} message.  Now what should S do?
> 
> The other problem is that the supervision tree is used to find
> processes during code upgrade.  If the module for W is upgraded on
> node B, W will not be found.

That only tells us that the supervisor code should only use the local start of gen_*, while those requested functions could still be exported for others to use.

I cannot see any good reason why the start-at-another-node functions could not still be exported from the proc_lib module, unless the proc_lib may only be used by the supervisor... (in which case it shouldn't really be a separate module anyway).

Cheers
/Fredrik



More information about the erlang-questions mailing list