Why does my release not announce itself to epmd?

I have a release produced by the new 1.9 mix release. The shell script generated for the release can start the service, but none of the other functions that depend on connecting to the running node, such as restart, stop, or pid work. All fail with --rpc-eval : RPC failed with reason :nodedown. When I query epmd with -names it shows no registered nodes.

I can see that the service was started with -sname my_app… so why would epmd not have this name listed?

1 Like

Please which system is this running under ? Windows ? Linux ? etc

How did you find out the service started with -sname my_app ?

It’s running on Linux – Ubuntu Server 18.04. I found that the -sname option was used by inspecting the command line arguments like this: cat /proc/$(pidof beam.smp)/cmdline | tr '\000' ' ' && echo.

I have restarted epmd and the service and now things are working properly, but the question remains: how did we get into this broken state?

Hi, I’m getting this :nodedown error, too.

My app was working on Google Computer with Ubuntu 16.04.

I’m switching to DigitalOcean with Ubuntu 18.04 and seeing this :nodedown error.

Have you learned anything since this post?

We encounter this regularly in our prod and qa environments. I’m convinced it’s a bug, though I haven’t had the time to pin down the exact cause.

It’s lazy, but we avoid the problem by changing the deployment procedure:

  1. scp myapp_0.1.1.tar.gz server:~/deploy_dir/
  2. ssh server
  3. cd ~/deploy_dir
  4. ./bin/myapp stop
  5. tar xzf myapp_0.1.1.tar.gz
  6. ./bin/myapp daemon

So, in a nutshell, stop the running version first, unpack the new version, start the new version. We don’t depend on hot code loading, so this solution is considered good enough. :unamused:

1 Like