From 45536387c2b524f205e66e01c9f04693e971e4d9 Mon Sep 17 00:00:00 2001 From: Scott Twiname Date: Mon, 30 Oct 2023 13:30:20 +1300 Subject: [PATCH] Fix indexing events multiple times --- packages/node/src/indexer/indexer.manager.ts | 3 ++- packages/node/src/subcommands/testing.module.ts | 4 ++++ packages/types/src/interfaces.ts | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/node/src/indexer/indexer.manager.ts b/packages/node/src/indexer/indexer.manager.ts index ce46224f5..f3cdc3136 100644 --- a/packages/node/src/indexer/indexer.manager.ts +++ b/packages/node/src/indexer/indexer.manager.ts @@ -120,8 +120,9 @@ export class IndexerManager extends BaseIndexerManager< for (const msg of msgs) { await this.indexMessage(msg, dataSources, getVM); const events = blockContent.events.filter( - (event) => event.msg?.idx === msg.idx, + (event) => event.tx.hash === tx.hash && event.msg?.idx === msg.idx, ); + for (const evt of events) { await this.indexEvent(evt, dataSources, getVM); } diff --git a/packages/node/src/subcommands/testing.module.ts b/packages/node/src/subcommands/testing.module.ts index 0e7baebf1..336c8e1cc 100644 --- a/packages/node/src/subcommands/testing.module.ts +++ b/packages/node/src/subcommands/testing.module.ts @@ -8,7 +8,9 @@ import { ConnectionPoolService, ConnectionPoolStateManager, DbModule, + InMemoryCacheService, PoiService, + PoiSyncService, StoreService, TestRunner, } from '@subql/node-core'; @@ -26,10 +28,12 @@ import { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service'; @Module({ providers: [ + InMemoryCacheService, StoreService, StoreCacheService, EventEmitter2, PoiService, + PoiSyncService, SandboxService, DsProcessorService, DynamicDsService, diff --git a/packages/types/src/interfaces.ts b/packages/types/src/interfaces.ts index 3658d53b3..0c2d0ea3d 100644 --- a/packages/types/src/interfaces.ts +++ b/packages/types/src/interfaces.ts @@ -28,6 +28,9 @@ export interface CosmosTransaction { } export interface CosmosMessage { + /** + * The index of the message within the transaction + */ idx: number; block: CosmosBlock; tx: CosmosTransaction;