From 9cc046e3a213e58370c48e5bcac02ae01bb7fdd0 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 2 Feb 2024 20:41:07 +0800 Subject: [PATCH] Only sync reading times if they are more than a minute old this should hopefully reduce contention with other rules running --- packages/api/src/jobs/sync_read_positions.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/api/src/jobs/sync_read_positions.ts b/packages/api/src/jobs/sync_read_positions.ts index 1b25eab13..478c6444f 100644 --- a/packages/api/src/jobs/sync_read_positions.ts +++ b/packages/api/src/jobs/sync_read_positions.ts @@ -25,6 +25,14 @@ async function* getSyncUpdatesIterator(redis: Redis) { return } +const isMoreThan60SecondsOld = (iso8601String: string): boolean => { + const currentTime = new Date() + const parsedDate = new Date(iso8601String) + const timeDifferenceInSeconds = + (currentTime.getTime() - parsedDate.getTime()) / 1000 + return timeDifferenceInSeconds > 60 +} + const syncReadPosition = async (cacheKey: string) => { const components = componentsForCachedReadingPositionKey(cacheKey) const positions = components @@ -37,7 +45,9 @@ const syncReadPosition = async (cacheKey: string) => { components && positions && positions.positionItems && - positions.positionItems.length > 0 + positions.positionItems.length > 0 && + positions.positionItems[0].updatedAt && + isMoreThan60SecondsOld(positions.positionItems[0].updatedAt) ) { const position = reduceCachedReadingPositionMembers( components.uid,