From eda9f117c77c5399b6867a4ee8b4d5598004036f Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Mon, 23 Feb 2026 14:21:24 -0800 Subject: [PATCH] fix: default timeout on user caches of 15 min (#2530) --- src/backend/src/helpers.js | 4 ++-- src/backend/src/services/UserRedisCacheSpace.js | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/backend/src/helpers.js b/src/backend/src/helpers.js index 8f1133413..5be84c80d 100644 --- a/src/backend/src/helpers.js +++ b/src/backend/src/helpers.js @@ -290,7 +290,7 @@ export async function get_user (options) { * @param {User} userID - the user entry to invalidate */ export const invalidate_cached_user = async (user) => { - UserRedisCacheSpace.invalidateUser(user); + await UserRedisCacheSpace.invalidateUser(user); }; /** @@ -298,7 +298,7 @@ export const invalidate_cached_user = async (user) => { * @param {number} id - the id of the user to invalidate */ export const invalidate_cached_user_by_id = async (id) => { - UserRedisCacheSpace.invalidateById(id); + await UserRedisCacheSpace.invalidateById(id); }; export async function refresh_associations_cache () { diff --git a/src/backend/src/services/UserRedisCacheSpace.js b/src/backend/src/services/UserRedisCacheSpace.js index 1e6fe7763..c8866bc33 100644 --- a/src/backend/src/services/UserRedisCacheSpace.js +++ b/src/backend/src/services/UserRedisCacheSpace.js @@ -21,6 +21,7 @@ import { deleteRedisKeys } from '../clients/redis/deleteRedisKeys.js'; const userKeyPrefix = 'users'; const defaultUserIdProperties = ['username', 'uuid', 'email', 'id', 'referral_code']; +const DEFAULT_USER_CACHE_TTL_SECONDS = 15 * 60; const safeParseJson = (value, fallback = null) => { if ( value === null || value === undefined ) return fallback; @@ -51,7 +52,10 @@ const UserRedisCacheSpace = { }, getByProperty: async (prop, value) => safeParseJson(await redisClient.get(userCacheKey(prop, value))), getById: async (id) => UserRedisCacheSpace.getByProperty('id', id), - setUser: async (user, { props = defaultUserIdProperties, ttlSeconds } = {}) => { + setUser: async ( + user, + { props = defaultUserIdProperties, ttlSeconds = DEFAULT_USER_CACHE_TTL_SECONDS } = {}, + ) => { if ( ! user ) return; const serialized = JSON.stringify(user); const writes = []; @@ -72,7 +76,7 @@ const UserRedisCacheSpace = { invalidateById: async (id, props = defaultUserIdProperties) => { const user = await UserRedisCacheSpace.getById(id); if ( ! user ) return; - UserRedisCacheSpace.invalidateUser(user, props); + await UserRedisCacheSpace.invalidateUser(user, props); }, };