From 1169a7e31efdbd98a91b582474da5d23ded9c126 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 27 Jan 2026 11:44:10 -0800 Subject: purge old nwc events --- lib/nwc.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/nwc.ts b/lib/nwc.ts index a2458ac3..f04c2dde 100644 --- a/lib/nwc.ts +++ b/lib/nwc.ts @@ -38,6 +38,9 @@ const methods = [ ]; const week = 7 * 24 * 60 * 60; +const nwcEventMaxAgeSeconds = 5 * 60; +const handledKey = "handled:nwc"; +const handledMaxSize = 200000; export default () => { const r = new Relay("ws://sf:7777"); @@ -76,9 +79,16 @@ export default () => { r.on("event", async (sub, ev) => { try { if (sub !== "nwc") return; - if (await db.sIsMember("handled", ev.id)) return; - - db.sAdd("handled", ev.id); + const now = Math.floor(Date.now() / 1000); + if (ev.created_at && now - ev.created_at > nwcEventMaxAgeSeconds) return; + if (await db.zScore(handledKey, ev.id)) return; + + db.zAdd(handledKey, { score: now, value: ev.id }); + db.zRemRangeByScore(handledKey, 0, now - nwcEventMaxAgeSeconds); + const size = await db.zCard(handledKey); + if (size > handledMaxSize) { + await db.zRemRangeByRank(handledKey, 0, size - handledMaxSize - 1); + } let { content, pubkey } = ev; const pk = ev.tags.find((t) => t[0] === "p")[1]; const sk = serverKeys[pk]; -- cgit v1.2.3