From 4fe30a8dce96b4ecea32c33ebcfcc27b53da9f0c Mon Sep 17 00:00:00 2001 From: Mihajlo Pavlovic Date: Fri, 7 Jun 2024 21:44:06 +0800 Subject: [PATCH] OriginTrail Devnet Release v6.4.0 Hotfix 5 (#3189) * OriginTrail Devnet Prerelease v6.4.0 Hotfix 4 (#3185) * OriginTrail Mainnet Prerelease v6.1.1 (#2853) * Upp sharding table migration enabled * Update event insert in chunks * version bump * Add migration for makring staking events as processed * Updated migration executor added mark staking events as processed migration * Updated migration added await on get latest block * Updated migration for all contracts * Migration updated --------- Co-authored-by: NZT48 * Revert "OriginTrail Devnet Prerelease v6.2.0 Hotfix 10" * Revert "Merge pull request #2965 from OriginTrail/revert-2964-v6/develop" This reverts commit d7cd260e073a1b33f14235d90e5b2dc02ec82cc3, reversing changes made to 491baf8f7dd0a97ae29df2a8d54f280f4b22d3a4. * Fix * Fix/handle state finalized events (#3184) * Fix getKnowledgeAssetLocatorFromParanetId call in handleStateFinalizedEvents * Version bump * Correct version * Add more fixes * Fix contract call getKnowledgeAssetLocatorFromParanetId * Fix getKnowledgeAssetLocatorFromParanetId * Add check on state finalized to confirm that paranet repo exists * Fix getKALocator from Paranet ID in handling state finalized * Fix package lock --------- Co-authored-by: NZT48 --------- Co-authored-by: djordjekovac Co-authored-by: NZT48 Co-authored-by: Branimir Rakic <33914812+branarakic@users.noreply.github.com> * OriginTrail Devnet Prerelease v6.4.0 Hotfix 5 (#3188) * OriginTrail Mainnet Prerelease v6.1.1 (#2853) * Upp sharding table migration enabled * Update event insert in chunks * version bump * Add migration for makring staking events as processed * Updated migration executor added mark staking events as processed migration * Updated migration added await on get latest block * Updated migration for all contracts * Migration updated --------- Co-authored-by: NZT48 * Revert "OriginTrail Devnet Prerelease v6.2.0 Hotfix 10" * Revert "Merge pull request #2965 from OriginTrail/revert-2964-v6/develop" This reverts commit d7cd260e073a1b33f14235d90e5b2dc02ec82cc3, reversing changes made to 491baf8f7dd0a97ae29df2a8d54f280f4b22d3a4. * Fix * Fix/handle state finalized events (#3184) * Fix getKnowledgeAssetLocatorFromParanetId call in handleStateFinalizedEvents * Version bump * Correct version * Add more fixes * Fix contract call getKnowledgeAssetLocatorFromParanetId * Fix getKnowledgeAssetLocatorFromParanetId * Add check on state finalized to confirm that paranet repo exists * Fix getKALocator from Paranet ID in handling state finalized * Fix package lock --------- Co-authored-by: NZT48 * Fix/add syncing paranets at blockchain check (#3187) * Add getParanetsBlockchains to repository module manager * Add check paranets synced at blockchain in event listener * Version bump --------- Co-authored-by: djordjekovac Co-authored-by: NZT48 Co-authored-by: Branimir Rakic <33914812+branarakic@users.noreply.github.com> --------- Co-authored-by: djordjekovac Co-authored-by: NZT48 Co-authored-by: Branimir Rakic <33914812+branarakic@users.noreply.github.com> --- package-lock.json | 4 +- package.json | 2 +- .../blockchain/implementation/web3-service.js | 4 +- .../repositories/paranet-repository.js | 10 +++ .../repository/repository-module-manager.js | 4 + .../blockchain-event-listener-service.js | 86 +++++++++++-------- 6 files changed, 71 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07103ed04b..a24751e07e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "origintrail_node", - "version": "6.4.0", + "version": "6.4.0+hotfix.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "origintrail_node", - "version": "6.4.0", + "version": "6.4.0+hotfix.5", "license": "ISC", "dependencies": { "@comunica/query-sparql": "^2.4.3", diff --git a/package.json b/package.json index 6df62272d1..be64037ae8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "origintrail_node", - "version": "6.4.0", + "version": "6.4.0+hotfix.5", "description": "OTNode V6", "main": "index.js", "type": "module", diff --git a/src/modules/blockchain/implementation/web3-service.js b/src/modules/blockchain/implementation/web3-service.js index 3b25e70dca..76b5148913 100644 --- a/src/modules/blockchain/implementation/web3-service.js +++ b/src/modules/blockchain/implementation/web3-service.js @@ -1659,8 +1659,8 @@ class Web3Service { async getKnowledgeAssetLocatorFromParanetId(paranetId) { const [paranetKAStorageContract, paranetKATokenId] = await this.callContractFunction( - this.ParanetRegistryContract, - 'getKnowledgeAssetLocator', + this.ParanetsRegistryContract, + 'getParanetKnowledgeAssetLocator', [paranetId], ); const tokenId = paranetKATokenId.toNumber(); diff --git a/src/modules/repository/implementation/sequelize/repositories/paranet-repository.js b/src/modules/repository/implementation/sequelize/repositories/paranet-repository.js index 3f86f5904d..94ff743e9a 100644 --- a/src/modules/repository/implementation/sequelize/repositories/paranet-repository.js +++ b/src/modules/repository/implementation/sequelize/repositories/paranet-repository.js @@ -1,3 +1,5 @@ +import { Sequelize } from 'sequelize'; + class ParanetRepository { constructor(models) { this.sequelize = models.sequelize; @@ -59,6 +61,14 @@ class ParanetRepository { }, }); } + + async getParanetsBlockchains() { + return this.model.findAll({ + attributes: [ + [Sequelize.fn('DISTINCT', Sequelize.col('blockchain_id')), 'blockchain_id'], + ], + }); + } } export default ParanetRepository; diff --git a/src/modules/repository/repository-module-manager.js b/src/modules/repository/repository-module-manager.js index c6330d8f44..30ad35a165 100644 --- a/src/modules/repository/repository-module-manager.js +++ b/src/modules/repository/repository-module-manager.js @@ -523,6 +523,10 @@ class RepositoryModuleManager extends BaseModuleManager { async getCountOfMissedAssetsOfParanet(ual) { return this.getRepository('missed_paranet_asset').getCountOfMissedAssetsOfParanet(ual); } + + async getParanetsBlockchains() { + return this.getRepository('paranet').getParanetsBlockchains(); + } } export default RepositoryModuleManager; diff --git a/src/service/blockchain-event-listener-service.js b/src/service/blockchain-event-listener-service.js index 85261852a5..f0ea2fb9c7 100644 --- a/src/service/blockchain-event-listener-service.js +++ b/src/service/blockchain-event-listener-service.js @@ -11,6 +11,7 @@ import { DELAY_BETWEEN_FAILED_FETCH_EVENTS_MILLIS, CONTRACT_EVENT_TO_GROUP_MAPPING, GROUPED_CONTRACT_EVENTS, + ZERO_BYTES32, } from '../constants/constants.js'; const fetchEventsFailedCount = {}; @@ -578,49 +579,66 @@ class BlockchainEventListenerService { ]); // eslint-disable-next-line no-await-in-loop - const knowledgeAssetId = await this.paranetService.constructKnowledgeAssetId( - blockchain, - contract, - tokenId, - ); + const paranetsBlockchains = await this.repositoryModuleManager.getParanetsBlockchains(); - // eslint-disable-next-line no-await-in-loop - const paranetId = await this.blockchainModuleManager.getParanetId(knowledgeAssetId); - if (paranetId) { - const { - knowledgeAssetStorageContract: paranetKasContract, - tokenId: paranetTokenId, - // eslint-disable-next-line no-await-in-loop - } = await this.blockchainModuleManager.getKnowledgeAssetLocatorFromParanetId( - paranetId, - ); - const paranetUAL = this.ualService.deriveUAL( + if (paranetsBlockchains.includes(blockchain)) { + // eslint-disable-next-line no-await-in-loop + const knowledgeAssetId = await this.paranetService.constructKnowledgeAssetId( blockchain, - paranetKasContract, - paranetTokenId, + contract, + tokenId, ); // eslint-disable-next-line no-await-in-loop - const paranetAssetExists = await this.tripleStoreService.paranetAssetExists( + const paranetId = await this.blockchainModuleManager.getParanetId( blockchain, - contract, - tokenId, - paranetKasContract, - paranetTokenId, + knowledgeAssetId, ); + if (paranetId && paranetId !== ZERO_BYTES32) { + // eslint-disable-next-line no-await-in-loop + const paranetExists = await this.repositoryModuleManager.paranetExists( + paranetId, + blockchain, + ); + if (paranetExists) { + const { + paranetKAStorageContract: paranetKasContract, + tokenId: paranetTokenId, + } = + // eslint-disable-next-line no-await-in-loop + await this.blockchainModuleManager.getKnowledgeAssetLocatorFromParanetId( + blockchain, + paranetId, + ); + const paranetUAL = this.ualService.deriveUAL( + blockchain, + paranetKasContract, + paranetTokenId, + ); - if (paranetAssetExists) { - const kaUAL = this.ualService.deriveUAL(blockchain, contract, tokenId); + // eslint-disable-next-line no-await-in-loop + const paranetAssetExists = await this.tripleStoreService.paranetAssetExists( + blockchain, + contract, + tokenId, + paranetKasContract, + paranetTokenId, + ); - // Create a record for missing Paranet KA - // Paranet sync command will get it from network - // eslint-disable-next-line no-await-in-loop - await this.repositoryModuleManager.createMissedParanetAssetRecord({ - blockchainId: blockchain, - ual: kaUAL, - paranetUal: paranetUAL, - knowledgeAssetId, - }); + if (paranetAssetExists) { + const kaUAL = this.ualService.deriveUAL(blockchain, contract, tokenId); + + // Create a record for missing Paranet KA + // Paranet sync command will get it from network + // eslint-disable-next-line no-await-in-loop + await this.repositoryModuleManager.createMissedParanetAssetRecord({ + blockchainId: blockchain, + ual: kaUAL, + paranetUal: paranetUAL, + knowledgeAssetId, + }); + } + } } } }