Coordinates background pull operations for cluster synchronisation.
Manages async tasks that pull role data from remote nodes, using generation-based change detection to minimise unnecessary RPC traffic.
Summary
Functions
Starts background pulls from all connected nodes for the given scope.
Generation-aware periodic pull.
Pulls roles from a newly discovered node, discovering matching scopes first.
Functions
Starts background pulls from all connected nodes for the given scope.
Each pull runs in a separate Task via Task.Supervisor, and results
are sent back to server as {:pull_update_node, scope, node, roles}.
Generation-aware periodic pull.
For each live node, checks the remote generation first. Only does a full
role pull when the generation has changed. Also detects and reports stale
nodes (in ETS but no longer in Node.list()).
Results are sent back as:
{:pull_update_node, scope, node, roles, gen}— generation known{:pull_update_node, scope, node, roles}— fallback, no generation{:stale_node, scope, node}— node no longer in cluster
Pulls roles from a newly discovered node, discovering matching scopes first.