myxce/.wolf/bugs
lei.chen b471ce31ca fix(esd): re-join after transparent reconnect -- bug-1978
A controller restart dropped xceesd's resval pushes forever: the fresh
endpoint is created by handle_connection() with priv->role =
HostRole_client, and only OPCode_join sets HostRole_extres -- but the
old esd_on_reconnect cleared only g_needs_full_push, so the daemon
re-PUSHED onto an un-joined endpoint and every push landed in
do_update_resvals's neither-branch, refused -EPERM forever (live
sighting: pushes_ok frozen, rc=-1 every 10s).

Mirror the worker's needs_rejoin contract: the reconnect handler now
sets BOTH g_needs_rejoin and g_needs_full_push; the main loop consumes
the re-join first (xcecli_join(HostRole_extres) on the main thread,
outside the failover lock -- the xcecd_on_reconnect no-I/O constraint),
retrying next tick on failure, then does the full re-push.

Live t1/t2 proof: controller restart -> "esd: re-joined after
reconnect (rc=0)" + "full re-push: 1/1 source(s)" + extlic back in
`xcecli resources distribution list`. Two new white-box unit tests pin
the both-flags contract (13/13 in the esd suite).

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-28 14:07:41 +00:00
..
bug-1971.md bug-1971: fix_commits field via buglog.py status 2026-10-22 08:08:44 +00:00
bug-1972.md wolf: mark bug-1972 fixed (commit f780a166) 2026-10-26 14:03:05 +00:00
bug-1973.md wolf: mark bug-1973/1974/1975 fixed (commit 2fcacac2) 2026-10-27 03:45:49 +00:00
bug-1974.md wolf: mark bug-1973/1974/1975 fixed (commit 2fcacac2) 2026-10-27 03:45:49 +00:00
bug-1975.md wolf: mark bug-1973/1974/1975 fixed (commit 2fcacac2) 2026-10-27 03:45:49 +00:00
bug-1976.md wolf: log bug-1976 fixed (controller dispatch commit dropped allocs_shared) 2026-10-28 05:40:03 +00:00
bug-1977.md fix(testsuite): resize crr_build_config caller arrays -- bug-1977 2026-10-28 11:58:19 +00:00
bug-1978.md fix(esd): re-join after transparent reconnect -- bug-1978 2026-10-28 14:07:41 +00:00