From aaf9614230e35b2b5c9065f9f3444a082a93dbad Mon Sep 17 00:00:00 2001 From: matias martinez Date: Tue, 28 Nov 2023 13:44:31 -0300 Subject: [PATCH] adding job counter metric --- blockchain-watcher/config/default.json | 2 +- blockchain-watcher/src/domain/actions/RunPollingJob.ts | 10 +++++++++- .../src/domain/actions/evm/PollEvmLogs.ts | 2 +- .../domain/actions/solana/PollSolanaTransactions.ts | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/blockchain-watcher/config/default.json b/blockchain-watcher/config/default.json index d713ece0..b1ab4779 100644 --- a/blockchain-watcher/config/default.json +++ b/blockchain-watcher/config/default.json @@ -25,7 +25,7 @@ "timeout": 10000, "rateLimit": { "period": 10000, - "limit": 40 + "limit": 20 } }, "ethereum": { diff --git a/blockchain-watcher/src/domain/actions/RunPollingJob.ts b/blockchain-watcher/src/domain/actions/RunPollingJob.ts index d0a42052..11b5fc03 100644 --- a/blockchain-watcher/src/domain/actions/RunPollingJob.ts +++ b/blockchain-watcher/src/domain/actions/RunPollingJob.ts @@ -1,9 +1,12 @@ import { setTimeout } from "timers/promises"; import winston from "winston"; import { Handler } from "../entities"; +import { StatRepository } from "../repositories"; export abstract class RunPollingJob { private interval: number; + private id: string; + private statRepo?: StatRepository; private running: boolean = false; protected abstract logger: winston.Logger; protected abstract preHook(): Promise; @@ -11,9 +14,11 @@ export abstract class RunPollingJob { protected abstract get(): Promise; protected abstract persist(): Promise; - constructor(interval: number) { + constructor(interval: number, id: string, statRepo?: StatRepository) { this.interval = interval; + this.id = id; this.running = true; + this.statRepo = statRepo; } public async run(handlers: Handler[]): Promise { @@ -33,16 +38,19 @@ export abstract class RunPollingJob { await Promise.all(handlers.map((handler) => handler(items))); } catch (e: Error | any) { this.logger.error("Error processing items", e, e.stack); + this.statRepo?.count("job_runs_total", { id: this.id, status: "error" }); await setTimeout(this.interval); continue; } await this.persist(); + this.statRepo?.count("job_runs_total", { id: this.id, status: "success" }); await setTimeout(this.interval); } } public async stop(): Promise { this.running = false; + this.statRepo?.count("job_runs_stopped", { id: this.id }); } } diff --git a/blockchain-watcher/src/domain/actions/evm/PollEvmLogs.ts b/blockchain-watcher/src/domain/actions/evm/PollEvmLogs.ts index aaf58b3b..b82e6c60 100644 --- a/blockchain-watcher/src/domain/actions/evm/PollEvmLogs.ts +++ b/blockchain-watcher/src/domain/actions/evm/PollEvmLogs.ts @@ -26,7 +26,7 @@ export class PollEvmLogs extends RunPollingJob { statsRepository: StatRepository, cfg: PollEvmLogsConfig ) { - super(cfg.interval ?? 1_000); + super(cfg.interval ?? 1_000, cfg.id, statsRepository); this.blockRepo = blockRepo; this.metadataRepo = metadataRepo; this.statsRepository = statsRepository; diff --git a/blockchain-watcher/src/domain/actions/solana/PollSolanaTransactions.ts b/blockchain-watcher/src/domain/actions/solana/PollSolanaTransactions.ts index dea9f377..7ca940ea 100644 --- a/blockchain-watcher/src/domain/actions/solana/PollSolanaTransactions.ts +++ b/blockchain-watcher/src/domain/actions/solana/PollSolanaTransactions.ts @@ -19,7 +19,7 @@ export class PollSolanaTransactions extends RunPollingJob { statsRepo: StatRepository, cfg: PollSolanaTransactionsConfig ) { - super(1_000); + super(1_000, cfg.id, statsRepo); this.metadataRepo = metadataRepo; this.slotRepository = slotRepo;