heart does not restart node launched with run_erl
erlang-questions@REDACTED
erlang-questions@REDACTED
Wed Jan 4 22:27:57 CET 2006
Hi all,
Ran into a weird problem. I have an embedded application that is started with run_erl from a .sh script. I also use heart to restart the application. HEART_COMMAND is set to launch the same start.sh script that was used to start the application initially. At the start, the process tree looks as follows:
3196 ? S 0:00 /home/drpdev/erts-5.4.10/bin/run_erl -daemon /home/drpdev/var/tmp/drp /home/drpdev/var/log/drp -exec /home/drpdev/bin/start_erl
3202 pts/2 Ssl+ 0:02 _ /home/drpdev/erts-5.4.10/bin/beam -- -root /home/drpdev -progname drip -- -home /home/drpdev -boot /home/drpdev/releases/1.
3222 ? Ss 0:00 _ heart -pid 3202
3227 ? Ss 0:00 _ inet_gethost 4
3228 ? S 0:00 | _ inet_gethost 4
3229 ? Ss 0:00 _ sh -s disksup
To test the restart, I kill pid 3202 and see the following:
3222 ? Ss 0:00 heart -pid 3202
3196 ? S 0:00 /home/drpdev/erts-5.4.10/bin/run_erl -daemon /home/drpdev/var/tmp/drp /home/drpdev/var/log/drp -exec /home/drpdev/bin/start_erl
3202 ? Zs 0:02 _ [beam] <defunct>
Next, heart launches the script:
3253 ? S 0:00 /bin/bash /home/drpdev/bin/drip.sh start
3272 ? S 0:00 _ sleep 3
3196 ? S 0:00 /home/drpdev/erts-5.4.10/bin/run_erl -daemon /home/drpdev/var/tmp/drp /home/drpdev/var/log/drp -exec /home/drpdev/bin/start_erl
3202 ? Zs 0:02 _ [beam] <defunct>
The sleep 3 is right before it calls the run_erl command to start the embedded application. Note that the old run_erl (pid 3196) is still hanging around although the node itself (pid 3202) is defunct.
When drip.sh calls run_erl, the old run_erl (pid 3196) goes away, but no new run_erl process appears. Application is not started either. erlang.log.1 does not showI see the following in the run_erl.log:
-------
Pty master read; run_erl [3196] Wed Jan 4 15:59:37 2006
Pty master read; run_erl [3196] Wed Jan 4 16:00:46 2006
Pty master read; run_erl [3196] Wed Jan 4 16:00:51 2006
Pty master read; run_erl [3279] Wed Jan 4 16:00:54 2006
/home/drpdev/erts-5.4.10/bin/run_erl: pid is : 3279
run_erl [3196] Wed Jan 4 16:00:54 2006
FIFO read; run_erl [3196] Wed Jan 4 16:00:54 2006
OK
run_erl [3196] Wed Jan 4 16:00:54 2006
Pty master read; run_erl [3196] Wed Jan 4 16:00:54 2006
Pty master read; run_erl [3196] Wed Jan 4 16:00:54 2006
Pty master read; run_erl [3196] Wed Jan 4 16:00:54 2006
Erlang closed the connection.
-------
I am curious why new run_erl (pid 3279) process did not start. Also, why did the old run_erl (pid 3196) did not terminate until the new run_erl attempted to start? I verified that this is not a coincidence - old run_erl will remain hanging in the process list until a new run_erl is started.
Please, let me know if anyone else experienced similar issue. If needed I can provide additional info/config files, but not sure at this point which ones.
Thank you.
Dmitry Korsun
IDT Corp.
_________________________________________________________
Sent using Mail2Forum (http://m2f.sourceforge.net)
More information about the erlang-questions
mailing list