myxce/.kiro/specs
Rongsong Shen e635903996
fix(component-failover-adoption): unify apiserver's dual connect paths, fix connect-time UAF
Replaces apiserver's two connect mechanisms -- a per-peer Go loop that
hardcoded nmasters=1 per attempt, and a separate direct-construction
path for the legacy single-host config -- with one pipeline:
buildClusterConfig() parses (via task 4.1's C parser) or synthesizes a
single-candidate config, validates it, then ConfigConverter
(xce_cluster_config_to_client_config) produces the client config for
one xce_backend_init() call. A 3-candidate config now actually
exercises the C library's own failover/standby-redirect handling on
initial connect, matching worker's and scheduler's task 2.1/3.1 work,
instead of a Go-level per-candidate retry loop that never built a real
multi-master config.

Along the way: found and fixed a genuine use-after-free. The deleted
tryConnect() freed its C.CString-allocated host address immediately
after its single connect call returned, but xcecli_ctx_init() stores a
raw pointer to the config forever (client.c:38) and every later
failover rotation re-dereferences it (client_failover.c) -- so any
reconnect after the first would read freed memory. Fixed by giving the
cluster/client config structs package-level, process-lifetime storage
(gClusterCfg/gClientCfg), mirroring worker's and scheduler's file-scope
static pattern, with host/from/key written into fixed-size C arrays
instead of freed heap pointers.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNB4zGPCsHyDUCDJyMbiQN
2026-08-12 07:46:30 +00:00
..
admin-config-tool fix(security): replace exposed admin credential with placeholder 2026-07-31 03:31:23 +00:00
clusterconfig-schema-split update documents 2026-08-10 17:51:51 +08:00
component-failover-adoption fix(component-failover-adoption): unify apiserver's dual connect paths, fix connect-time UAF 2026-08-12 07:46:30 +00:00
config-upgrade-snapshot docs(config-upgrade-snapshot): add host admin-state frames, capnp migration, clear bug-1418 blocker 2026-07-31 09:32:24 +00:00
controller-status update documents 2026-08-10 17:51:51 +08:00
election-iomgr-refactor update documents 2026-08-10 17:51:51 +08:00
ha-commit-barrier-rollout update documents 2026-08-10 17:51:51 +08:00
ha-commit-durability update documents 2026-08-10 17:51:51 +08:00
ha-commit-engine update documents 2026-08-10 17:51:51 +08:00
ha-config-bootstrap update documents 2026-08-10 17:51:51 +08:00
ha-consistency-invariants update documents 2026-08-10 17:51:51 +08:00
ha-convergence-recovery update documents 2026-08-10 17:51:51 +08:00
ha-elect-ctx-lifecycle update documents 2026-08-10 17:51:51 +08:00
ha-entity-snapshots update documents 2026-08-10 17:51:51 +08:00
ha-heartbeat-committed-propagation update documents 2026-08-10 17:51:51 +08:00
ha-heartbeat-liveness update documents 2026-08-10 17:51:51 +08:00
ha-peer-connection-reuse update documents 2026-08-10 17:51:51 +08:00
ha-prevote update documents 2026-08-10 17:51:51 +08:00
ha-repl-hardening update documents 2026-08-10 17:51:51 +08:00
ha-single-leader-role docs: fix unchecked group-header checkboxes across 8 fully-implemented specs 2026-07-07 08:45:41 +00:00
ha-term-safety docs(raft-adapter-conformance): extend controller conformance record with this feature's findings 2026-07-30 03:39:56 +00:00
ha-wal-replication update documents 2026-08-10 17:51:51 +08:00
job-array-single-wal-record fix: bug-1445 -- first-boot promotion check races its own first replay 2026-07-17 10:42:13 +00:00
libxce-failover docs(specs): kiro-validate-impl GO closure for 8 HA/raft specs 2026-07-18 13:27:36 +00:00
raft-adapter-conformance docs(raft-adapter-conformance): commit final design.md/research.md and requirements/spec.json state 2026-07-31 09:29:35 +00:00
raft-apply-decoupling fix(controller): bug-1433 async-thread fdatasync block + bug-1434 committed_lsn CAS race 2026-07-11 12:16:28 +00:00
raft-commit-safety docs: promote raft-apply-decoupling spec family from /kiro-discovery 2026-07-03 02:41:11 +00:00
raft-drive-async fix(netio): bug-1447 same-batch endpoint use-after-free in io_worker dispatch 2026-07-18 13:28:04 +00:00
raft-ha-core-safety fix(controller): bug-1433 async-thread fdatasync block + bug-1434 committed_lsn CAS race 2026-07-11 12:16:28 +00:00
raft-library checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
raft-log-replication docs: promote raft-apply-decoupling spec family from /kiro-discovery 2026-07-03 02:41:11 +00:00
raft-sim-conformance docs(specs): kiro-validate-impl GO closure for 8 HA/raft specs 2026-07-18 13:27:36 +00:00
resource-distribution-mapping add resource distribution map project 2026-07-23 09:20:26 +00:00
resval-id-decoupling checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
scheduler-allocation add scheduler related projects 2026-07-31 17:42:13 +08:00
scheduler-controller-msg-gap checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
scheduler-core docs(scheduler-core): commit accumulated brief/requirements/roadmap edits 2026-08-08 03:19:14 +00:00
scheduler-framework add scheduler related projects 2026-07-31 17:42:13 +08:00
scheduler-preemption add scheduler related projects 2026-07-31 17:42:13 +08:00
worker-join-refactor checkpoint: bug-851 root cause + raft TLA+ conformance spec family 2026-06-21 14:02:15 +00:00
xce-test-e2e-primitives fix(controller): bug-1433 async-thread fdatasync block + bug-1434 committed_lsn CAS race 2026-07-11 12:16:28 +00:00
.gitignore chore: baseline snapshot — prior-session work + ha-consistency-invariants spec family 2026-06-11 13:21:50 +00:00