Phoenix.Tracker handle_diff unable to call Phoenix.Tracker.List

The one thing to consider with handle_diff is that it will execute on every node in the cluster for a given change. This means that if there’s some logic you want to do once, it will actually run N times.

The Channel approach may work here (especially if intercepting handle_diff). You can execute code to check the kiosks and shut down in that case. I normally recommend Tracker, but Presence would actually fit pretty well if you’re intercepting handle_diff. It’s just tracker + broadcasting the diff to that topic.