diff --git a/src/workers/wallet.ts b/src/workers/wallet.ts index b9999cd..390786b 100644 --- a/src/workers/wallet.ts +++ b/src/workers/wallet.ts @@ -27,6 +27,7 @@ export class WalletWorker { private sequence?: number private accountNumber?: number private logger: Logger + private errorTracker = new Map() constructor( public chain: ChainWorker, @@ -68,6 +69,15 @@ export class WalletWorker { this.accountNumber = accInfo.getAccountNumber() } + private async checkAndStoreError(code: string, error: Error) { + const now = Date.now() + const lastErrorTime = this.errorTracker.get(code) ?? 0 + if (now - lastErrorTime > 10 * 60 * 1000) { + this.errorTracker.set(code, now) + await captureException(error) + } + } + private async handlePackets() { if (this.chain.latestHeight === undefined) return @@ -395,7 +405,7 @@ export class WalletWorker { `Tx failed. raw log - ${result.raw_log}, code - ${result.code}` ) - await captureException(error) + await this.checkAndStoreError(result.code.toString(), error) this.logger.error(error) throw error }