aprs.me/lib/aprsme/cluster
Graham McIntire 753fa50463
Fix ConnectionMonitor deadlock and LeaderElection silent leadership loss
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.
2026-02-19 18:18:31 -06:00
..
connection_manager.ex more tests 2026-02-09 17:21:16 -06:00
leader_election.ex Fix ConnectionMonitor deadlock and LeaderElection silent leadership loss 2026-02-19 18:18:31 -06:00
packet_distributor.ex Performance improvements, code cleanup, remove sobelow 2026-02-19 14:51:01 -06:00
packet_receiver.ex Complete nested module alias fixes and update Sobelow skips 2026-02-09 11:26:47 -06:00
topology.ex Add Cluster.Supervisor directly to application supervision tree 2025-07-25 11:03:20 -05:00