diff --git a/src/lib/server-impl.ts b/src/lib/server-impl.ts index 26a5382e34..042984aaa2 100644 --- a/src/lib/server-impl.ts +++ b/src/lib/server-impl.ts @@ -35,6 +35,7 @@ import * as eventType from './types/events'; import { Db } from './db/db'; import { defaultLockKey, defaultTimeout, withDbLock } from './util/db-lock'; import { scheduleServices } from './features/scheduler/schedule-services'; +import { scheduleStartupTasks } from './features/startup-tasks/startup-task-runner'; async function createApp( config: IUnleashConfig, @@ -50,6 +51,10 @@ async function createApp( await scheduleServices(services); } + if (config.flagResolver.isEnabled('startupTasks')) { + await scheduleStartupTasks(services); + } + const metricsMonitor = createMetricsMonitor(); const unleashSession = sessionDb(config, db); diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index dc82cd2d1c..0734106266 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -44,7 +44,8 @@ export type IFlagKey = | 'extendedUsageMetrics' | 'extendedUsageMetricsUI' | 'adminTokenKillSwitch' - | 'changeRequestConflictHandling'; + | 'changeRequestConflictHandling' + | 'startupTasks'; export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>; @@ -203,6 +204,10 @@ const flags: IFlags = { process.env.UNLEASH_EXPERIMENTAL_CHANGE_REQUEST_CONFLICT_HANDLING, false, ), + startupTasks: parseEnvVarBoolean( + process.env.UNLEASH_EXPERIMENTAL_STARTUP_TASKS, + false, + ), }; export const defaultExperimentalOptions: IExperimentalOptions = {