diff --git a/src/index.ts b/src/index.ts index 5f6aa14..19d3111 100644 --- a/src/index.ts +++ b/src/index.ts @@ -55,8 +55,8 @@ if (process.argv.length > 2 && process.argv[2] === "--deploy-slash") { container.registerInstance("got", createGotClient()); - // TTL: 1 minute, sweep every 5 minutes - container.registerInstance(RecentMessageCache, new RecentMessageCache(60000, 300000)); + // TTL: 5 minutes, sweep every 5 minutes + container.registerInstance(RecentMessageCache, new RecentMessageCache(300000, 300000)); container.register("limitRegulationRush", limitRegulationRushProvider); container.register("limitRegulationMasterDuel", limitRegulationMasterDuelProvider); diff --git a/src/message-cache.ts b/src/message-cache.ts index e8961b9..ece3307 100644 --- a/src/message-cache.ts +++ b/src/message-cache.ts @@ -1,4 +1,5 @@ import { Message, Snowflake } from "discord.js"; +import { getLogger } from "./logger"; /** * In-memory key-value store used by SearchMessageListener to store recent <> card searches @@ -6,6 +7,8 @@ import { Message, Snowflake } from "discord.js"; * if the searcher's message is deleted within a specified interval. */ export class RecentMessageCache { + #logger = getLogger("message-cache"); + // This could also store the message objects protected map: Map = new Map(); protected interval: NodeJS.Timeout; @@ -30,6 +33,7 @@ export class RecentMessageCache { return; } if (entry.createdTimestamp + this.ttlMilliseconds < Date.now()) { + this.#logger.info(`get expired after ${this.ttlMilliseconds} ms: ${entry}`); this.map.delete(message); return; } @@ -41,12 +45,14 @@ export class RecentMessageCache { } protected sweep(): void { + this.#logger.info(`sweep on ${this.map.size} entries`); for (const [message, { createdTimestamp }] of this.map) { if (createdTimestamp + this.ttlMilliseconds < Date.now()) { // This is safe to do in the loop as maps have guaranteed order this.map.delete(message); } } + this.#logger.info(`sweep finished leaving ${this.map.size} entries`); } /**