Use case
The 12 phases are seeded as a fixed linear chain with one global timeout key. Per-phase timeouts, custom phases and dependency edges, a bound on the final terminate step, per-reason exit codes and the “run shutdown when this member is downed” trigger are all shutdown policy — config, not code.
Proposed keys
actor-ts.coordinated-shutdown {
phases {
service-unbind { timeout = 5s, recover = on, depends-on = [before-service-unbind] }
# custom phases compose into the graph the same way
}
close-actor-system-timeout = 60s
exit-code = 0
reason-overrides {
# cluster-downing.exit-code = 1
}
run-by-process-signals = on
run-by-actor-system-terminate = on
}
actor-ts.cluster.run-coordinated-shutdown-when-down = on
Acceptance
- A per-phase timeout from config overrides the default for exactly that phase; the DAG accepts added phases with depends-on.
- Keys ship wired —
tests/unit/config/NoDeadConfigKeys.test.ts rejects a key nothing reads.
Related: #663
Part of the reference.conf expansion batch — tracked in #887.
Use case
The 12 phases are seeded as a fixed linear chain with one global timeout key. Per-phase timeouts, custom phases and dependency edges, a bound on the final terminate step, per-reason exit codes and the “run shutdown when this member is downed” trigger are all shutdown policy — config, not code.
Proposed keys
Acceptance
tests/unit/config/NoDeadConfigKeys.test.tsrejects a key nothing reads.Related: #663
Part of the reference.conf expansion batch — tracked in #887.