Skip to content

[Feature] Coordinated-shutdown phase graph from config #866

Description

@pathosDev

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions