If you're using Supervisor for local development of microservices, the processes launched by Supervisor are probably not the servers themselves but rather build processes, which in turn launch the servers. The process tree might look something like this:
supervisord - gulp (using gulp-nodemon) - node
Something in this chain tends to lose the server process, so that it keeps running, but no longer under Supervisor control. When, eventually, the "supervised" process starts/restarts, the new server crashes with an EADDRINUSE error.
This custody plugin can automatically fix such port conflicts.
npm install -g @custody/plugin-command-clear-port-conflicts
custody-cli settings and add "@custody/plugin-command-clear-port-conflicts" to your
.custodyrc. Finally, restart
custody-cli to get it to pick up the new plugin.
This module requires that you instrument every process you wish to de-conflict with @custody/probe, please configure that before proceeding. This is because this plugin requires @custody/probe to report the EADDRINUSE error, as described here.
Once you've set up the plugin and probe(s) as described above, this plugin will operate automatically.
How it works
When the plugin detects a port conflict, it will kill the process listening to your desired port, then restart the supervised process.
We welcome bug reports and feature suggestions!