From ad3052ba5f04d6b0ee76788c60ac1ca165bd672c Mon Sep 17 00:00:00 2001 From: Mihajlo Pavlovic Date: Fri, 19 Jul 2024 15:09:53 +0200 Subject: [PATCH] Make migrations non blocking --- ot-node.js | 12 +++++----- ...e-duplicate-service-agreement-migration.js | 22 +++++++++++-------- .../service-agreement-repository.js | 4 ++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/ot-node.js b/ot-node.js index 754425752..4ce41e5af 100644 --- a/ot-node.js +++ b/ot-node.js @@ -78,12 +78,6 @@ class OTNode { this.config, ); - await MigrationExecutor.executeServiceAgreementPruningMigration( - this.container, - this.logger, - this.config, - ); - await this.initializeRouters(); await this.startNetworkModule(); this.startTelemetryModule(); @@ -96,6 +90,12 @@ class OTNode { this.config, ); + MigrationExecutor.executeServiceAgreementPruningMigration( + this.container, + this.logger, + this.config, + ); + MigrationExecutor.executeRemoveDuplicateServiceAgreementMigration( this.container, this.logger, diff --git a/src/migration/remove-duplicate-service-agreement-migration.js b/src/migration/remove-duplicate-service-agreement-migration.js index 8e646606c..489596173 100644 --- a/src/migration/remove-duplicate-service-agreement-migration.js +++ b/src/migration/remove-duplicate-service-agreement-migration.js @@ -23,15 +23,19 @@ class RemoveDuplicateServiceAgreementMigration extends BaseMigration { blockchainId, ); for (const serviceAgreement of findDuplicateServiceAgreements) { - const blockchainAssertionId = - // eslint-disable-next-line no-await-in-loop - await this.blockchainModuleManager.getAssertionIdByIndex( - blockchainId, - serviceAgreement.assetStorageContractAddress, - serviceAgreement.tokenId, - serviceAgreement.stateIndex, - ); - if (serviceAgreement.assertionId !== blockchainAssertionId) { + try { + const blockchainAssertionId = + // eslint-disable-next-line no-await-in-loop + await this.blockchainModuleManager.getAssertionIdByIndex( + blockchainId, + serviceAgreement.assetStorageContractAddress, + serviceAgreement.tokenId, + serviceAgreement.stateIndex, + ); + if (serviceAgreement.assertionId !== blockchainAssertionId) { + incorrectServiceAgreementId.push(serviceAgreement.agreementId); + } + } catch (error) { incorrectServiceAgreementId.push(serviceAgreement.agreementId); } } diff --git a/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js b/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js index c8fbdc56b..844a523dc 100644 --- a/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js +++ b/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js @@ -303,10 +303,10 @@ class ServiceAgreementRepository { const query = ` DELETE FROM service_agreement WHERE blockchain_id = '${blockchainId}' - AND asset_storage_contract_address = '${contract}' + AND asset_storage_contract_address != '${contract}' LIMIT 100000; `; - await this.model.query(query, { + await this.sequelize.query(query, { type: Sequelize.QueryTypes.DELETE, }); }