feat(worker-rejoin-resync): wire config fields into xceadmin build (task 1.5)

Add workerResyncWindowMs/workerResyncTimeoutMs to xce.schema.json
(minimum:0, matching the optional-scalar-field precedent -- these
aren't `required` with a floor like heartbeatInterval, so minimum:1
would be wrong) and to mapping.py's YAML->capnp field table. Regenerate
both golden config-build fixtures (task 1.1 grew ClusterConfig's wire
layout by 2 fields; full/expected.bin and minimal/expected.bin each
grew by exactly 8 bytes). full's fixture YAML now sets real values
(900000ms/15000ms); minimal deliberately left untouched (no xce.yaml)
per its own locked-down "hosts+queues only" boundary test -- its
expected.bin still regenerates to reflect the new default-0 fields.
Two new tests assert specific decoded values, not just "build succeeds".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4M5MJM2zK6nU43da267Ku
This commit is contained in:
Rongsong Shen 2026-09-01 09:47:02 +00:00
parent 9f3dfe7903
commit ce3d391e5e
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
8 changed files with 81 additions and 9 deletions

View file

@ -29,6 +29,16 @@
"type": "integer",
"minimum": 0,
"description": "network I/O timeout in seconds"
},
"worker_resync_window_ms": {
"type": "integer",
"minimum": 0,
"description": "worker job-state reconciliation: how far back (in milliseconds) a recently-finished job stays eligible for extra reporting on rejoin"
},
"worker_resync_timeout_ms": {
"type": "integer",
"minimum": 0,
"description": "worker job-state reconciliation: how long (in milliseconds) the controller waits for a rejoining worker's job-status report before resolving the reconciliation as timed out"
}
},
"required": ["cluster_name", "heartbeat_interval", "inactive_heartbeat_count"]