From 5c80b2ca062eca6d5bb8215a2e3dbe69746a9193 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Tue, 25 Oct 2022 13:37:26 +0100 Subject: [PATCH] Startup fixes --- packages/backend-core/src/redis/redlock.ts | 7 ++++++- packages/server/src/app.ts | 8 +++++--- packages/server/src/automations/triggers.js | 4 ++-- packages/server/src/migrations/index.ts | 1 + packages/types/src/sdk/locks.ts | 4 ++++ packages/worker/src/migrations/index.ts | 1 + 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/backend-core/src/redis/redlock.ts b/packages/backend-core/src/redis/redlock.ts index abb13b2534..586302c9b1 100644 --- a/packages/backend-core/src/redis/redlock.ts +++ b/packages/backend-core/src/redis/redlock.ts @@ -55,7 +55,12 @@ export const doWithLock = async (opts: LockOptions, task: any) => { let lock try { // aquire lock - let name: string = `${tenancy.getTenantId()}_${opts.name}` + let name: string + if (opts.systemLock) { + name = opts.name + } else { + name = `${tenancy.getTenantId()}_${opts.name}` + } if (opts.nameSuffix) { name = name + `_${opts.nameSuffix}` } diff --git a/packages/server/src/app.ts b/packages/server/src/app.ts index 330adadd3d..d8ed2c872b 100644 --- a/packages/server/src/app.ts +++ b/packages/server/src/app.ts @@ -122,7 +122,6 @@ module.exports = server.listen(env.PORT || 0, async () => { eventEmitter.emitPort(env.PORT) fileSystem.init() await redis.init() - await initPro() // run migrations on startup if not done via http // not recommended in a clustered environment @@ -180,8 +179,11 @@ module.exports = server.listen(env.PORT || 0, async () => { // check for version updates await installation.checkInstallVersion() - // done last - this will never complete - await automations.init() + // done last - these will never complete + let promises = [] + promises.push(automations.init()) + promises.push(initPro()) + await Promise.all(promises) }) const shutdown = () => { diff --git a/packages/server/src/automations/triggers.js b/packages/server/src/automations/triggers.js index 6a4bbd8da6..3481cebf9b 100644 --- a/packages/server/src/automations/triggers.js +++ b/packages/server/src/automations/triggers.js @@ -116,8 +116,8 @@ exports.externalTrigger = async function ( exports.rebootTrigger = async () => { // reboot cron option is only available on the main thread at - // startup and only usable in self host - if (env.isInThread() || !env.SELF_HOSTED) { + // startup and only usable in self host and single tenant environments + if (env.isInThread() || !env.SELF_HOSTED || env.MULTI_TENANCY) { return } // iterate through all production apps, find the reboot crons diff --git a/packages/server/src/migrations/index.ts b/packages/server/src/migrations/index.ts index 275a954a78..6ef6a3fda6 100644 --- a/packages/server/src/migrations/index.ts +++ b/packages/server/src/migrations/index.ts @@ -97,6 +97,7 @@ const migrateWithLock = async (options?: MigrationOptions) => { type: LockType.TRY_ONCE, name: LockName.MIGRATIONS, ttl: 1000 * 60 * 15, // auto expire the migration lock after 15 minutes + systemLock: true, }, async () => { await migrations.runMigrations(MIGRATIONS, options) diff --git a/packages/types/src/sdk/locks.ts b/packages/types/src/sdk/locks.ts index 3aa067bea1..e2f1902762 100644 --- a/packages/types/src/sdk/locks.ts +++ b/packages/types/src/sdk/locks.ts @@ -28,4 +28,8 @@ export interface LockOptions { * The suffix to add to the lock name for additional uniqueness */ nameSuffix?: string + /** + * This is a system-wide lock - don't use tenancy in lock key + */ + systemLock?: boolean } diff --git a/packages/worker/src/migrations/index.ts b/packages/worker/src/migrations/index.ts index 19ef076a52..642fbeb54e 100644 --- a/packages/worker/src/migrations/index.ts +++ b/packages/worker/src/migrations/index.ts @@ -53,6 +53,7 @@ const migrateWithLock = async (options?: MigrationOptions) => { type: LockType.TRY_ONCE, name: LockName.MIGRATIONS, ttl: 1000 * 60 * 15, // auto expire the migration lock after 15 minutes + systemLock: true, }, async () => { await migrations.runMigrations(MIGRATIONS, options)