From ddf0510c1c901d6ba6d675430425fccada3dcd82 Mon Sep 17 00:00:00 2001 From: Roman Vaivod Date: Tue, 14 Sep 2021 11:12:13 +0200 Subject: [PATCH 1/2] gh-821: Put migrations table check inside lock --- src/runner.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runner.ts b/src/runner.ts index 7252897e..2e824081 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -190,12 +190,12 @@ export default async (options: RunnerOption): Promise => { await db.query(`CREATE SCHEMA IF NOT EXISTS "${options.migrationsSchema}"`) } - await ensureMigrationsTable(db, options) - if (!options.noLock) { await lock(db) } + await ensureMigrationsTable(db, options) + const [migrations, runNames] = await Promise.all([ loadMigrations(db, options, logger), getRunMigrations(db, options), From 35dd708b5c8d2c2a6037773da560397ebd10d4e0 Mon Sep 17 00:00:00 2001 From: Roman Vaivod Date: Wed, 15 Sep 2021 12:38:51 +0200 Subject: [PATCH 2/2] gh-821: Move scheme creation under lock --- src/runner.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/runner.ts b/src/runner.ts index 2e824081..3146faf7 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -179,6 +179,11 @@ export default async (options: RunnerOption): Promise => { const db = Db((options as RunnerOptionClient).dbClient || (options as RunnerOptionUrl).databaseUrl, logger) try { await db.createConnection() + + if (!options.noLock) { + await lock(db) + } + if (options.schema) { const schemas = getSchemas(options.schema) if (options.createSchema) { @@ -190,10 +195,6 @@ export default async (options: RunnerOption): Promise => { await db.query(`CREATE SCHEMA IF NOT EXISTS "${options.migrationsSchema}"`) } - if (!options.noLock) { - await lock(db) - } - await ensureMigrationsTable(db, options) const [migrations, runNames] = await Promise.all([