From 947f00ac9db97999d0af769dba596cf5698c7db3 Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Sat, 14 Feb 2026 02:47:39 -0500 Subject: [PATCH] better debounce --- server/src/repositories/job.repository.ts | 10 ---------- server/src/services/notification.service.spec.ts | 1 - server/src/services/notification.service.ts | 1 - server/src/utils/job-queue.util.ts | 3 ++- server/test/repositories/job.repository.mock.ts | 1 - 5 files changed, 2 insertions(+), 14 deletions(-) diff --git a/server/src/repositories/job.repository.ts b/server/src/repositories/job.repository.ts index b935b4212f..118e4b2019 100644 --- a/server/src/repositories/job.repository.ts +++ b/server/src/repositories/job.repository.ts @@ -394,16 +394,6 @@ export class JobRepository { } } - /** @deprecated */ - // todo: remove this when asset notifications no longer need it. - removeJob(name: JobName, dedupKey: string) { - return this.db - .deleteFrom(getTable(this.db, this.getQueueName(name))) - .where('dedupKey', '=', dedupKey) - .where('status', '=', JobQueueStatus.Pending) - .execute(); - } - private createPgConnection(options?: { max?: number; connection?: Record }) { const { database } = this.configRepository.getEnv(); const pgConfig = asPostgresConnectionConfig(database.config); diff --git a/server/src/services/notification.service.spec.ts b/server/src/services/notification.service.spec.ts index ee4b4ec05f..89199c233c 100644 --- a/server/src/services/notification.service.spec.ts +++ b/server/src/services/notification.service.spec.ts @@ -506,7 +506,6 @@ describe(NotificationService.name, () => { it('should add new recipients for new images if job is already queued', async () => { await sut.onAlbumUpdate({ id: '1', recipientId: '2' } as INotifyAlbumUpdateJob); - expect(mocks.job.removeJob).toHaveBeenCalledWith(JobName.NotifyAlbumUpdate, '1/2'); expect(mocks.job.queue).toHaveBeenCalledWith({ name: JobName.NotifyAlbumUpdate, data: { diff --git a/server/src/services/notification.service.ts b/server/src/services/notification.service.ts index ee87fcf775..844984bc6c 100644 --- a/server/src/services/notification.service.ts +++ b/server/src/services/notification.service.ts @@ -218,7 +218,6 @@ export class NotificationService extends BaseService { @OnEvent({ name: 'AlbumUpdate' }) async onAlbumUpdate({ id, recipientId }: ArgOf<'AlbumUpdate'>) { - await this.jobRepository.removeJob(JobName.NotifyAlbumUpdate, `${id}/${recipientId}`); await this.jobRepository.queue({ name: JobName.NotifyAlbumUpdate, data: { id, recipientId, delay: NotificationService.albumUpdateEmailDelayMs }, diff --git a/server/src/utils/job-queue.util.ts b/server/src/utils/job-queue.util.ts index d2841d81b7..85f29daff7 100644 --- a/server/src/utils/job-queue.util.ts +++ b/server/src/utils/job-queue.util.ts @@ -435,7 +435,8 @@ export class WriteBuffer { ${runAfter}::timestamptz[] ) ON CONFLICT ("dedupKey") WHERE "dedupKey" IS NOT NULL - DO NOTHING + DO UPDATE SET "runAfter" = EXCLUDED."runAfter", data = EXCLUDED.data + WHERE ${this.pgPool(tableName)}.status = ${JobQueueStatus.Pending} `; } } diff --git a/server/test/repositories/job.repository.mock.ts b/server/test/repositories/job.repository.mock.ts index 1945d3b495..f42dfc3f0e 100644 --- a/server/test/repositories/job.repository.mock.ts +++ b/server/test/repositories/job.repository.mock.ts @@ -19,7 +19,6 @@ export const newJobRepositoryMock = (): Mocked