[Issue]: Live TV Recordings No Longer Scheduled #11579
Description
Please describe your bug
Live TV episodes are no longer scheduled for recording. Scheduling a recording for either a single episode or a series results in a loading spinner, an error in the server log, and no recording being created.
This has been seen on an instance migrated from 10.8.13 and a fresh 10.9.0 instance with only the HDHomeRun and XMLTV guide data file setup.
I tried giving the directory mentioned in the error log and its underlying files 777 as well as not mounting a directory so the files would be used directly from the jellyfin image.
This worked in 10.8.13.
Reproduction Steps
With an HDHomeRun setup and XMLTV data imported,
- Navigate to the Live TV Guide
- Choose an episode and select Record
Jellyfin Version
10.9.0
10.9.1
if other:
No response
Environment
- OS: Arch
- Linux Kernel: 6.8.9-arch1-2
- Virtualization: Docker
- Clients: Web, Expo
- Browser: Firefox
- FFmpeg Version: 6.0.1-Jellyfin
- Playback Method: N/A
- Hardware Acceleration: QuickSync normally, tried with None as well
- GPU Model: Intel UHD Graphics
- Plugins: None / Defaults Only
- Reverse Proxy: Traefik
- Base URL: /jellyfin/ normally, tried None as well
- Networking: Bridge
- Storage: LocalJellyfin logs
[2024-05-12 19:27:54.997 +00:00] [ERR] [58] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/LiveTv/SeriesTimers/20c71047f7bf2178ddb423513b34f653".
System.UnauthorizedAccessException: Access to the path '/config/data/livetv' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
at System.IO.File.OpenHandle(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
at System.IO.File.WriteToFile(String path, FileMode mode, String contents, Encoding encoding)
at Jellyfin.LiveTv.Timers.ItemDataProvider`1.SaveList()
at Jellyfin.LiveTv.Timers.ItemDataProvider`1.Update(T item)
at Jellyfin.LiveTv.Timers.TimerManager.Update(TimerInfo item)
at Jellyfin.LiveTv.DefaultLiveTvService.UpdateTimersForSeriesTimer(SeriesTimerInfo seriesTimer, Boolean updateTimerSettings, Boolean deleteInvalidTimers)
at Jellyfin.LiveTv.DefaultLiveTvService.UpdateSeriesTimerAsync(SeriesTimerInfo info, CancellationToken cancellationToken)
at Jellyfin.LiveTv.LiveTvManager.UpdateSeriesTimer(SeriesTimerInfoDto timer, CancellationToken cancellationToken)
at Jellyfin.Api.Controllers.LiveTvController.UpdateSeriesTimer(String timerId, SeriesTimerInfoDto seriesTimerInfo)
at lambda_method1835(Closure, Object)
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)FFmpeg logs
N/APlease attach any browser or client logs here
N/A
Please attach any screenshots here

Spinner seen after attempting to schedule a recording.

All options that could prevent recording are as permissive as possible.

One episode claims to be recording and another scheduled. Neither were actually recorded.
Code of Conduct
- I agree to follow this project's Code of Conduct
Metadata
Assignees
Type
Projects
Status
No status
Status
Closed/Done
Activity