From d75894eb9ba3085cd297531748421ce6c6341cfb Mon Sep 17 00:00:00 2001 From: Opliko Date: Thu, 21 Mar 2024 00:25:27 +0100 Subject: [PATCH] feat: add TTL cache for Actors.assert --- src/activitypub/actors.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/activitypub/actors.js b/src/activitypub/actors.js index 11c0d87128..0f18efcbf4 100644 --- a/src/activitypub/actors.js +++ b/src/activitypub/actors.js @@ -5,6 +5,9 @@ const winston = require('winston'); const db = require('../database'); const user = require('../user'); const utils = require('../utils'); +const TTLCache = require('../cache/ttl'); + +const failedWebfingerCache = TTLCache({ ttl: 1000 * 60 * 10 }); // 10 minutes const activitypub = module.parent.exports; @@ -17,14 +20,17 @@ Actors.assert = async (ids, options = {}) => { } // Filter out uids if passed in - ids = ids.filter(id => !utils.isNumber(id)); + ids = ids.filter(id => !utils.isNumber(id) && !failedWebfingerCache.has(id)); // Translate webfinger handles to uris ids = await Promise.all(ids.map(async (id) => { + const originalId = id; if (id.includes('@')) { ({ actorUri: id } = await activitypub.helpers.query(id)); } - + if (!id) { + failedWebfingerCache.set(originalId, true); + } return id; }));