From 0f04890d8fc9f21753dbe8bf804081ce4d04157a Mon Sep 17 00:00:00 2001 From: carlosmonastyrski Date: Thu, 26 Jun 2025 21:18:07 -0300 Subject: [PATCH] feat(telemetry): addressed PR suggestions --- backend/e2e-test/mocks/keystore.ts | 7 +++++-- backend/src/keystore/keystore.ts | 5 ++++- backend/src/keystore/memory.ts | 6 ++++-- backend/src/services/telemetry/telemetry-queue.ts | 4 ++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/backend/e2e-test/mocks/keystore.ts b/backend/e2e-test/mocks/keystore.ts index e5bc23d4b..91b64ff0d 100644 --- a/backend/e2e-test/mocks/keystore.ts +++ b/backend/e2e-test/mocks/keystore.ts @@ -8,6 +8,9 @@ import { Lock } from "@app/lib/red-lock"; export const mockKeyStore = (): TKeyStoreFactory => { const store: Record = {}; + const getRegex = (pattern: string) => + new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); + return { setItem: async (key, value) => { store[key] = value; @@ -23,7 +26,7 @@ export const mockKeyStore = (): TKeyStoreFactory => { return 1; }, deleteItems: async ({ pattern, batchSize = 500, delay = 1500, jitter = 200 }) => { - const regex = new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); + const regex = getRegex(pattern); let totalDeleted = 0; const keys = Object.keys(store); @@ -64,7 +67,7 @@ export const mockKeyStore = (): TKeyStoreFactory => { return values; }, getKeysByPattern: async (pattern) => { - const regex = new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); + const regex = getRegex(pattern); const keys = Object.keys(store); return keys.filter((key) => regex.test(key)); }, diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index df130c48b..10e5477e5 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -114,7 +114,10 @@ export const keyStoreFactory = (redisConfigKeys: TRedisConfigKeys): TKeyStoreFac const deleteItem = async (key: string) => redis.del(key); - const deleteItemsByKeyIn = async (keys: string[]) => redis.del(keys); + const deleteItemsByKeyIn = async (keys: string[]) => { + if (keys.length === 0) return 0; + return redis.del(keys); + }; const deleteItems = async ({ pattern, batchSize = 500, delay = 1500, jitter = 200 }: TDeleteItems) => { let cursor = "0"; diff --git a/backend/src/keystore/memory.ts b/backend/src/keystore/memory.ts index 03448ef58..cf9ba83bd 100644 --- a/backend/src/keystore/memory.ts +++ b/backend/src/keystore/memory.ts @@ -8,6 +8,8 @@ import { TKeyStoreFactory } from "./keystore"; export const inMemoryKeyStore = (): TKeyStoreFactory => { const store: Record = {}; + const getRegex = (pattern: string) => + new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); return { setItem: async (key, value) => { @@ -24,7 +26,7 @@ export const inMemoryKeyStore = (): TKeyStoreFactory => { return 1; }, deleteItems: async ({ pattern, batchSize = 500, delay = 1500, jitter = 200 }) => { - const regex = new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); + const regex = getRegex(pattern); let totalDeleted = 0; const keys = Object.keys(store); @@ -61,7 +63,7 @@ export const inMemoryKeyStore = (): TKeyStoreFactory => { }, waitTillReady: async () => {}, getKeysByPattern: async (pattern) => { - const regex = new RE2(`^${pattern.replace(/[-[\]/{}()+?.\\^$|]/g, "\\$&").replace(/\*/g, ".*")}$`); + const regex = getRegex(pattern); const keys = Object.keys(store); return keys.filter((key) => regex.test(key)); }, diff --git a/backend/src/services/telemetry/telemetry-queue.ts b/backend/src/services/telemetry/telemetry-queue.ts index e5af0a092..c645db466 100644 --- a/backend/src/services/telemetry/telemetry-queue.ts +++ b/backend/src/services/telemetry/telemetry-queue.ts @@ -79,7 +79,7 @@ export const telemetryQueueServiceFactory = ({ await queueService.stopRepeatableJob( QueueName.TelemetryAggregatedEvents, QueueJobs.TelemetryAggregatedEvents, - { pattern: "*/2 * * * *", utc: true }, + { pattern: "*/5 * * * *", utc: true }, QueueName.TelemetryAggregatedEvents // just a job id ); @@ -92,7 +92,7 @@ export const telemetryQueueServiceFactory = ({ // Start aggregated events job (runs every five minutes) await queueService.queue(QueueName.TelemetryAggregatedEvents, QueueJobs.TelemetryAggregatedEvents, undefined, { jobId: QueueName.TelemetryAggregatedEvents, - repeat: { pattern: "*/2 * * * *", utc: true } + repeat: { pattern: "*/5 * * * *", utc: true } }); } };