From 78dc68f55a02cb8a043c1df50c6b9fa3963c25be Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Fri, 14 Jun 2024 12:27:57 +0200 Subject: [PATCH 1/3] Fix teardown process not exiting. --- packages/service-core/src/runner/teardown.ts | 39 ++++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/packages/service-core/src/runner/teardown.ts b/packages/service-core/src/runner/teardown.ts index 2e283f0fd..1800d7dd0 100644 --- a/packages/service-core/src/runner/teardown.ts +++ b/packages/service-core/src/runner/teardown.ts @@ -33,9 +33,10 @@ async function terminateReplicator( source_db: connection, lock }); - console.log('terminating', stream.slot_name); + + micro.logger.info(`Terminating replication slot ${stream.slot_name}`); await stream.terminate(); - console.log('terminated', stream.slot_name); + micro.logger.info(`Terminated replication slot ${stream.slot_name}`); } finally { await lock.release(); } @@ -76,16 +77,32 @@ async function terminateReplicators( export async function teardown(runnerConfig: utils.RunnerConfig) { const config = await utils.loadConfig(runnerConfig); const mongoDB = storage.createPowerSyncMongo(config.storage); - await db.mongo.waitForAuth(mongoDB.db); + try { + micro.logger.info(`Waiting for auth`); + await db.mongo.waitForAuth(mongoDB.db); - const bucketStorage = new storage.MongoBucketStorage(mongoDB, { slot_name_prefix: config.slot_name_prefix }); - const connection = config.connection; + const bucketStorage = new storage.MongoBucketStorage(mongoDB, { slot_name_prefix: config.slot_name_prefix }); + const connection = config.connection; - if (connection) { - await terminateReplicators(bucketStorage, connection); - } + micro.logger.info(`Terminating replication slots`); - const database = mongoDB.db; - await database.dropDatabase(); - await mongoDB.client.close(); + if (connection) { + await terminateReplicators(bucketStorage, connection); + } + + const database = mongoDB.db; + micro.logger.info(`Dropping database ${database.namespace}`); + await database.dropDatabase(); + micro.logger.info(`Done`); + await mongoDB.client.close(); + + // If there was an error connecting to postgress, the process may stay open indefinitely. + // This forces an exit. + // We do not consider those errors a teardown failure. + process.exit(0); + } catch (e) { + micro.logger.error(`Teardown failure`); + await mongoDB.client.close(); + process.exit(1); + } } From 924243d37a8741d91ec18f5485792a8828412afb Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Fri, 14 Jun 2024 12:29:23 +0200 Subject: [PATCH 2/3] Fix log. --- packages/service-core/src/runner/teardown.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/service-core/src/runner/teardown.ts b/packages/service-core/src/runner/teardown.ts index 1800d7dd0..5b33bea33 100644 --- a/packages/service-core/src/runner/teardown.ts +++ b/packages/service-core/src/runner/teardown.ts @@ -101,7 +101,7 @@ export async function teardown(runnerConfig: utils.RunnerConfig) { // We do not consider those errors a teardown failure. process.exit(0); } catch (e) { - micro.logger.error(`Teardown failure`); + micro.logger.error(`Teardown failure`, e); await mongoDB.client.close(); process.exit(1); } From 824591233a57704f64df7924bf58b33b88e2efbe Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Fri, 14 Jun 2024 16:30:48 +0200 Subject: [PATCH 3/3] Add changeset. --- .changeset/rotten-candles-float.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rotten-candles-float.md diff --git a/.changeset/rotten-candles-float.md b/.changeset/rotten-candles-float.md new file mode 100644 index 000000000..cde9e4cd8 --- /dev/null +++ b/.changeset/rotten-candles-float.md @@ -0,0 +1,5 @@ +--- +'@powersync/service-core': patch +--- + +Fix teardown command not terminating after some errors.