fix(requests): mark requests as failed when Radarr/Sonarr unreachable

This PR fixes requests silently failing when Radarr/Sonarr are unreachable. Requests are now marked as `FAILED` and notifications are sent to alert both users and admins.

Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me>
This commit is contained in:
0xsysr3ll
2025-11-23 17:42:54 +01:00
parent b66b36186a
commit d57af7334c

View File

@@ -420,13 +420,32 @@ export class MediaRequestSubscriber
mediaId: entity.media.id,
});
} catch (e) {
logger.error('Something went wrong sending request to Radarr', {
const requestRepository = getRepository(MediaRequest);
const mediaRepository = getRepository(Media);
const media = await mediaRepository.findOne({
where: { id: entity.media.id },
});
if (media) {
entity.status = MediaRequestStatus.FAILED;
await requestRepository.save(entity);
logger.warn(
'Failed to send movie request to Radarr due to connection or configuration error, marking status as FAILED',
{
label: 'Media Request',
errorMessage: e.message,
requestId: entity.id,
mediaId: entity.media.id,
});
throw new Error(e.message);
errorMessage: e.message,
}
);
MediaRequest.sendNotification(
entity,
media,
Notification.MEDIA_FAILED
);
}
}
}
}
@@ -727,13 +746,32 @@ export class MediaRequestSubscriber
mediaId: entity.media.id,
});
} catch (e) {
logger.error('Something went wrong sending request to Sonarr', {
const requestRepository = getRepository(MediaRequest);
const mediaRepository = getRepository(Media);
const media = await mediaRepository.findOne({
where: { id: entity.media.id },
});
if (media) {
entity.status = MediaRequestStatus.FAILED;
await requestRepository.save(entity);
logger.warn(
'Failed to send series request to Sonarr due to connection or configuration error, marking status as FAILED',
{
label: 'Media Request',
errorMessage: e.message,
requestId: entity.id,
mediaId: entity.media.id,
});
throw new Error(e.message);
errorMessage: e.message,
}
);
MediaRequest.sendNotification(
entity,
media,
Notification.MEDIA_FAILED
);
}
}
}
}