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.
Remote nodes are checked concurrently (bounded by @max_pull_concurrency)
so pull cycles stay fast on large clusters.
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, gen}.
Generation-aware periodic pull.
For each live node, checks the remote generation first (concurrently across
nodes). 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}—genis an integer when the remote generation was known,nilotherwise{:stale_node, scope, node}— node no longer in cluster
Pulls roles from a newly discovered node, discovering matching scopes first.