1.5 KiB
Proposal
Why
The "Graceful shutdown" requirement says that on SIGTERM a node with active rooms closes them with SERVER_SHUTDOWN
and flushes their end. The server does not do that: the first SIGTERM drains it (no new participants, wait for the
present ones to leave) and only a second signal closes the rooms. A forced stop of a node (docker-compose down, which
kills it after its grace period) therefore ends while it drains, writes nothing more, and the reconciler closes its
sessions as for a crashed node. The integration test of that case expects leave events and fails.
What Changes
- The requirement describes the drain: during it the participants that leave are written as usual; a second signal
closes the rooms with
SERVER_SHUTDOWN; once the rooms are closed, the flush works as before. - A node killed while it drains is left to the reconciler, as a crashed one.
- No server or writer behaviour changes.
Scope excludes the following:
- The drain itself and the stop of media nodes in the deployments.
Edition: CE and PRO (server). Repositories: the specs of the dashboard, and the end-to-end reconciler tests of the deployments (forced media node stop).
CHANGELOG: none.
Capabilities
New Capabilities
None.
Modified Capabilities
server-analytics-writer: "Graceful shutdown" describes the drain and the forced stop.
Impact
- Specs only, and the forced media node stop case of the end-to-end reconciler tests, which now expects the reconciler to close the sessions of a node stopped by force.