fix(worker): keep attachment decay state on a stale expiry row (#2285)

This commit is contained in:
Hampus authored and GitHub committed 2026-08-31 22:26:21 +02:00
1 parent 17ed0f70aa
commit 3dc344be65
3 files changed
+114 -3

No files matched your search

@@ -1,7 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {AttachmentID, ChannelID, MessageID} from '../BrandedTypes';
import {BatchBuilder, fetchMany, fetchManyInChunks, fetchOne} from '../database/CassandraQueryExecution';
import {
BatchBuilder,
deleteOneOrMany,
fetchMany,
fetchManyInChunks,
fetchOne,
} from '../database/CassandraQueryExecution';
import {AttachmentDecayByExpiry, AttachmentDecayById} from '../Tables';
import type {AttachmentDecayRow} from '../types/AttachmentDecayTypes';
@@ -73,6 +79,20 @@ export class AttachmentDecayRepository {
return fetchMany(query.bind({expiry_bucket: bucket, current_time: currentTime}));
}
async deleteExpiryRecord(params: {
expiry_bucket: number;
expires_at: Date;
attachment_id: AttachmentID;
}): Promise<void> {
await deleteOneOrMany(
AttachmentDecayByExpiry.deleteByPk({
expiry_bucket: params.expiry_bucket,
expires_at: params.expires_at,
attachment_id: params.attachment_id,
}),
);
}
async deleteRecords(params: {expiry_bucket: number; expires_at: Date; attachment_id: AttachmentID}): Promise<void> {
const batch = new BatchBuilder();
batch.addPrepared(