feat(config-upgrade-snapshot): restore host admin-state frame safely (create-if-missing)

Adds restore_host_state(cluster_t*, const char*, uint32_t admin_status)
to worker.c: OR's admin bits into an existing worker's status on hit;
on miss, creates a minimal XCE_WORKER_UNAVAIL placeholder via
makeWorker (mirroring the lost_and_found sentinel host precedent),
with a valid non-NULL hostattrs_t so the host's later real join routes
through rejoin_worker (not init_worker) and preserves the restored
admin status. Idempotent under retry (find first, create only if
missing). Standalone -- not yet wired into load_snapshot (task 4).

Requirements: 1.10, 1.11, 5.8
This commit is contained in:
Rongsong Shen 2026-07-24 12:48:28 +00:00
parent 387ea35c9f
commit 5b1600a8b2
6 changed files with 467 additions and 1 deletions

View file

@ -13,5 +13,6 @@ extern int init_worker(cluster_t*, endpoint_t*, const char*,
extern int rejoin_worker(cluster_t*, worker_t*, endpoint_t*,
hostattrs_t*, xce_hostconfig_t*);
extern int restore_worker(void*, xce_worker_t);
extern int restore_host_state(cluster_t*, const char*, uint32_t);
extern int worker_from_capnp(cluster_t*, const void*, size_t);
#endif