From c068cb7bd3b3755ddf0a8934d78c1834f94eccfd Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:28:50 -0500 Subject: [PATCH] Fix storage mergeCallLinkRecord deletedAt handling Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> --- ts/services/storageRecordOps.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/ts/services/storageRecordOps.ts b/ts/services/storageRecordOps.ts index 1f023b28df..4e8f97f759 100644 --- a/ts/services/storageRecordOps.ts +++ b/ts/services/storageRecordOps.ts @@ -1974,14 +1974,16 @@ export async function mergeCallLinkRecord( const localCallLinkDbRecord = await DataReader.getCallLinkRecordByRoomId(roomId); - const deletedAt: number | null = - callLinkRecord.deletedAtTimestampMs != null - ? getTimestampFromLong(callLinkRecord.deletedAtTimestampMs) - : null; - const shouldDrop = - deletedAt != null && isOlderThan(deletedAt, getMessageQueueTime()); + // Note deletedAtTimestampMs can be 0 + const deletedAtTimestampMs = callLinkRecord.deletedAtTimestampMs?.toNumber(); + const deletedAt = deletedAtTimestampMs || null; + const shouldDrop = Boolean( + deletedAt && isOlderThan(deletedAt, getMessageQueueTime()) + ); if (shouldDrop) { - details.push('expired deleted call link; scheduling for removal'); + details.push( + `expired deleted call link deletedAt=${deletedAt}; scheduling for removal` + ); } const callLinkDbRecord: CallLinkRecord = { @@ -2005,7 +2007,9 @@ export async function mergeCallLinkRecord( if (!localCallLinkDbRecord) { if (deletedAt) { - details.push('skipping deleted call link with no matching local record'); + details.push( + `skipping deleted call link with no matching local record deletedAt=${deletedAt}` + ); } else if (await DataReader.defunctCallLinkExists(roomId)) { details.push('skipping known defunct call link'); } else { @@ -2022,7 +2026,7 @@ export async function mergeCallLinkRecord( storageID: callLink.storageID, storageVersion: callLink.storageVersion, storageUnknownFields: callLink.storageUnknownFields, - source: 'storage.mergeCallLinkRecord', + source: `storage.mergeCallLinkRecord(${redactedStorageID})`, }) ); }