Closed kylehandy123 closed 1 month ago
Seems like Emby changed their API again since the last time a ticket was created. I need to either find someone willing to maintain the Emby implementation or abandon support.
Please try the latest develop build for the image you're using and report back. If you don't respond within a week, I'll close this issue and assume things are fixed until I get another report.
@hacshacdgacs sorry for tagging you, but are you having issues like OP? Last time, your response was what helped me determine that things were working correctly.
So far I haven't had any issues at all, I'll have a look when back at my pc to see what issues they've been having and check again
On Tue, 27 Aug 2024, 19:17 Schaka, @.***> wrote:
Seems like Emby changed their API again since the last time a ticket was created. I need to either find someone willing to maintain the Emby implementation or abandon support.
Please try the latest develop build for the image you're using and report back. If you don't respond within a week, I'll close this issue and assume things are fixed until I get another report.
@hacshacdgacs https://github.com/hacshacdgacs sorry for tagging you, but are you having issues like OP? Last time, your response was what helped me determine that things were working correctly.
— Reply to this email directly, view it on GitHub https://github.com/Schaka/janitorr/issues/55#issuecomment-2311749536, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUMWJOBJLZFYOJMZ2V3FL33ZTQR2LAVCNFSM6AAAAABNFBVCTCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJRG42DSNJTGY . You are receiving this because you were mentioned.Message ID: @.***>
Switched to Develop image. Using the exact same config as above. Container will not start, here are the logs:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.3.2)
2024-08-27T03:58:38.878-04:00 INFO 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : Starting JanitorrApplicationKt using Java 21.0.4 with PID 1 (/app/classes started by root in /)
2024-08-27T03:58:38.881-04:00 INFO 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : No active profile set, falling back to 1 default profile: "default"
2024-08-27T03:58:40.373-04:00 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2024-08-27T03:58:40.389-04:00 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2024-08-27T03:58:40.390-04:00 INFO 1 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.26]
2024-08-27T03:58:40.445-04:00 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2024-08-27T03:58:40.446-04:00 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1482 ms
2024-08-27T03:58:40.767-04:00 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mediaCleanupSchedule' defined in file [/app/classes/com/github/schaka/janitorr/cleanup/MediaCleanupSchedule.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mediaServer' defined in class path resource [com/github/schaka/janitorr/mediaserver/config/MediaServerConfig.class]: Unsatisfied dependency expressed through method 'mediaServer' parameter 2: Error creating bean with name 'application-com.github.schaka.janitorr.config.ApplicationProperties': Could not bind properties to 'ApplicationProperties' : prefix=application, ignoreInvalidFields=false, ignoreUnknownFields=true
2024-08-27T03:58:40.771-04:00 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2024-08-27T03:58:40.787-04:00 INFO 1 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-08-27T03:58:40.811-04:00 ERROR 1 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'application' to com.github.schaka.janitorr.config.ApplicationProperties:
Reason: java.lang.NullPointerException: Parameter specified as non-null is null: method com.github.schaka.janitorr.config.ApplicationProperties.<init>, parameter mediaDeletion
Action:
Update your application's configuration
** Press ANY KEY to close this window **
Apologies if I'm completely blind and missed the obvious reason this is occurring when switching to the Develop image.
You're likely not mapping your config file correctly into the container.
It can't find media-deletion in your application.yml
.
If you were using the native image before, use native-develop.
Remade container, loads application now as expected. Still receiving the same errors as the original log posted. Unrecognized Guid Format. I can confirm I am running the native-develop image now.
Does it create the collection successfully? Can you see it in your Emby media folders? If yes, does it have a guid? What Emby version are you on?
Neither me on my test install nor hacshacdgacs seems to have that problem.
It does create a collection in Emby, Shows (Deleted Soon). Emby Version [4.8.8.0] Sorry, how would you check what the GUID is for the collection?
Emby Version [4.9.0.30] is the latest emby version (Beta) and I don't and haven't that issue of guid.
It does create a collection in Emby, Shows (Deleted Soon). Emby Version [4.8.8.0] Sorry, how would you check what the GUID is for the collection?
Sorry, it's a bit complicated. You need to go into the Dashboard => Library view.
Open F12 for the browser console, reload the site. Check the network tab for XHR connections.
There should be one like Query?Limit=50[...]
Click on it, click Preview. The JSON items in there should have a GUID. This Guid is field is being used to later add more folders to existing collections in Emby.
The very call that errors for you complains that that GUID is invalid invalid when passing it to the call. So that's pretty weird. Please try the latest image again in 5-10minutes after this response and if possible provide the info I requested.
Hi Schaka, sorry for the delay, it was quite late during my last message. Here is the JSON output of my library view. I'm sending the whole thing as I'm not sure which GUID you'll need.
{Items: [{Name: "Anime", Locations: ["/media/media/anime"], CollectionType: "tvshows",…},…],…}
Items
:
[{Name: "Anime", Locations: ["/media/media/anime"], CollectionType: "tvshows",…},…]
0
:
{Name: "Anime", Locations: ["/media/media/anime"], CollectionType: "tvshows",…}
CollectionType
:
"tvshows"
Guid
:
"3d99ec3b05fe40a78416c7f40b6a2cd7"
Id
:
"563010"
ItemId
:
"563010"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/anime"]
Name
:
"Anime"
PrimaryImageItemId
:
"563010"
1
:
{Name: "Audio books", Locations: ["/media/media/audio_books"], CollectionType: "audiobooks",…}
CollectionType
:
"audiobooks"
Guid
:
"bac6ff2b1b2246548ede7f6d9fe2f27f"
Id
:
"565321"
ItemId
:
"565321"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/audio_books"]
Name
:
"Audio books"
2
:
{Name: "Live TV Recordings", Locations: ["/media/media/emby_live_tv"],…}
Guid
:
"b0facf75a3de4cc9aedce3cbb3ea5eb8"
Id
:
"613657"
ItemId
:
"613657"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/emby_live_tv"]
Name
:
"Live TV Recordings"
PrimaryImageItemId
:
"613657"
3
:
{Name: "Movies", Locations: ["/media/media/movies"], CollectionType: "movies",…}
CollectionType
:
"movies"
Guid
:
"0d2dcacba8a147b0b94278c9b15a59e1"
Id
:
"554407"
ItemId
:
"554407"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/movies"]
Name
:
"Movies"
PrimaryImageItemId
:
"554407"
4
:
{Name: "Music", Locations: ["/media/media/music"], CollectionType: "music",…}
CollectionType
:
"music"
Guid
:
"8f84d19a76964d57bc759321e64dee14"
Id
:
"560309"
ItemId
:
"560309"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/music"]
Name
:
"Music"
5
:
{Name: "Shows (Deleted Soon)", Locations: [], CollectionType: "tvshows",…}
CollectionType
:
"tvshows"
Guid
:
"5e7e2ebb979c4f148c7d314830245048"
Id
:
"689278"
ItemId
:
"689278"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
[]
Name
:
"Shows (Deleted Soon)"
6
:
{Name: "TV shows", Locations: ["/media/media/tv"], CollectionType: "tvshows",…}
CollectionType
:
"tvshows"
Guid
:
"ea5c1bcc8fa94b4e84c54c44350451ba"
Id
:
"559081"
ItemId
:
"559081"
LibraryOptions
:
{EnableArchiveMediaFiles: false, EnablePhotos: true, EnableRealtimeMonitor: true,…}
Locations
:
["/media/media/tv"]
Name
:
"TV shows"
PrimaryImageItemId
:
"559081"
TotalRecordCount
:
7
Apologies the JSON output is a bit of a mess, it doesn't appear to like being copy and pasted. I've attached a screenshot, albeit blown out due to Windows HDR, to this comment in case that's more useful. Apologies again.
I updated to your latest version on the Native-Develop image, and am still receiving the same errors. Nonetheless, here is the log output in case anything has changed whatsoever that I didn't notice.
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:71) ~[na:na]
at com.github.schaka.janitorr.mediaserver.MediaServerService.updateLeavingSoon$default(MediaServerService.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:73) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete$default(AbstractCleanupSchedule.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule.runSchedule(MediaCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
2024-08-27T14:16:24.381-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.s.sonarr.SonarrRestService : Dry run - not deleting any TV shows without files or monitoring
2024-08-27T14:16:24.981-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://192.168.1.201:8096/emby/Library/VirtualFolders/Paths?refreshLibrary=false] [EmbyMediaServerClient#addPathToLibrary(AddMediaPathRequest)]: [Unrecognized Guid format.]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na]
at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na]
at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na]
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:71) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.deleteTvShows(AbstractCleanupSchedule.kt:103) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:76) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule.runSchedule(TagBasedCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
Please try the latest image within 5-10 minutes after this comment. I think they may have made some changes to where it requires the ID instead of GUID now, despite the error message complaining about Guid format as well.
Since this isn't clearly documented, I just tried to follow what the Emby Web UI is doing. Hopefully this finally fixes it.
Just updated and rebooted the container, still receiving the same Unrecognized Guid Format error. Using the same config.
Can you please post the log file? With TRACE enabled.
It should print the collection it finds now.
I've made sure the request matches exactly what the web ui does.
Here is the log with TRACE enabled. I redacted out usernames at the top of the log for user privacy as some used their full names.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.3.2)
2024-08-28T02:46:45.955-04:00 INFO 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : Starting AOT-processed JanitorrApplicationKt using Java 21.0.3 with PID 1 (/workspace/com.github.schaka.janitorr.JanitorrApplicationKt started by cnb in /workspace)
2024-08-28T02:46:45.955-04:00 DEBUG 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : Running with Spring Boot v3.3.2, Spring v6.1.11
2024-08-28T02:46:45.955-04:00 INFO 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : No active profile set, falling back to 1 default profile: "default"
2024-08-28T02:46:46.005-04:00 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8978 (http)
2024-08-28T02:46:46.006-04:00 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2024-08-28T02:46:46.006-04:00 INFO 1 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.26]
2024-08-28T02:46:46.022-04:00 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2024-08-28T02:46:46.022-04:00 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 67 ms
2024-08-28T02:46:46.221-04:00 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8978 (http) with context path '/'
2024-08-28T02:46:46.221-04:00 INFO 1 --- [ main] c.g.s.janitorr.JanitorrApplicationKt : Started JanitorrApplicationKt in 0.292 seconds (process running for 0.301)
2024-08-28T02:46:46.241-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.cleanup.MediaCleanupSchedule : Cleaning up TV shows older than 20
2024-08-28T02:46:46.260-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.cleanup.MediaCleanupSchedule : Cleaning up movies older than 30
2024-08-28T02:46:57.942-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched The Queen Who Ever Was 2 at 2024-08-07T03:10:14.998Z
2024-08-28T02:46:58.047-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched Servants of Two Masters 1 at 2024-08-08T02:15:55.519Z
2024-08-28T02:46:58.200-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched Assassination Run 4 at 2024-07-22T04:06:52.278Z
2024-08-28T02:46:58.219-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched I Do 1 at 2024-07-14T10:29:29.998Z
2024-08-28T02:46:58.243-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched Infected 1 at 2024-07-27T19:31:54.286Z
2024-08-28T02:46:58.363-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched The Beginning of Madness 1 at 2024-07-11T02:19:40.313Z
2024-08-28T02:46:58.521-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched Clash! Shanks Vs Eustass Kid! 22 at 2024-07-15T02:32:04.875Z
2024-08-28T02:46:58.530-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched The Boy Who Became the World's Strongest Sorcerer Begins His Practical Exercises 1 at 2024-07-26T00:27:45.842Z
2024-08-28T02:46:58.667-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.jellystat.JellystatRestService : Updating history - user *** watched Villaintines Day 3 at 2024-08-25T15:08:53.625Z
2024-08-28T02:46:58.680-04:00 TRACE 1 --- [ scheduling-1] c.g.s.j.m.emby.EmbyRestService : Leaving Soon Collection Created/Found: VirtualFolderResponse(CollectionType=tvshows, ItemId=689278, LibraryOptions=LibraryOptions(AllowEmbeddedSubtitles=null, AutomaticRefreshIntervalDays=0, AutomaticallyAddToCollection=false, DisabledLocalMetadataReaders=[], DisabledSubtitleFetchers=[], EnableAutomaticSeriesGrouping=true, EnableChapterImageExtraction=false, EnableEmbeddedEpisodeInfos=false, EnableEmbeddedTitles=false, EnableInternetProviders=false, EnablePhotos=true, EnableRealtimeMonitor=true, ExtractChapterImagesDuringLibraryScan=false, LocalMetadataReaderOrder=null, MetadataCountryCode=, MetadataSavers=[], PathInfos=[], PreferredMetadataLanguage=, RequirePerfectSubtitleMatch=true, SaveLocalMetadata=false, SaveSubtitlesWithMedia=true, SeasonZeroDisplayName=null, SkipSubtitlesIfAudioTrackMatches=false, SkipSubtitlesIfEmbeddedSubtitlesPresent=false, SubtitleDownloadLanguages=[], SubtitleFetcherOrder=[], TypeOptions=[]), Locations=[], Name=Shows (Deleted Soon), PrimaryImageItemId=null, RefreshProgress=0, RefreshStatus=null, Id=689278, Guid=5e7e2ebb979c4f148c7d314830245048)
2024-08-28T02:46:58.683-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://192.168.1.201:8096/emby/Library/VirtualFolders/Paths?refreshLibrary=false] [EmbyMediaServerClient#addPathToLibrary(AddMediaPathRequest)]: [Unrecognized Guid format.]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na]
at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na]
at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na]
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:78) ~[na:na]
at com.github.schaka.janitorr.mediaserver.MediaServerService.updateLeavingSoon$default(MediaServerService.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:73) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete$default(AbstractCleanupSchedule.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule.runSchedule(MediaCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
2024-08-28T02:46:58.684-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.cleanup.TagBasedCleanupSchedule : Deleting TV shows and movies with tag: TagDeleteSchedule(tag=5 - demo, expiration=PT720H)
2024-08-28T02:46:59.023-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.s.sonarr.SonarrRestService : Dry run - not deleting any TV shows without files or monitoring
2024-08-28T02:46:59.492-04:00 TRACE 1 --- [ scheduling-1] c.g.s.j.m.emby.EmbyRestService : Leaving Soon Collection Created/Found: VirtualFolderResponse(CollectionType=tvshows, ItemId=689278, LibraryOptions=LibraryOptions(AllowEmbeddedSubtitles=null, AutomaticRefreshIntervalDays=0, AutomaticallyAddToCollection=false, DisabledLocalMetadataReaders=[], DisabledSubtitleFetchers=[], EnableAutomaticSeriesGrouping=true, EnableChapterImageExtraction=false, EnableEmbeddedEpisodeInfos=false, EnableEmbeddedTitles=false, EnableInternetProviders=false, EnablePhotos=true, EnableRealtimeMonitor=true, ExtractChapterImagesDuringLibraryScan=false, LocalMetadataReaderOrder=null, MetadataCountryCode=, MetadataSavers=[], PathInfos=[], PreferredMetadataLanguage=, RequirePerfectSubtitleMatch=true, SaveLocalMetadata=false, SaveSubtitlesWithMedia=true, SeasonZeroDisplayName=null, SkipSubtitlesIfAudioTrackMatches=false, SkipSubtitlesIfEmbeddedSubtitlesPresent=false, SubtitleDownloadLanguages=[], SubtitleFetcherOrder=[], TypeOptions=[]), Locations=[], Name=Shows (Deleted Soon), PrimaryImageItemId=null, RefreshProgress=0, RefreshStatus=null, Id=689278, Guid=5e7e2ebb979c4f148c7d314830245048)
2024-08-28T02:46:59.494-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://192.168.1.201:8096/emby/Library/VirtualFolders/Paths?refreshLibrary=false] [EmbyMediaServerClient#addPathToLibrary(AddMediaPathRequest)]: [Unrecognized Guid format.]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na]
at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na]
at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na]
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:78) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.deleteTvShows(AbstractCleanupSchedule.kt:103) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:76) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule.runSchedule(TagBasedCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
It shows that everything is correct and being sent correctly. The only other idea I have is that a reverse proxy could possibly alter the request and maybe break some parameters.
I double checked the API docs for authentication to make sure it's not a problem with authentication itself. I've personally not had these issues on my local install that I test against, so it's hard to pinpoint what the problem could be.
If authentication were an issue somehow, it shouldn't be able to create the collection at all. So before you try the latest image again, please delete your 'TV Shows (Leaving Soon)' collection.
For documentation sake, here's the request as the Web UI sends it:
There isn't any difference to what Janitorr does here.
Removed the collection. Updated the Janitorr container, still spitting the same error. Saying this, pardon my ignorance, does it appear to be working correctly despite throwing the mile long error in the log? Albeit frustrating that the log is a long error, if it's working correctly from what you can currently tell, I'm not going to really complain further. My only other question would be, should it be creating another collection for movies leaving soon?
No, it's not working correctly because it's not adding the path to your collection. Does the collection exist again?
When you open it up, and check what paths it contains, it should contain:
/data/leaving-soon/media/tv
. This directory should also already exists on your drive.
This is assuming you've mapped it into Emby correctly and Emby can find the same directory under /data/leaving-soon
as Janitorr.
Now there's a possibility that Emby refuses to give a proper response when it goes wrong and tells us something about a wrong Guid when it really means "folder doesn't exist". Jellyfin just throws a 400 and indicates the folder doesn't exist.
Now if Emby weren't closed source, I could take a look at what they're doing and debug this myself. Now I'm left guessing.
@ebr11 @LukePulverenti do you have any idea what could be wrong? The PostLibraryVirtualFolderPaths Endpoint throws a 500 with [invalid Guid format.] I've confirmed several times by looking at the docs and seeing what the Web UI actually does that the request I send is correct. I'm not sure what could cause a server error that specific here.
To he best of my knowledge, there's no Guid here.
I can confirm the collection exists again, and there is no folder mapping to it in Emby. I can confirm on my drive that both Emby and Janitorr can access /mnt/media/media which contains the default TV, Movies, Anime, etc folders, which Emby can access, Emby also can see /mnt/media/media/leaving-soon and I can manually add it to the collection, and Janitorr also has access to all these folders. Janitorr also created /mnt/media/media/leaving-soon/tv/media & tag-based on the drive. I'm going to spin up a Jellyfin instance and confirm that Janitorr works on it. I don't want to add additional confusion so I'll only report my findings if they are of any use. This is more so for my own sanity at this point.
Edit 1: I'm not going to spin up a Jellyfin instance tonight, and won't do so if that would hinder testing on Emby. I won't look at doing so until tomorrow unless told not to otherwise.
In this post, you're talking about /mnt/media/leaving-soon
but in your Janitorr config, it's leaving-soon-dir: "/data/leaving-soon"
I assume this is mapped correctly into Janitorr since it managed to create the right files on drive.
But does Emby ALSO know this folder as /data/leaving-soon
on its side, or does it only know it as /data/media/leaving-soon
?
Since Janitorr gives this info to Emby, the paths need to be identical. As a workaround, you could manually add the relevant paths to the libraries when they are created. As long as they are recognized by Janitorr (i.e. they need to be the path Janitorr knows, like /data/leaving-soon
).
You're welcome to spin up Jellyfin and see if it works for you. If it does, it's likely to be an Emby issue. If not, I would suspect it's a mapping issue.
services:
emby:
image: emby/embyserver:latest
container_name: emby
environment:
- UID=1000
- GID=1000
- TZ=Europe/Berlin
devices:
- /dev/dri:/dev/dri
volumes:
- /appdata/emby:/config
- /share_media:/data
janitorr:
container_name: janitorr
image: ghcr.io/schaka/janitorr:native-stable
user: 1000:1000
volumes:
- /appdata/janitorr/config/application.yml:/workspace/application.yml
#- /appdata/janitorr/config:/config
- /share_media:/data
Now Emby finds my movies as /data/media/movies
. Janitorr also finds them as /data/media/movies
.
Everything symlink for leaving-soon will be pointed at /data/leaving-soon
, so on my host system, it'll be found as:
/share_media/leaving-soon/[...]
.
Hopefully this helps. In your screenshot of your libraries, I see Emby uses paths like /media/media/tv
.
Edit: I added Emby's path validation endpoint to throw an error in the log if Emby can't find the path. So if your mapping is wrong, you'll know with the latest iamge.
I understand the concern. I've gone ahead and changed the path mapping for the container to /media/media
, which is identical to Emby's container path mapping of /media/media
. I've also made sure that both Emby and Janitorr look for /mnt/media/media
.
I believe doing this means both Emby and Janitorr are looking, internally and externally, at the exact same path mappings.
Nonetheless, it appears this didn't work as expected. It appears to have.. Reverted practically back to the original log I posted in this issue now. Log posted below.
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:79) ~[na:na]
at com.github.schaka.janitorr.mediaserver.MediaServerService.updateLeavingSoon$default(MediaServerService.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:73) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete$default(AbstractCleanupSchedule.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule.runSchedule(MediaCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
2024-08-28T15:17:05.577-04:00 DEBUG 1 --- [ scheduling-1] c.g.s.j.cleanup.TagBasedCleanupSchedule : Deleting TV shows and movies with tag: TagDeleteSchedule(tag=5 - demo, expiration=PT720H)
2024-08-28T15:17:05.898-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.s.sonarr.SonarrRestService : Dry run - not deleting any TV shows without files or monitoring
2024-08-28T15:17:06.409-04:00 TRACE 1 --- [ scheduling-1] c.g.s.j.m.emby.EmbyRestService : Leaving Soon Collection Created/Found: VirtualFolderResponse(CollectionType=tvshows, ItemId=692716, LibraryOptions=LibraryOptions(AllowEmbeddedSubtitles=null, AutomaticRefreshIntervalDays=0, AutomaticallyAddToCollection=false, DisabledLocalMetadataReaders=[], DisabledSubtitleFetchers=[], EnableAutomaticSeriesGrouping=true, EnableChapterImageExtraction=false, EnableEmbeddedEpisodeInfos=false, EnableEmbeddedTitles=false, EnableInternetProviders=false, EnablePhotos=true, EnableRealtimeMonitor=true, ExtractChapterImagesDuringLibraryScan=false, LocalMetadataReaderOrder=null, MetadataCountryCode=null, MetadataSavers=[], PathInfos=[], PreferredMetadataLanguage=null, RequirePerfectSubtitleMatch=true, SaveLocalMetadata=false, SaveSubtitlesWithMedia=true, SeasonZeroDisplayName=null, SkipSubtitlesIfAudioTrackMatches=false, SkipSubtitlesIfEmbeddedSubtitlesPresent=false, SubtitleDownloadLanguages=[], SubtitleFetcherOrder=[], TypeOptions=[]), Locations=[], Name=Shows (Deleted Soon), PrimaryImageItemId=null, RefreshProgress=0, RefreshStatus=null, Id=692716, Guid=25f0da1a76344c53a385bca7fedd5e8b)
2024-08-28T15:17:06.414-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://192.168.1.201:8096/emby/Library/VirtualFolders/Paths?refreshLibrary=false] [EmbyMediaServerClient#addPathToLibrary(AddMediaPathRequest)]: [Unrecognized Guid format.]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na]
at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na]
at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na]
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy49.addPathToLibrary(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.mediaserver.emby.EmbyRestService.updateLeavingSoon(EmbyRestService.kt:79) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.deleteTvShows(AbstractCleanupSchedule.kt:103) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:76) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule.runSchedule(TagBasedCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.TagBasedCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
Here is some additional information. First screenshot is Janitorr. Second screenshot is Emby. And my current config.
logging:
level:
com.github.schaka: TRACE
server:
port: 8978
# File system access (same mapping as Sonarr, Radarr and Jellyfin) is required to delete TV shows by season and create "Leaving Soon" collections in Jellyfin
# Currently, Jellyfin does not support an easy way to add only a few seasons or movies to a collection, we need access to temporary symlinks
# Additionally, checks to prevent deletion on currently still seeding media currently require file system access as well
file-system:
access: true
validate-seeding: true # validates seeding by checking if the original file exists and skips deletion - turning this off will send a delete to the *arrs even if a torrent may still be active
leaving-soon-dir: "/media/media/leaving-soon" # A directory this container can write to and Jellyfin can find under the same path - this will contain new folders with symlinks to files for Jellyfin's "Leaving Soon" collections
from-scratch: true # Clean up entire "Leaving Soon" directory and rebuild from scratch - this can help with clearing orphaned data - turning this off can save resources (less writes to drive)
free-space-check-dir: "/media/media" # This is the default directory Janitorr uses to check how much space is left on your drives. By default, it checks the entire root - you may point it at a specific folder
application:
dry-run: true
whole-tv-show: false # activating this will treat as a whole show as recently download/watched from a single episode, rather than that episode's season - shows will be deleted as a whole
whole-show-seeding-check: false # Turning this off, disables the seeding check entirely if whole-tv-show is enabled. Activating this check will keep a whole TV show if any season is still seeding (requires file access).
leaving-soon: 14d # 14 days before a movie is deleted, it gets added to a "Leaving Soon" type collection (i.e. movies that are 76 to 89 days old)
exclusion-tag: "janitorr_keep" # Set this tag to your movies or TV shows in the *arrs to exclude media from being cleaned up
media-deletion:
enabled: true
movie-expiration:
# Percentage of free disk space to expiration time - if the highest given number is not reached, nothing will be deleted
# If filesystem access is not given, disk percentage can't be determined. As a result, Janitorr will always choose the largest expiration time.
30: 15d # 15 days
40: 30d # 1 month - if a movie's files on your system are older than this, they will be deleted
50: 60d # 2 months
60: 90d # 3 months
season-expiration:
30: 15d # 15 days
40: 20d # 20 days - if a season's files on your system are older than this, they will be deleted
50: 60d # 2 months
60: 120d # 4 months
tag-based-deletion:
enabled: true
minimum-free-disk-percent: 100
schedules:
- tag: 5 - demo
expiration: 30d
- tag: 10 - demo
expiration: 7d
episode-deletion: # This ignores Jellystat. Only grab history matters. It also doesn't clean up Jellyfin. There is NO seeding check either.
enabled: true
tag: janitorr_daily # Shows tagged with this will have all episodes of their LATEST season deleted by the below thresholds
max-episodes: 250 # maximum (latest) episodes of this season to keep
max-age: 365d # Maximum age to keep any episode at all - even the last 10 episodes would expire after 30 days in this example
clients:
sonarr:
enabled: true
url: "http://192.168.1.201:8989"
api-key: "***"
delete-empty-shows: true # If a show that was "touched" by Janitorr contains no files and has no monitored seasons at all, it will get deleted as part of orphan cleanup
radarr:
enabled: true
url: "http://192.168.1.201:7878"
api-key: "***"
## You can only choose one out of Jellyfin or Emby.
## User login is only needed if deletion is enabled.
jellyfin:
enabled: false
url: "http://localhost:8096"
api-key: "***"
username: Janitorr
password: janitorr
delete: true # Jellyfin setup is required for JellyStat. However, if you don't want Janitorr to send delete requests to the Jellyfin API, disable it here
## You can only choose one out of Jellyfin or Emby. Emby support is secondary.
## User login is only needed if deletion is enabled.
emby:
enabled: true
url: "http://192.168.1.201:8096"
api-key: "***"
username: kylehandy123
password: ***
delete: true # Emby setup is required for JellyStat. However, if you don't want Janitorr to send delete requests to the Emby API, disable it here
jellyseerr:
enabled: true
url: "http://192.168.1.201:5055"
api-key: "***"
match-server: false # Enable if you have several Radarr/Sonarr instances set up in Jellyseerr. Janitorr will match them by the host+port supplied in their respective config settings.
jellystat:
enabled: true
whole-tv-show: false # Enabling this will make Jellystat consider TV shows as a whole if any episode of any season has been watched
url: "http://192.168.1.201:3007"
api-key: "***"
It's almost definitely a bug in Emby. I'll be honest with you, I have no idea what could fix it. I've been trying myself and now even the ValidatePath endpoint throws an error. This is for a path that most definitely exists.
This is the error in Emby's server log:
2024-08-28 21:37:30.509 Info Server: http/1.1 POST http://host5:8096/host5/Library/VirtualFolders/Paths?refreshLibrary=false. UserAgent: Java/21.0.3
2024-08-28 21:37:30.510 Error Server: Error processing request
*** Error Report ***
Version: 4.8.8.0
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT
Framework: .NET 6.0.25
OS/Process: x64/x64
Runtime: system/System.Private.CoreLib.dll
Processor count: 12
Data path: /config
Application path: /system
System.FormatException: System.FormatException: Unrecognized Guid format.
at System.Guid.GuidResult.SetFailure(Boolean overflow, String failureMessageID)
at System.Guid.TryParseGuid(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid..ctor(String g)
at MediaBrowser.Controller.Library.LibraryManagerExtensions.GetItemById(ILibraryManager manager, ReadOnlySpan`1 id)
at MediaBrowser.Controller.Library.LibraryManagerExtensions.GetItemById(ILibraryManager manager, String id)
at Emby.Api.Library.LibraryStructureService.Post(AddMediaPath request)
at Emby.Server.Implementations.Services.ServiceController.<>c__DisplayClass8_0.<VoidActionDelegate>b__0(Object service, Object request)
at Emby.Server.Implementations.Services.ServiceController.Execute(HttpListenerHost appHost, Object requestDto, IRequest req, Type serviceType)
at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken)
Source: System.Private.CoreLib
TargetSite: Void SetFailure(Boolean, System.String)
And for ValidatePath:
2024-08-28 22:16:46.210 Error Server: Error processing request
*** Error Report ***
Version: 4.8.8.0
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT
Framework: .NET 6.0.25
OS/Process: x64/x64
Runtime: system/System.Private.CoreLib.dll
Processor count: 12
Data path: /config
Application path: /system
System.NullReferenceException: System.NullReferenceException: Object reference not set to an instance of an object.
at Emby.Server.Implementations.IO.SmbFileSystem.IsEnabledForPath(String path)
at Emby.Server.Implementations.IO.ManagedFileSystem.FileExists(String path, FileSystemCredentials credentials)
at Emby.Api.EnvironmentService.Post(ValidatePath request)
at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task)
at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken)
Source: Emby.Server.Implementations
TargetSite: Boolean IsEnabledForPath(System.String)
I think with the latest image it should now FINALLY serialize the request body correctly and provide all the data as Emby asks.
I can confirm I can see that the log is no longer throwing an Unrecongnized GUID error, and the libraries within Emby now have folders assigned to them. I also saw that leaving-soon/movies and leaving-soon/TV was created. I'm going to quickly clean up everything on my end so its starting fresh, and ensure the log doesn't have a stroke again. @Schaka Thank you SO much for working on this thus far, things seem to be working, and I'll comment in the next 30 minutes confirming if everything appears to be working correctly on my end too.
So the original error is gone now, thankfully. I did receive a new error when i disabled dry-run in my config. Log below for only that error.
2024-08-28T18:52:24.684-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [DELETE] to [http://192.168.1.201:8989/api/v3/episodefile/30378] [SonarrClient#deleteEpisodeFile(int)]: [{
"message": "Unable to delete episode file",
"description": "NzbDrone.Core.Exceptions.NzbDroneClientException: Unable to delete episode file\n at NzbDrone.Core.MediaFiles.MediaFileDeletionServi... (3768 bytes)]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na]
at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na]
at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na]
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na]
at jdk.proxy4/jdk.proxy4.$Proxy52.deleteEpisodeFile(Unknown Source) ~[na:na]
at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService.removeBySeason(SonarrRestService.kt:180) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService.removeEntries(SonarrRestService.kt:162) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716) ~[na:na]
at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService$$SpringCGLIB$$0.removeEntries(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.deleteTvShows(AbstractCleanupSchedule.kt:96) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:76) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete$default(AbstractCleanupSchedule.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule.runSchedule(MediaCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na]
at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule$$SpringCGLIB$$0.runSchedule(<generated>) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na]
at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11]
at java.base@21.0.3/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base@21.0.3/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na]
at java.base@21.0.3/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na]
2024-08-28T18:52:24.684-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.cleanup.TagBasedCleanupSchedule : Tag based cleanup disabled, do nothing
2024-08-28T18:52:24.684-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.c.WeeklyEpisodeCleanupSchedule : Episode based cleanup disabled, do nothing
And just a question, once dry-run was disabled, I now see on Emby that the Shows (Deleted Soon) collection has folders in it. These folders are of show names that I presume are going to be deleted. The folders are empty, with no details about the show, etc. Is this expected behaviour? Screenshot attached.
Just out of curiosity in regards to the folders at the bottom have you done a scan media of the deleted soon libraries? You don't normally have to but emby my not have clicked to the files being in those folders just yet
On Thu, 29 Aug 2024, 10:57 kylehandy123, @.***> wrote:
So the original error is gone now, thankfully. I did receive a new error when i disabled dry-run in my config. Log below for only that error.
2024-08-28T18:52:24.684-04:00 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$InternalServerError: [500 Internal Server Error] during [DELETE] to [http://192.168.1.201:8989/api/v3/episodefile/30378] [SonarrClient#deleteEpisodeFile(int)]: [{ "message": "Unable to delete episode file", "description": "NzbDrone.Core.Exceptions.NzbDroneClientException: Unable to delete episode file\n at NzbDrone.Core.MediaFiles.MediaFileDeletionServi... (3768 bytes)] at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:103) ~[na:na] at feign.InvocationContext.decodeError(InvocationContext.java:126) ~[na:na] at feign.InvocationContext.proceed(InvocationContext.java:72) ~[na:na] at feign.ResponseHandler.handleResponse(ResponseHandler.java:63) ~[na:na] at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114) ~[na:na] at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70) ~[na:na] at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99) ~[na:na] at jdk.proxy4/jdk.proxy4.$Proxy52.deleteEpisodeFile(Unknown Source) ~[na:na] at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService.removeBySeason(SonarrRestService.kt:180) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService.removeEntries(SonarrRestService.kt:162) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716) ~[na:na] at com.github.schaka.janitorr.servarr.sonarr.SonarrRestService$$SpringCGLIB$$0.removeEntries(
) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.deleteTvShows(AbstractCleanupSchedule.kt:96) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule$scheduleDelete$2.invoke(AbstractCleanupSchedule.kt:49) ~[na:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.cleanupMediaType(AbstractCleanupSchedule.kt:76) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete(AbstractCleanupSchedule.kt:49) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.cleanup.AbstractCleanupSchedule.scheduleDelete$default(AbstractCleanupSchedule.kt:33) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule.runSchedule(MediaCleanupSchedule.kt:52) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[na:na] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na] at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:64) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:416) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:548) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:433) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:395) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:74) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[na:na] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[na:na] at com.github.schaka.janitorr.cleanup.MediaCleanupSchedule$$SpringCGLIB$$0.runSchedule() ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.lang.reflect.Method.invoke(Method.java:580) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[na:na] at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[na:na] at io.micrometer.observation.Observation.observe(Observation.java:499) ~[com.github.schaka.janitorr.JanitorrApplicationKt:1.13.2] at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[na:na] at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[com.github.schaka.janitorr.JanitorrApplicationKt:6.1.11] at @./java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na] at @./java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na] at @./java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na] at @./java.lang.Thread.runWith(Thread.java:1596) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @./java.lang.VirtualThread.run(VirtualThread.java:309) ~[com.github.schaka.janitorr.JanitorrApplicationKt:na] at @.***/java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:190) ~[na:na] 2024-08-28T18:52:24.684-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.cleanup.TagBasedCleanupSchedule : Tag based cleanup disabled, do nothing 2024-08-28T18:52:24.684-04:00 INFO 1 --- [ scheduling-1] c.g.s.j.c.WeeklyEpisodeCleanupSchedule : Episode based cleanup disabled, do nothing
And just a question, once dry-run was disabled, I now see on Emby that the Shows (Deleted Soon) collection has folders in it. These folders are of show names that I presume are going to be deleted. The folders are empty, with no details about the show, etc. Is this expected behaviour? Screenshot attached.
Screenshot_1280.png (view on web) https://github.com/user-attachments/assets/3f8f8a73-87c7-43cb-8d8f-08ca53a9d83e Screenshot_1281.png (view on web) https://github.com/user-attachments/assets/77eedb8a-1f95-4941-b0fe-b37b6ff5bf7f
— Reply to this email directly, view it on GitHub https://github.com/Schaka/janitorr/issues/55#issuecomment-2316377381, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUMWJOE366NBORUCHST4HE3ZTZIVTAVCNFSM6AAAAABNFBVCTCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJWGM3TOMZYGE . You are receiving this because you were mentioned.Message ID: @.***>
@hacshacdgacs I did run 2 scans prior to asking the question in the above comment, just to ensure I wasn't mistaken. As of now, the folder remains the same as the above screenshots.
For the sonarr error you're seeing I'll need your sonarr log file. There's unfortunately nothing here.
Older Sonarr v3 is not supported. And you need to make sure it can delete the files on your drives, of course.
Regarding the leaving soon folders, they should contain symlinks. If the symlinks aren't being created, you need to carefully go through the log file. It should say exactly which ones couldn't be created.
Brilliant thank you. I will go through them between now and tomorrow and see what I can find.
Regarding file permissions, I saw that you're on Unraid. You may need to add:
Extra Parameters: --user 99:100
to your config.
This will run the container as nobody:users, the default Unraid user that Emby should also be running as. Both should then have the correct file permissions. You'll have to ssh into your server for now and chown -R nobody:users /your/leaving/soon/folder
to correct any folders and symlinks that may have been created as another user.
I'll get this added to the Unraid template just in case.
So good news, it appears Janitorr is now working correctly. Sonarr was cleaned up of old content, unmonitored, etc. Emby now has content in the Shows (Deleted Soon) folder. If I may ask a few questions just to better my understanding of how Janitorr exactly works, if not, please feel more than free to just close this issue. Otherwise;
I apologize for the questions, I just want to understand exactly how Janitorr is deciding what to do, mainly so I can tweak my config, etc. Any helpful tips, explanations of what the config is telling Janitorr to do, or pointing me to information already out there is appreciated. Again, please don't feel inclined to answer my torrent of questions, I'm happy that its just working now and I can learn and go from here.
Thank you again @Schaka for all the work the last few days fixing these issues and getting things working as I think Janitorr was expected to work as.
I've added the user to the Unraid template (I think this is what you were missing?). If everything works as expected now, I'll release a new build and close this issue.
Thank you very much for the explanations. Thank you for adding the user to the unraid template. I'm not 100% certain how much of a problem this was, but I don't see any reason to not add it as a safety net nonetheless. I did reset permissions for my entire Media directory which appears to have solved the issue, so good call. Everything now appears to be working, so I think you're safe to release a new build. Thanks again for the help, I'll likely be floating around for feature requests or reporting issues as they arise to Unraid and Emby specifically.
Hi, I'm sorry to have to open another issue, but after the latest update, I am still receiving "500 Internal Server Error". Currently, the log is filling and posting so fast, I'm not sure what Janitorr is doing as my entire log is jumbled with error messages. See log below.
Here is my current config. It was recreated brand new today, after not touching Janitorr for a month.
Once again, apologies for reopening, but I'm hoping I can somehow resolve this so I can see Janitorr working, know what it's doing, and be able to use it.