Feb. 11, 2013 Erlang FreeBSD RU/EN По-русски

Erlang. Fix run multiple copies of epmd

Faced with the problem when you do not ping the erlang-node on some server that is running two epmd. And running two of them, because one runs the project (at the start erl), and the second starts ejabberd.

Symptoms resemble a problem with firewall:

(test2@127.0.0.1)1> net_adm:ping('test1@127.0.0.1').
pang

See ps ax:

ps ax | grep epmd
root     1212   ... /usr/local/lib/erlang/erts-5.9.3.1/bin/epmd -daemon
root     1515   ... /usr/local/bin/epmd -daemon

And if you execute kill 1212 1515 and run again erl, it will be pinged:

(test2@127.0.0.1)1> net_adm:ping('test1@127.0.0.1').
pong

Additional symptoms I described on Stack Overflow.

Solution

Open for editing /etc/rc.conf:

ejabberd_enable="YES"
epmd_enable="YES"

And in /usr/local/etc/rc.d/epmd adding:

start_precmd=epmd_prestart
epmd_prestart() {
    `ps ax | grep epmd | awk '{ print $1}' | xargs kill`
    return 0
}

We have to use a hack, because I could not find how to get ejabberd not to launch epmd.

Comments

Post your comment

Markdown