[Issue]: Folder refresh causes subtitle/file rescan every time #5945

Closed
opened 2026-02-07 02:42:21 +03:00 by OVERLORD · 8 comments
Owner

Originally created by @jessienab on GitHub (Jun 6, 2024).

Please describe your bug

I have a folder of Youtube videos. Inside are video files, image files, text files, and subtitle files (.srt, which are text files but considered different).

Currently it seems that every time a modification is done to the parent folder, whether a new video is added, a new folder is added, etc, a refresh of the folder is triggered, which mainly seems to iterate over subtitles of videos "due to external subtitles change."... even when there's no change to the scanned subtitles, nor any change to the scanned videos (which are all completely irrelevant to the actual newly added files).

Here is an example:

In separate window:
$ youtube-dl https://www.youtube.com/watch?v=L4DrolmDxmw

Jellyfin logs:
[10:50:56] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Pixar (@pixar)
[10:50:58] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Pixar (@pixar) to /data/youtube
[10:51:58] [DBG] [26] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped.
[10:51:58] [INF] [26] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed.
[10:52:24] [DBG] [9] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv due to external subtitles change.
  1. File is downloaded, which modifies the folder, and triggers an inotify of filesystem change
  2. System then decides to do a root folder refresh. See code here
  3. System iterates over files due to "external subtitles change" despite the files being iterated over being totally unrelated to the newly downloaded file(s)/folder(s), and those scanned files themselves very static and unmodified; the subtitles (external .srt files in the folders, not embedded into the video(s)) also being unmodified.

File examples:

$ ls -al I watched one SNL episode from every season [AGjxX4gvaqk].mkv
May 31  2021 'I watched one SNL episode from every season [AGjxX4gvaqk].mkv'

$ ls -al Pixar\ \(\@pixar\)/*
Jun  6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].description'
Jun  6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].en.srt'
Jun  6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].info.json'
Jun  4 13:01 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].mkv'
Jun  6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].webp'

This behaviour seems new, as in the past I could simply download single video files, or many new video files, even ones with subtitles, without any sort of continuous refresh of the root folder... which causes heavy I/O reads.

Reproduction Steps

  1. Add/modify a file inside a library source folder.
  2. Wait 30s-1min for system to notice change
  3. System triggers full root folder rescan.

Jellyfin Version

10.9.5

Environment

- OS: Arch Linux
- Linux Kernel: 6.6.30-2-lts
- Virtualization: Podman (see Jellyfin Version for docker image)
- Clients: Jellyfin Web 10.9.5
- Browser: IceCat 115.9.1esr (64-bit) ( https://www.gnu.org/software/gnuzilla/ )
- FFmpeg Version: ffmpeg version 6.0.1-Jellyfin , ffprobe version 6.0.1-Jellyfin
- Playback Method: N/A
- Hardware Acceleration: None
- GPU Model: N/A
- Plugins: AudioDB 10.9.5.0, MusicBrainz 10.9.5.0, OMDb 10.9.5.0, Session Cleaner 3.0.0.0, Studio Images 10.9.5.0, TMDb 10.9.5.0, TVmaze 11.0.0.0, Webhook 14.0.0.0
- Reverse Proxy: nginx (but N/A)
- Base URL: local.server.example/jellyfin
- Networking: LAN
- Storage: ZFS HDD

Jellyfin logs

[10:50:56] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Pixar (@pixar)
[10:50:58] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Pixar (@pixar) to /data/youtube
[10:51:58] [DBG] [26] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped.
[10:51:58] [INF] [26] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed.
[10:52:24] [DBG] [9] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv due to external subtitles change.
[2024-06-06 10:52:24.746 -04:00] [INF] [9] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
[2024-06-06 10:52:25.128 -04:00] [INF] [24] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].en.srt\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2024-06-06 10:52:25.168 -04:00] [INF] [14] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].en.srt\" -threads 0 -v warning -print_format json -show_streams -show_format"

Code of Conduct

  • I agree to follow this project's Code of Conduct

Thank you Ghost and Oddstr13 on the troubleshooting matrix.org room.

Originally created by @jessienab on GitHub (Jun 6, 2024). ### Please describe your bug I have a folder of Youtube videos. Inside are video files, image files, text files, and subtitle files (.srt, which are text files but considered different). Currently it seems that every time a modification is done to the parent folder, whether a new video is added, a new folder is added, etc, a refresh of the folder is triggered, which mainly seems to iterate over subtitles of videos "due to external subtitles change."... even when there's no change to the scanned subtitles, nor any change to the scanned videos (which are all completely irrelevant to the actual newly added files). Here is an example: ``` In separate window: $ youtube-dl https://www.youtube.com/watch?v=L4DrolmDxmw Jellyfin logs: [10:50:56] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Pixar (@pixar) [10:50:58] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Pixar (@pixar) to /data/youtube [10:51:58] [DBG] [26] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped. [10:51:58] [INF] [26] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed. [10:52:24] [DBG] [9] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv due to external subtitles change. ``` 1. File is downloaded, which modifies the folder, and triggers an inotify of filesystem change 2. System then decides to do a root folder refresh. See [code here](https://github.com/jellyfin/jellyfin/blob/926470829d91d93b4c0b22c5b8b89a791abbb434/Emby.Server.Implementations/IO/LibraryMonitor.cs#L400-L406) 3. System iterates over files due to "external subtitles change" despite the files being iterated over being totally unrelated to the newly downloaded file(s)/folder(s), and those scanned files themselves very static and unmodified; the subtitles (external .srt files in the folders, not embedded into the video(s)) also being unmodified. File examples: ``` $ ls -al I watched one SNL episode from every season [AGjxX4gvaqk].mkv May 31 2021 'I watched one SNL episode from every season [AGjxX4gvaqk].mkv' $ ls -al Pixar\ \(\@pixar\)/* Jun 6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].description' Jun 6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].en.srt' Jun 6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].info.json' Jun 4 13:01 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].mkv' Jun 6 10:50 'Pixar (@pixar)/20240604 - Inside Out 2 | Final Trailer - [1920x1080] [L4DrolmDxmw].webp' ``` This behaviour seems new, as in the past I could simply download single video files, or many new video files, even ones with subtitles, without any sort of continuous refresh of the root folder... which causes heavy I/O reads. ### Reproduction Steps 1. Add/modify a file inside a library source folder. 2. Wait 30s-1min for system to notice change 3. System triggers full root folder rescan. ### Jellyfin Version [10.9.5](https://github.com/linuxserver/docker-jellyfin) ### Environment ```markdown - OS: Arch Linux - Linux Kernel: 6.6.30-2-lts - Virtualization: Podman (see Jellyfin Version for docker image) - Clients: Jellyfin Web 10.9.5 - Browser: IceCat 115.9.1esr (64-bit) ( https://www.gnu.org/software/gnuzilla/ ) - FFmpeg Version: ffmpeg version 6.0.1-Jellyfin , ffprobe version 6.0.1-Jellyfin - Playback Method: N/A - Hardware Acceleration: None - GPU Model: N/A - Plugins: AudioDB 10.9.5.0, MusicBrainz 10.9.5.0, OMDb 10.9.5.0, Session Cleaner 3.0.0.0, Studio Images 10.9.5.0, TMDb 10.9.5.0, TVmaze 11.0.0.0, Webhook 14.0.0.0 - Reverse Proxy: nginx (but N/A) - Base URL: local.server.example/jellyfin - Networking: LAN - Storage: ZFS HDD ``` ### Jellyfin logs ```shell [10:50:56] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Pixar (@pixar) [10:50:58] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Pixar (@pixar) to /data/youtube [10:51:58] [DBG] [26] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped. [10:51:58] [INF] [26] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed. [10:52:24] [DBG] [9] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv due to external subtitles change. [2024-06-06 10:52:24.746 -04:00] [INF] [9] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format" [2024-06-06 10:52:25.128 -04:00] [INF] [24] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].en.srt\" -threads 0 -v warning -print_format json -show_streams -show_format" [2024-06-06 10:52:25.168 -04:00] [INF] [14] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/data/youtube/I watched one SNL episode from every season [AGjxX4gvaqk].en.srt\" -threads 0 -v warning -print_format json -show_streams -show_format" ``` ### Code of Conduct - [X] I agree to follow this project's Code of Conduct Thank you Ghost and Oddstr13 on the troubleshooting matrix.org room.
OVERLORD added the bugstale labels 2026-02-07 02:42:21 +03:00
Author
Owner

@jessienab commented on GitHub (Jun 6, 2024):

Another comment, and I wanted this to be separate

[11:34:37] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/NFB (@nfb)/20240606 - Maybe Elephants | Trailer - [3840x2076] [wcWr5SZDIog].description
[11:34:37] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/NFB (@nfb)/20240606 - Maybe Elephants | Trailer - [3840x2076] [wcWr5SZDIog].description to /data/youtube/NFB (@nfb)
[11:34:39] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/NFB (@nfb) to /data/youtube

Same issue presents itself even with a folder that already exists, for this case I mean. This downloaded video (wcWr5SZDIog) from youtube has one subtitle file. First the NFB folder is scanned, specifically ffprobing subtitle files, then the entire /data/youtube folder.

*** Another update ***

[11:41:09] [INF] [163] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting /usr/lib/jellyfin-ffmpeg/ffprobe with args -analyzeduration 200M -probesize 1G -i file:"/data/youtube/Tom Scott (enyay)/20170109 - The Little-Known Patterns on British Streets - [3840x2160] [cdPymLgfXSY].zh-TW.srt" -threads 0 -v warning -print_format json -show_streams -show_format
[11:41:09] [ERR] [62] MediaBrowser.Providers.Manager.ProviderManager: Error refreshing item
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteConnectionExtensions.ExecuteNonQuery(SqliteConnection connection, String commandText, SqliteParameter[] parameters)
   at Microsoft.Data.Sqlite.SqliteTransaction..ctor(SqliteConnection connection, IsolationLevel isolationLevel, Boolean deferred)
   at Emby.Server.Implementations.Data.SqliteItemRepository.SaveItems(IReadOnlyList`1 items, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Library.LibraryManager.UpdateItemsAsync(IReadOnlyList`1 items, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Video.UpdateToRepositoryAsync(ItemUpdateType updateReason, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.MetadataService`2.SaveItemAsync(MetadataResult`1 result, ItemUpdateType reason, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.MetadataService`2.RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.BaseItem.RefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, Boolean allowRemoveRoot, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, Boolean allowRemoveRoot, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.ProviderManager.RefreshItem(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.ProviderManager.StartProcessingRefreshQueue()

Which is related to https://github.com/jellyfin/jellyfin/issues/11980 I believe. So at the moment it would be a good idea to wait until 10.9.6 to see if these two issues are related.

EDIT 2024-06-07 I've updated to 10.9.6 and this issue still persists. File refresher will set to the proper sub-directory but then reset itself to the root directory, as shown above...

$ yt-dlp https://www.youtube.com/watch?v=adEhQwiX1UE

... waiting 30s-1min ...

[08:56:39] [DBG] [12] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Universal Pictures Canada (@UniversalPicturesCanada)
[08:56:42] [DBG] [12] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Universal Pictures Canada (@UniversalPicturesCanada) to /data/youtube
[08:56:50] [INF] [54] Emby.Server.Implementations.ScheduledTasks.TaskManager: Webhook Item Added Notifier Completed after 0 minute(s) and 0 seconds
[08:57:20] [INF] [18] Emby.Server.Implementations.ScheduledTasks.TaskManager: Webhook Item Added Notifier Completed after 0 minute(s) and 0 seconds
[08:57:42] [DBG] [23] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped.
[08:57:42] [INF] [23] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed.

The issue seems to also be irrelevant of if a video has subtitles available to download.

@jessienab commented on GitHub (Jun 6, 2024): Another comment, and I wanted this to be separate ``` [11:34:37] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/NFB (@nfb)/20240606 - Maybe Elephants | Trailer - [3840x2076] [wcWr5SZDIog].description [11:34:37] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/NFB (@nfb)/20240606 - Maybe Elephants | Trailer - [3840x2076] [wcWr5SZDIog].description to /data/youtube/NFB (@nfb) [11:34:39] [DBG] [19] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/NFB (@nfb) to /data/youtube ``` Same issue presents itself even with a folder that already exists, for this case I mean. This downloaded video (wcWr5SZDIog) from youtube has one subtitle file. First the NFB folder is scanned, specifically ffprobing subtitle files, then the entire /data/youtube folder. *** Another update *** ``` [11:41:09] [INF] [163] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting /usr/lib/jellyfin-ffmpeg/ffprobe with args -analyzeduration 200M -probesize 1G -i file:"/data/youtube/Tom Scott (enyay)/20170109 - The Little-Known Patterns on British Streets - [3840x2160] [cdPymLgfXSY].zh-TW.srt" -threads 0 -v warning -print_format json -show_streams -show_format [11:41:09] [ERR] [62] MediaBrowser.Providers.Manager.ProviderManager: Error refreshing item Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'. at Microsoft.Data.Sqlite.SqliteDataReader.NextResult() at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior) at Microsoft.Data.Sqlite.SqliteConnectionExtensions.ExecuteNonQuery(SqliteConnection connection, String commandText, SqliteParameter[] parameters) at Microsoft.Data.Sqlite.SqliteTransaction..ctor(SqliteConnection connection, IsolationLevel isolationLevel, Boolean deferred) at Emby.Server.Implementations.Data.SqliteItemRepository.SaveItems(IReadOnlyList`1 items, CancellationToken cancellationToken) at Emby.Server.Implementations.Library.LibraryManager.UpdateItemsAsync(IReadOnlyList`1 items, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Video.UpdateToRepositoryAsync(ItemUpdateType updateReason, CancellationToken cancellationToken) at MediaBrowser.Providers.Manager.MetadataService`2.SaveItemAsync(MetadataResult`1 result, ItemUpdateType reason, CancellationToken cancellationToken) at MediaBrowser.Providers.Manager.MetadataService`2.RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.BaseItem.RefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext() --- End of stack trace from previous location --- at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext() --- End of stack trace from previous location --- at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.RefreshChildMetadata(BaseItem child, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass69_0`1.<<RunTasks>b__1>d.MoveNext() --- End of stack trace from previous location --- at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, Boolean allowRemoveRoot, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, Boolean allowRemoveRoot, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken) at MediaBrowser.Providers.Manager.ProviderManager.RefreshItem(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken) at MediaBrowser.Providers.Manager.ProviderManager.StartProcessingRefreshQueue() ``` ~~Which is related to https://github.com/jellyfin/jellyfin/issues/11980 I believe. So at the moment it would be a good idea to wait until 10.9.6 to see if these two issues are related.~~ EDIT 2024-06-07 I've updated to 10.9.6 and this issue still persists. File refresher will set to the proper sub-directory but then reset itself to the root directory, as shown above... ``` $ yt-dlp https://www.youtube.com/watch?v=adEhQwiX1UE ... waiting 30s-1min ... [08:56:39] [DBG] [12] Emby.Server.Implementations.IO.LibraryMonitor: New file refresher created for /data/youtube/Universal Pictures Canada (@UniversalPicturesCanada) [08:56:42] [DBG] [12] Emby.Server.Implementations.IO.LibraryMonitor: Resetting file refresher from /data/youtube/Universal Pictures Canada (@UniversalPicturesCanada) to /data/youtube [08:56:50] [INF] [54] Emby.Server.Implementations.ScheduledTasks.TaskManager: Webhook Item Added Notifier Completed after 0 minute(s) and 0 seconds [08:57:20] [INF] [18] Emby.Server.Implementations.ScheduledTasks.TaskManager: Webhook Item Added Notifier Completed after 0 minute(s) and 0 seconds [08:57:42] [DBG] [23] Emby.Server.Implementations.IO.LibraryMonitor: Timer stopped. [08:57:42] [INF] [23] Emby.Server.Implementations.IO.LibraryMonitor: youtube (/data/youtube) will be refreshed. ``` The issue seems to also be irrelevant of if a video has subtitles available to download.
Author
Owner

@jessienab commented on GitHub (Aug 7, 2024):

Hello,
I don't want to bump this but editing the version would probably go un-noticed.

This issue still occurs with

Web version
10.10.0
Build version
2024072205

using Linuxserver's docker-jellyfin; however their build simply has more ease-of-use options, whereas this presented issue does seem to be specific to upstream.

My solution for now has been to disable realtime monitoring and instead schedule a rescan every day at midnight; which is kinda inconvenient but it avoids clogging the system during active use time (when I'm awake).

@jessienab commented on GitHub (Aug 7, 2024): Hello, I don't want to bump this but editing the version would probably go un-noticed. This issue still occurs with ``` Web version 10.10.0 Build version 2024072205 ``` using [Linuxserver's docker-jellyfin](https://github.com/linuxserver/docker-jellyfin); however their build simply has more ease-of-use options, whereas this presented issue does seem to be specific to upstream. My solution for now has been to disable realtime monitoring and instead schedule a rescan every day at midnight; which is kinda inconvenient but it avoids clogging the system during active use time (when I'm awake).
Author
Owner

@felix920506 commented on GitHub (Aug 28, 2024):

Can you try not using a container at all? You mentioned that the LSIO image doesn't have this bug and it would be helpful to know if it is something specific to our docker image.

@felix920506 commented on GitHub (Aug 28, 2024): Can you try not using a container at all? You mentioned that the LSIO image doesn't have this bug and it would be helpful to know if it is something specific to our docker image.
Author
Owner

@jessienab commented on GitHub (Aug 28, 2024):

Can you try not using a container at all? You mentioned that the LSIO image doesn't have this bug and it would be helpful to know if it is something specific to our docker image.

Hi apologies, I am using the LSIO image specifically, where I am having the issue. In this case should it be reported to their repo? I figured it would make more sense to publish this upstream (here).

I hesitate to use the official docker image as would that potentially cause some issues with the database?

@jessienab commented on GitHub (Aug 28, 2024): > Can you try not using a container at all? You mentioned that the LSIO image doesn't have this bug and it would be helpful to know if it is something specific to our docker image. Hi apologies, I am using the LSIO image specifically, where I am having the issue. In this case should it be reported to their repo? I figured it would make more sense to publish this upstream (here). I hesitate to use the official docker image as would that potentially cause some issues with the database?
Author
Owner

@felix920506 commented on GitHub (Aug 28, 2024):

I'm not familiar with the different images. Please go ask on our forum or chat rooms. https://jellyfin.org/contact

@felix920506 commented on GitHub (Aug 28, 2024): I'm not familiar with the different images. Please go ask on our forum or chat rooms. https://jellyfin.org/contact
Author
Owner

@jellyfin-bot commented on GitHub (Dec 26, 2024):

This issue has gone 120 days without an update and will be closed within 21 days if there is no new activity. To prevent this issue from being closed, please confirm the issue has not already been fixed by providing updated examples or logs.

If you have any questions you can use one of several ways to contact us.

@jellyfin-bot commented on GitHub (Dec 26, 2024): This issue has gone 120 days without an update and will be closed within 21 days if there is no new activity. To prevent this issue from being closed, please confirm the issue has not already been fixed by providing updated examples or logs. If you have any questions you can use one of several ways to [contact us](https://jellyfin.org/contact).
Author
Owner

@jessienab commented on GitHub (Dec 29, 2024):

Hi there,
This can be considered closed. While I still feel it occurs with 10.10.3, the same performance impact and EXCESSIVE scanning does not appear to be occuring; Jellyfin does parse over files that haven't changed at all, and subtitles that already existing, but it's much quicker now, and the filelist is much smaller now.

Therefore, I'm closing this as I don't feel it's affecting me (and I've modified my update schedule otherwise), and it doesn't seem like anyone else has commented.

To note, I tested with the standard Docker Jellyfin image, and the LinuxServer image, and the same sort of output was received, so I feel it is agnostic to the Docker image.

Thank you!

@jessienab commented on GitHub (Dec 29, 2024): Hi there, This can be considered closed. While I still feel it occurs with 10.10.3, the same performance impact and EXCESSIVE scanning does not appear to be occuring; Jellyfin does parse over files that haven't changed at all, and subtitles that already existing, but it's much quicker now, and the filelist is much smaller now. Therefore, I'm closing this as I don't feel it's affecting me (and I've modified my update schedule otherwise), and it doesn't seem like anyone else has commented. To note, I tested with the standard Docker Jellyfin image, and the LinuxServer image, and the same sort of output was received, so I feel it is agnostic to the Docker image. Thank you!
Author
Owner

@jessienab commented on GitHub (Oct 22, 2025):

Just want to comment this is still happening with 10.11.0. Example file where there has been zero changes to external subtitles or the video files themselves:

09:06:58] [DBG] [57] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /media/DeepBlueInk (@DeepBlueInk)/20250530 - Skype's CEO Loses It - Brennan Lee Mulligan Animated - [1920x1080] [zo9wST53cfI].mkv due to external subtitles change.
[matroska,webm @ 0x643f438a6a40] Could not find codec parameters for stream 2 (Attachment: none): unknown codec
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (1000000000) options
Unsupported codec with id 0 for input stream 2

But as noted before, performance is not as heavily impacted... though it is annoying.

@jessienab commented on GitHub (Oct 22, 2025): Just want to comment this is still happening with 10.11.0. Example file where there has been zero changes to external subtitles or the video files themselves: > 09:06:58] [DBG] [57] MediaBrowser.Providers.MediaInfo.ProbeProvider: Refreshing /media/DeepBlueInk (@DeepBlueInk)/20250530 - Skype's CEO Loses It - Brennan Lee Mulligan Animated - [1920x1080] [zo9wST53cfI].mkv due to external subtitles change. > [matroska,webm @ 0x643f438a6a40] Could not find codec parameters for stream 2 (Attachment: none): unknown codec > Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (1000000000) options > Unsupported codec with id 0 for input stream 2 But as noted before, performance is not as heavily impacted... though it is annoying.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#5945