fa65e794ec
fix(libxce-failover): known-dead ctx (XCE_CTX_ERR) triggers reconnect instead of surfacing -EINVAL
...
Live 3-node E2E revealed the reported 'Invalid argument' bug was still
reachable: after the primary dies, handle_disconnect leaves ctx.state=
XCE_CTX_ERR, so a FRESH xce_* call returns -EINVAL from the xceapi guard
before reaching a primary. The classifier mapped -EINVAL to TERMINAL, so the
loop bailed without rotating/recovering. decide() now detects the known-dead
ctx and treats it as a prompt reconnect cause (RETRY_NOW), surfacing the
distinct cluster-not-ready code on budget exhaustion, never -EINVAL.
Regression test: test_decide_known_dead_ctx_retries_not_terminal.
2026-06-17 04:46:01 +00:00
c616f41364
test(libxce-failover): consolidate unit suite green + jitter staggering coverage (task 6.1)
2026-06-17 04:26:00 +00:00
fdb8938059
feat(libxce-failover): best-effort single-shot reconnect for fire-and-forget ops (notify/heartbeat/nop) (task 5.2)
2026-06-17 04:08:58 +00:00
4345974b54
feat(libxce-failover): wrap 18 reply-bearing xcecli_* ops in failover loop under per-ctx lock; correct nop OpCategory (task 5.1)
2026-06-17 03:57:51 +00:00
8783ce5a9d
feat(libxce-failover): reconnect/rejoin hook — public setter + post-reconnect invocation before resume (task 4.1)
2026-06-17 03:46:05 +00:00
12284bc3f5
feat(libxce-failover): reconnect recovery — ctx ERR->RUN reset + stale wbuf drain (fixes post-failover EINVAL) (task 3.2)
2026-06-17 03:36:24 +00:00
84c5e32c2c
feat(libxce-failover): retry decision loop — pure decide (budget/backoff/jitter, D6 exhaustion) + thin next wrapper (task 3.1)
2026-06-17 03:27:38 +00:00
cec2e647dc
feat(libxce-failover): capture redirect hint in handle_reply (before free, before status return); verify endpoint-error wake (task 2.3)
2026-06-17 03:11:18 +00:00
c7e11a4e9e
feat(libxce-failover): endpoint rotator — hint-first target selection + master rotation; keep api_ctx_t decls private (task 2.2)
2026-06-17 02:56:48 +00:00
fa2ac05036
feat(libxce-failover): 4-action status classifier with attempt-aware DUP-replay rule (task 2.1)
2026-06-17 02:42:54 +00:00
d11c6e1d89
feat(libxce-failover): reusable failover test harness — fake masters, status taxonomy, concurrency runner (task 1.2)
2026-06-17 02:32:19 +00:00
387ccfa8dc
feat(libxce-failover): foundation — per-ctx failover state, redirect-hint fields, remove orphaned retry primitive (task 1.1)
2026-06-17 00:05:41 +00:00
0ec0ffa7e3
feat(ha-config-bootstrap): implement xce_retry_config_t and xce_request_with_retry (tasks 10.1, 10.2)
2026-05-29 03:00:34 +00:00
bb8e531a12
test(ha-config-bootstrap): add RED-phase tests for xce_request_with_retry (task 10.1)
2026-05-29 02:45:24 +00:00