diff --git a/.changeset/rotten-falcons-fix.md b/.changeset/rotten-falcons-fix.md new file mode 100644 index 0000000000..9e5b5c7974 --- /dev/null +++ b/.changeset/rotten-falcons-fix.md @@ -0,0 +1,5 @@ +--- +"@kadena/graph": patch +--- + +Added validations to ensure that we do not yield same events on subscriptions diff --git a/packages/apps/graph/src/graph/subscription/transaction.ts b/packages/apps/graph/src/graph/subscription/transaction.ts index ba129935f1..65115ba005 100644 --- a/packages/apps/graph/src/graph/subscription/transaction.ts +++ b/packages/apps/graph/src/graph/subscription/transaction.ts @@ -40,6 +40,9 @@ async function* iteratorFn( context: IContext, chainId?: string, ): AsyncGenerator { + let previousTransaction: Transaction | undefined; + let eventYielded: boolean = false; + while (!context.req.socket.destroyed) { const transaction = await prismaClient.transaction.findFirst({ where: { @@ -57,10 +60,17 @@ async function* iteratorFn( chainId, ); - if (mempoolResponse) { + if ( + mempoolResponse && + JSON.stringify(mempoolResponse) !== JSON.stringify(previousTransaction) + ) { + previousTransaction = { ...mempoolResponse }; yield mempoolResponse; } else { - yield undefined; + if (!eventYielded) { + yield undefined; + eventYielded = true; + } } }