ConnectionMonitor.gather_cluster_stats was calling :rpc.call(Node.self()) which GenServer.call'd back into itself while blocked in handle_info, causing a 5-second deadlock timeout every 30 seconds. Fixed by computing local stats directly from state. LeaderElection never verified that a leader still held the :global registration. After :global conflict resolution (two isolated nodes merging), the loser was silently unregistered but stayed is_leader: true forever, causing both pods to connect to APRS-IS with the same callsign in a reconnect loop. Fixed by adding verify_leadership/1 to check_leadership which detects lost registrations and steps down. |
||
|---|---|---|
| .. | ||
| aprsme | ||
| aprsme_web | ||
| mix/tasks | ||
| aprs_web.ex | ||
| aprsme.ex | ||