partial restart of epmd?

Kent Boortz kent@REDACTED
Wed Jan 15 17:56:05 CET 2003


Ulf Wiger <etxuwig@REDACTED> writes:
> I have a machine where one node is running (and I don't want
> to touch it), and another node has crashed (but epmd still
> has the name).
> 
> To make matters more interesting, one node runs OTP R9B, and
> the other ran OTP R7B.
> 
> How do I resolve this without restarting epmd?

My guess it that you can write a small C program that uses the
erl_interface function erl_unpublish() to unregister the node name.
In the current implementation of the erl_interface library there is no
state kept between a erl_publish() and erl_unpublish() so this should
work.

You can also write a small erlang program that contact epmd with TCP
on port 4369 and that sends a packet, I think it should be something
like

   Two bytes length of packet excluding these two bytes (big endian)
   The byte 115 (ERL_EPMD_STOP_REQ)
   The name to unregister (short name without @xxxxx part and no \0)

See "erl_ext_dist.txt", "epmd_srv.c" and "epmd_unpublish.c".

On Unix it should not be possible that epmd keeps the name after crash
of an Erlang node. If this is the case epmd is in a bad state caused
by a bug in epmd that we don't know of,

kent



More information about the erlang-questions mailing list