Hi.
Thanks for putting the library together.
Before I found it, I’ve been trying to hack my own implementation and I ended up with a very similar code as yours.
However, both your code and mine suffers from an unexpected behavior.
When a 2nd node joins the cluster, I do see:
23:24:54.246 [info] global: Name conflict terminating {:singleton, #PID<18487.303.0>}
But what is unexpected is that not only the singleton process is terminated, but the whole application on one of the nodes:
23:25:47.517 [info] Application wpc5_singleton exited: killed
And one of the nodes basically is left in a state where my own application is not running, only the “libraries” continue running.
I’ve been struggling with the same issue in my own implementation.
I created a DynamicSupervisor for the singleton process, similarly to you and I was hoping that it will “shield” the main Application supervisor from crashing when the :global registry kills one of the singleton processes.
However, that doesn’t seem to be the case and the whole application dies regardless of multiple layers of supervisors ![]()
Using Elixir version 1.12.3






















