Перейти к содержимому
Русский

CoordinatedShutdown

Это содержимое пока не доступно на вашем языке.

Defined in: src/CoordinatedShutdown.ts:83

Lifecycle coordinator that runs registered tasks in well-known phases. Ordinary application code calls addTask(phase, name, task); the runtime guarantees task order across phases and bounded parallelism within a phase. Task failures are logged and do NOT by default abort the rest of the pipeline.

new CoordinatedShutdown(system): CoordinatedShutdown

Defined in: src/CoordinatedShutdown.ts:122

ActorSystem

CoordinatedShutdown

readonly autoRegisterTasks: boolean

Defined in: src/CoordinatedShutdown.ts:120

Whether framework components register their own teardown — see addFrameworkTask.


defaultPhaseTimeoutMs: number = DEFAULT_PHASE_TIMEOUT_MS

Defined in: src/CoordinatedShutdown.ts:111

Default per-phase timeout in ms. Can be changed globally or per-phase via setPhaseTimeout, or from actor-ts.coordinated-shutdown. default-phase-timeout. 5 seconds is a reasonable balance between letting slow tasks finish and not blocking shutdown indefinitely.

Assigning it later only affects phases registered after the fact — the 12 canonical phases copy it when they are seeded below, which is why the config read has to happen first.

get isComplete(): boolean

Defined in: src/CoordinatedShutdown.ts:252

True once run() has completed (successful or not).

boolean


get isRunning(): boolean

Defined in: src/CoordinatedShutdown.ts:250

True once run() has been kicked off.

boolean

addFrameworkTask(phase, name, task): boolean

Defined in: src/CoordinatedShutdown.ts:205

Register a task the framework owns — an HTTP unbind, a broker teardown, the cluster leave, the DevTools detach — and report whether it was taken.

Identical to addTask except that it is a no-op when actor-ts.coordinated-shutdown.auto-register-tasks is false. That flag is the opt-out for an embedder who wants the pipeline’s phases but not its opinions about when its own resources go: a host process that hands the same HTTP server to two subsystems, a test harness that binds and unbinds inside one system, or anyone who would rather order the teardown by hand. It is deliberately one switch rather than one per subsystem — the reason to reach for it is never “unbind the HTTP server but leave the brokers to me”, it is “I own the lifecycle”.

The boolean return exists so a caller can skip the matching removeTask bookkeeping instead of guessing.

string

string

ShutdownTask

boolean


addPhase(def): void

Defined in: src/CoordinatedShutdown.ts:230

Add a custom phase. dependsOn tells the coordinator where in the order it sits.

PhaseDefinition

void


addTask(phase, name, task): void

Defined in: src/CoordinatedShutdown.ts:175

Register a task to run during the given phase. Task names must be unique within a phase.

string

string

ShutdownTask

void


installProcessHooks(signals?): void

Defined in: src/CoordinatedShutdown.ts:275

Install SIGTERM / SIGINT handlers that call run(ProcessTerminateReason). Calling twice is harmless. Uninstall via removeProcessHooks.

Delivery goes through the src/runtime/signals/ backend rather than process.on directly, because Deno’s process shim carries no signal events — the old call site registered nothing at all there and reported success (#549). A signal the runtime cannot deliver is skipped rather than registered: on Deno that would throw, and on Windows there is no SIGTERM to catch under any runtime.

readonly ProcessSignal[] = ...

void


removeProcessHooks(): void

Defined in: src/CoordinatedShutdown.ts:298

Detach the handlers this instance installed.

Not optional housekeeping on Deno: a signal listener there holds the event loop open with no unref to soften it, so a program that installs one and never removes it stops exiting by itself.

void


removeTask(phase, name): boolean

Defined in: src/CoordinatedShutdown.ts:220

Unregister a task, returning whether one was there.

A task registered for a resource that has since been released must be able to go with it. Without this, a component that registers on acquire — the HTTP layer’s http-unbind-<host>:<port>, say — could never re-acquire the same resource in one process: the second registration collides with a task whose binding no longer exists.

string

string

boolean


run(reason?): Promise<void>

Defined in: src/CoordinatedShutdown.ts:258

Run the pipeline. Safe to call from multiple sites — subsequent calls return the same in-flight promise.

Reason = UnknownReason.instance

Promise<void>


setPhaseTimeout(phase, timeoutMs): void

Defined in: src/CoordinatedShutdown.ts:243

Override the timeout for a phase. Uses defaultPhaseTimeoutMs by default.

string

number

void