docs(worker-rejoin-resync): fold worker config-delivery gap into task 6.1
Task 4.1 discovered and correctly self-scoped away from a real gap: the worker daemon has no delivery path at all today for any ClusterConfig field -- worker_push_config's existing wire push carries a generic confvars key/value list plus a small number of directly-pulled fields (clustername is the existing precedent). Confirmed by direct trace (controller/worker.c's collect_confvars/conf4worker construction, and grep of worker/src/controller_connector.c's opcode dispatch switch, which has no clusterconf case). Added workerResyncWindowMs delivery to task 6.1's scope, mirroring the clustername precedent exactly -- no new opcode needed, reuses the existing OPCode_push/WorkerConfig struct that task already touches (on_worker_join). Without this, task 4.1's retention window (built correctly, as a settable seam with a documented placeholder default) would never actually receive an operator-tuned value in production. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4M5MJM2zK6nU43da267Ku
This commit is contained in:
parent
eec2596c5d
commit
087b8c1804
1 changed files with 4 additions and 3 deletions
|
|
@ -114,9 +114,10 @@
|
|||
- [ ] 6.1 Trigger reconciliation on worker rejoin and send the query
|
||||
- At the moment a worker host becomes connected again (first join, network reconnect, or reconnect after controller failover, treated identically), check whether the controller currently holds non-terminal jobs for that host and, if so, arm a reconciliation round for it
|
||||
- Send the round's query to the worker as a follow-up exchange after the join reply and the existing configuration push have both already been sent, not as an extension of the join call itself
|
||||
- Observable completion: rejoining a worker with known non-terminal jobs results in a reconciliation round being armed and the corresponding query being sent to that worker, in that order, after the join reply; rejoining a worker with none results in no round and no query
|
||||
- _Requirements: 1.1, 1.2, 1.3, 2.1, 2.2_
|
||||
- _Depends: 1.4, 3.1_
|
||||
- Also close a gap task 4.1 discovered and correctly left out of its own boundary: the worker daemon has no delivery path at all today for any `ClusterConfig` field (the existing `worker_push_config`/`on_worker_join` push carries a generic `confvars` key/value list plus a small number of directly-pulled fields — `clustername` is the existing precedent, `src/controller/worker.c` around the `collect_confvars`/`conf4worker` construction). Add `workerResyncWindowMs` to that same push, mirroring the `clustername` field precedent exactly (no new opcode needed — this reuses the existing `OPCode_push`/`WorkerConfig` wire struct this task already touches), and have the worker's existing config-receive handling call `xcecd_finished_job_retention_set_window_ms()` (task 4.1) with the received value so the retention window task 4.1 built is actually operator-tunable end-to-end, not stuck on its documented placeholder default
|
||||
- Observable completion: rejoining a worker with known non-terminal jobs results in a reconciliation round being armed and the corresponding query being sent to that worker, in that order, after the join reply; rejoining a worker with none results in no round and no query; a worker that receives a config push with a non-default `workerResyncWindowMs` value applies it to its own retention window before the push completes
|
||||
- _Requirements: 1.1, 1.2, 1.3, 2.1, 2.2, 3.7_
|
||||
- _Depends: 1.4, 3.1, 4.1_
|
||||
|
||||
- [ ] 6.2 Route an incoming job-state report to reconciliation processing
|
||||
- Dispatch an incoming job-state report message to the reconciliation-processing logic, correctly reassembling a report that arrives across multiple pages before it is applied
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue