Merge pull request #27961 from backstage/camilaibs/create-accepting-request-health-check-endpoint

Stop accepting traffic before shutdown
This commit is contained in:
Camila Belo
2024-12-10 13:21:46 +01:00
committed by GitHub
26 changed files with 541 additions and 30 deletions
@@ -449,6 +449,11 @@ export class BackendInitializer {
// The startup failed, but we may still want to do cleanup so we continue silently
}
const rootLifecycleService = await this.#getRootLifecycleImpl();
// Root services like the health one need to immediatelly be notified of the shutdown
await rootLifecycleService.beforeShutdown();
// Get all plugins.
const allPlugins = new Set<string>();
for (const feature of this.#registrations) {
@@ -468,14 +473,14 @@ export class BackendInitializer {
);
// Once all plugin shutdown hooks are done, run root shutdown hooks.
const lifecycleService = await this.#getRootLifecycleImpl();
await lifecycleService.shutdown();
await rootLifecycleService.shutdown();
}
// Bit of a hacky way to grab the lifecycle services, potentially find a nicer way to do this
async #getRootLifecycleImpl(): Promise<
RootLifecycleService & {
startup(): Promise<void>;
beforeShutdown(): Promise<void>;
shutdown(): Promise<void>;
}
> {
@@ -36,6 +36,7 @@ describe('createSpecializedBackend', () => {
deps: {},
factory: async () => ({
addStartupHook: () => {},
addBeforeShutdownHook: () => {},
addShutdownHook: () => {},
}),
}),
@@ -44,6 +45,7 @@ describe('createSpecializedBackend', () => {
deps: {},
factory: async () => ({
addStartupHook: () => {},
addBeforeShutdownHook: () => {},
addShutdownHook: () => {},
}),
}),