From c7d6073b722d8fb900c8a237f7bf9f1b3c91e2dd Mon Sep 17 00:00:00 2001 From: fallenbagel <98979876+Fallenbagel@users.noreply.github.com> Date: Sat, 7 Feb 2026 10:04:37 +0800 Subject: [PATCH] fix(media-request-subscriber): better async handling for afterInsert & afterUpdate --- server/subscriber/MediaRequestSubscriber.ts | 54 +++++++++++++-------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/server/subscriber/MediaRequestSubscriber.ts b/server/subscriber/MediaRequestSubscriber.ts index 5cdd285d2..1e872079a 100644 --- a/server/subscriber/MediaRequestSubscriber.ts +++ b/server/subscriber/MediaRequestSubscriber.ts @@ -806,7 +806,11 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface !request.is4k) && fullMedia.status !== MediaStatus.AVAILABLE; @@ -869,35 +871,49 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface): void { + public async afterUpdate(event: UpdateEvent): Promise { if (!event.entity) { return; } - this.sendToRadarr(event.entity as MediaRequest); - this.sendToSonarr(event.entity as MediaRequest); + try { + await this.sendToRadarr(event.entity as MediaRequest); + await this.sendToSonarr(event.entity as MediaRequest); + await this.updateParentStatus(event.entity as MediaRequest); - this.updateParentStatus(event.entity as MediaRequest); - - if (event.entity.status === MediaRequestStatus.COMPLETED) { - if (event.entity.media.mediaType === MediaType.MOVIE) { - this.notifyAvailableMovie(event.entity as MediaRequest, event); - } - if (event.entity.media.mediaType === MediaType.TV) { - this.notifyAvailableSeries(event.entity as MediaRequest, event); + if (event.entity.status === MediaRequestStatus.COMPLETED) { + if (event.entity.media.mediaType === MediaType.MOVIE) { + await this.notifyAvailableMovie(event.entity as MediaRequest, event); + } + if (event.entity.media.mediaType === MediaType.TV) { + await this.notifyAvailableSeries(event.entity as MediaRequest, event); + } } + } catch (e) { + logger.error('Error in afterUpdate subscriber', { + label: 'Media Request', + requestId: (event.entity as MediaRequest).id, + errorMessage: e.message, + }); } } - public afterInsert(event: InsertEvent): void { + public async afterInsert(event: InsertEvent): Promise { if (!event.entity) { return; } - this.sendToRadarr(event.entity as MediaRequest); - this.sendToSonarr(event.entity as MediaRequest); - - this.updateParentStatus(event.entity as MediaRequest); + try { + await this.sendToRadarr(event.entity as MediaRequest); + await this.sendToSonarr(event.entity as MediaRequest); + await this.updateParentStatus(event.entity as MediaRequest); + } catch (e) { + logger.error('Error in afterInsert subscriber', { + label: 'Media Request', + requestId: (event.entity as MediaRequest).id, + errorMessage: e.message, + }); + } } public async afterRemove(event: RemoveEvent): Promise {