mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-24 17:51:14 +02:00
feat: Added shutdown hook option (#6585)
An entrypoint for enterprise to register a hook which will be called before the database and scheduler services are torn down. That way enterprise can also perform graceful shutdown.
This commit is contained in:
parent
fca6146b3a
commit
d5bc3585aa
@ -12,13 +12,13 @@ import { createDb } from './db/db-pool';
|
|||||||
import sessionDb from './middleware/session-db';
|
import sessionDb from './middleware/session-db';
|
||||||
// Types
|
// Types
|
||||||
import {
|
import {
|
||||||
|
CustomAuthHandler,
|
||||||
IAuthType,
|
IAuthType,
|
||||||
IUnleash,
|
IUnleash,
|
||||||
IUnleashConfig,
|
IUnleashConfig,
|
||||||
IUnleashOptions,
|
IUnleashOptions,
|
||||||
IUnleashServices,
|
IUnleashServices,
|
||||||
RoleName,
|
RoleName,
|
||||||
CustomAuthHandler,
|
|
||||||
SYSTEM_USER,
|
SYSTEM_USER,
|
||||||
} from './types';
|
} from './types';
|
||||||
|
|
||||||
@ -59,6 +59,13 @@ async function createApp(
|
|||||||
const stopServer = promisify(server.stop);
|
const stopServer = promisify(server.stop);
|
||||||
await stopServer();
|
await stopServer();
|
||||||
}
|
}
|
||||||
|
if (typeof config.shutdownHook === 'function') {
|
||||||
|
try {
|
||||||
|
await config.shutdownHook();
|
||||||
|
} catch (e) {
|
||||||
|
logger.error('Failure when executing shutdown hook', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
services.schedulerService.stop();
|
services.schedulerService.stop();
|
||||||
services.addonService.destroy();
|
services.addonService.destroy();
|
||||||
await db.destroy();
|
await db.destroy();
|
||||||
|
@ -2,7 +2,7 @@ import { Express } from 'express';
|
|||||||
import EventEmitter from 'events';
|
import EventEmitter from 'events';
|
||||||
import { LogLevel, LogProvider } from '../logger';
|
import { LogLevel, LogProvider } from '../logger';
|
||||||
import { ILegacyApiTokenCreate } from './models/api-token';
|
import { ILegacyApiTokenCreate } from './models/api-token';
|
||||||
import { IFlagResolver, IExperimentalOptions, IFlags } from './experimental';
|
import { IExperimentalOptions, IFlagResolver, IFlags } from './experimental';
|
||||||
import SMTPTransport from 'nodemailer/lib/smtp-transport';
|
import SMTPTransport from 'nodemailer/lib/smtp-transport';
|
||||||
import { IUnleashServices } from './services';
|
import { IUnleashServices } from './services';
|
||||||
import { ResourceLimitsSchema } from '../openapi/spec/resource-limits-schema';
|
import { ResourceLimitsSchema } from '../openapi/spec/resource-limits-schema';
|
||||||
@ -231,6 +231,7 @@ export interface IUnleashConfig {
|
|||||||
enableOAS: boolean;
|
enableOAS: boolean;
|
||||||
preHook?: Function;
|
preHook?: Function;
|
||||||
preRouterHook?: Function;
|
preRouterHook?: Function;
|
||||||
|
shutdownHook?: Function;
|
||||||
enterpriseVersion?: string;
|
enterpriseVersion?: string;
|
||||||
eventBus: EventEmitter;
|
eventBus: EventEmitter;
|
||||||
environmentEnableOverrides?: string[];
|
environmentEnableOverrides?: string[];
|
||||||
|
Loading…
Reference in New Issue
Block a user