Commit bd078e2c authored by Ramon Nou's avatar Ramon Nou
Browse files

Merge branch 'client-mutate-reload' into 'master'

client: reload routing state after mutate without restarting

A completed gkfs_malleability mutate updates the daemons via
forward_mutate_reload() but never an already-connected client, which keeps
routing RPCs to removed daemons forever (NA_TIMEOUT retry storm, confirmed
via live pstack against DMR malleable-checkpoint workloads on MN5).

Adds an in-process reload: PreloadContext now holds hosts/distributor/
local_host_id as one mutex-guarded RoutingSnapshot swapped atomically via
commit_routing(), and a dedicated watcher thread (sigwait on
LIBGKFS_RELOAD_SIGNAL, default SIGUSR1, blocked process-wide so it can only
be consumed there) calls reload_client_topology() to reparse the hosts file
and rebuild routing state live -- mirroring MalleableManager::reload_hosts_file()
on the daemon side, without tearing down the Margo/Mercury engine or
restarting the process.

See merge request !319
parents f170709b 1750ce03
Loading
Loading
Loading
Loading