From 20e125ed42e06bdb10c0e54e82455b61ebcb4a5e Mon Sep 17 00:00:00 2001 From: Phillip Ho Date: Tue, 5 Nov 2024 10:54:47 +0800 Subject: [PATCH] chore: move webhook errors to debug logging --- src/server/schemas/sharedApiSchemas.ts | 3 ++- src/worker/tasks/sendWebhookWorker.ts | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/server/schemas/sharedApiSchemas.ts b/src/server/schemas/sharedApiSchemas.ts index 48387e549..61053cb75 100644 --- a/src/server/schemas/sharedApiSchemas.ts +++ b/src/server/schemas/sharedApiSchemas.ts @@ -28,7 +28,8 @@ export const contractParamSchema = Type.Object({ export const requestQuerystringSchema = Type.Object({ simulateTx: Type.Optional( Type.Boolean({ - description: "Simulate the transaction without executing it.", + description: + "Simulates the transaction before adding it to the queue, returning an error if it fails simulation. Note: This step is less performant and recommended only for debugging purposes.", default: false, }), ), diff --git a/src/worker/tasks/sendWebhookWorker.ts b/src/worker/tasks/sendWebhookWorker.ts index 0d6d60530..a8cf60c23 100644 --- a/src/worker/tasks/sendWebhookWorker.ts +++ b/src/worker/tasks/sendWebhookWorker.ts @@ -12,9 +12,9 @@ import { type TransactionSchema, } from "../../server/schemas/transaction"; import { toTransactionReceiptSchema } from "../../server/schemas/transactionReceipt"; +import { logger } from "../../utils/logger"; import { redis } from "../../utils/redis/redis"; import { sendWebhookRequest, type WebhookResponse } from "../../utils/webhook"; -import { logWorkerExceptions } from "../queues/queues"; import { SendWebhookQueue, type WebhookJob } from "../queues/sendWebhookQueue"; const handler: Processor = async (job: Job) => { @@ -68,19 +68,25 @@ const handler: Processor = async (job: Job) => { } } + // Throw on 5xx so it remains in the queue to retry later. if (resp && resp.status >= 500) { - // Throw on 5xx so it remains in the queue to retry later. - throw new Error( + const error = new Error( `Received status ${resp.status} from webhook ${webhook.url}.`, ); + job.log(error.message); + logger({ + level: "debug", + message: error.message, + service: "worker", + }); + throw error; } }; // Must be explicitly called for the worker to run on this host. export const initSendWebhookWorker = () => { - const _worker = new Worker(SendWebhookQueue.q.name, handler, { + new Worker(SendWebhookQueue.q.name, handler, { concurrency: 10, connection: redis, }); - logWorkerExceptions(_worker); };