data duplicator runs in transaction

This commit is contained in:
Jan Prochazka 2023-02-12 12:14:07 +01:00
parent 5b6f90abc5
commit bb2f1399ba

View File

@ -207,11 +207,18 @@ export class DataDuplicator {
async run() { async run() {
this.createPlan(); this.createPlan();
for (const item of this.itemPlan) { await runCommandOnDriver(this.pool, this.driver, dmp => dmp.beginTransaction());
const stats = await item.runImport(); try {
logger.info( for (const item of this.itemPlan) {
`Duplicated ${item.name}, inserted ${stats.inserted} rows, mapped ${stats.mapped} rows, missing ${stats.missing} rows` const stats = await item.runImport();
); logger.info(
`Duplicated ${item.name}, inserted ${stats.inserted} rows, mapped ${stats.mapped} rows, missing ${stats.missing} rows`
);
}
} catch (err) {
logger.error({ err }, 'Failed duplicator job, rollbacking');
await runCommandOnDriver(this.pool, this.driver, dmp => dmp.rollbackTransaction());
} }
await runCommandOnDriver(this.pool, this.driver, dmp => dmp.commitTransaction());
} }
} }