Schaka / janitorr

Cleans your Radarr, Sonarr, Jellyseerr and Jellyfin before you run out of space
GNU General Public License v3.0
313 stars 7 forks source link

[Bug] Unhandled Exception - Sonarr deleteEpisode #5

Closed Schaka closed 8 months ago

Schaka commented 8 months ago

Needs investigation. At the very least, needs to be caught.

2024-02-15T09:08:34.873Z ERROR 1 --- [   scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler    : Unexpected error occurred in scheduled task
feign.FeignException$BadRequest: [400 Bad Request] during [DELETE] to [http://sonarr:8989/api/v3/episodefile/0] [SonarrClient#deleteEpisodeFile(int)]: [{
  "message": "BadRequest: 0 is not a valid ID",
  "content": "0 is not a valid ID"
}]
    at feign.FeignException.clientErrorStatus(FeignException.java:222) ~[feign-core-13.1.jar:na]
    at feign.FeignException.errorStatus(FeignException.java:203) ~[feign-core-13.1.jar:na]
    at feign.FeignException.errorStatus(FeignException.java:194) ~[feign-core-13.1.jar:na]
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[feign-core-13.1.jar:na]
    at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[feign-core-13.1.jar:na]
    at feign.InvocationContext.proceed(InvocationContext.java:72) ~[feign-core-13.1.jar:na]
    at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[feign-core-13.1.jar:na]
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[feign-core-13.1.jar:na]
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[feign-core-13.1.jar:na]
    at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[feign-core-13.1.jar:na]
    at jdk.proxy2/jdk.proxy2.$Proxy79.deleteEpisodeFile(Unknown Source) ~[na:na]
    at com.github.schaka.janitorr.servarr.sonarr.SonarrService.removeEntries(SonarrService.kt:91) ~[classes/:na]
    at com.github.schaka.janitorr.CleanupSchedule.runSchedule(CleanupSchedule.kt:40) ~[classes/:na]
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
    at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[spring-context-6.1.2.jar:6.1.2]
    at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[spring-context-6.1.2.jar:6.1.2]
    at io.micrometer.observation.Observation.observe(Observation.java:499) ~[micrometer-observation-1.12.1.jar:1.12.1]
    at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[spring-context-6.1.2.jar:6.1.2]
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-6.1.2.jar:6.1.2]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Schaka commented 8 months ago

Seems to be related to episodes not existing within Sonarr anymore, either because they were successfully deleted or weren't linked properly by the looks of it.

Example log of intentions:

2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 1 (0) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 2 (42138) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 3 (0) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 4 (0) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 5 (42139) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 6 (0) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 7 (39914) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 8 (48155) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 9 (39916) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 10 (42141) of season 10
2024-02-15T09:22:33.566Z  INFO 1 --- [   scheduling-1] c.g.s.j.servarr.sonarr.SonarrService     : Deleting /data/media/tv/Alone (2015) {imdb-tt4803766} - episode 11 (0) of season 10

Example of what it looks like in Sonarr Probably happened when Season 10 was deleted and individual episodes were grabbed again

Solution: Handle 0 IDs and potential exceptions. Remove entire Season and unmonitor it at the end. Maybe never try to delete unmonitored seasons?