Use proper scheduler that honors the parallel task limit (#14281)

This commit is contained in:
JPVenson
2025-06-16 00:21:11 +03:00
committed by GitHub
parent 4cd0a2ed8d
commit 0e1be6ce30
5 changed files with 356 additions and 50 deletions

View File

@@ -62,6 +62,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LibraryTaskScheduler;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Lyrics;
using MediaBrowser.Controller.MediaEncoding;
@@ -552,6 +553,7 @@ namespace Emby.Server.Implementations
serviceCollection.AddSingleton<ISessionManager, SessionManager>();
serviceCollection.AddSingleton<ICollectionManager, CollectionManager>();
serviceCollection.AddSingleton<ILimitedConcurrencyLibraryScheduler, LimitedConcurrencyLibraryScheduler>();
serviceCollection.AddSingleton<IPlaylistManager, PlaylistManager>();
@@ -650,6 +652,7 @@ namespace Emby.Server.Implementations
CollectionFolder.ApplicationHost = this;
Folder.UserViewManager = Resolve<IUserViewManager>();
Folder.CollectionManager = Resolve<ICollectionManager>();
Folder.LimitedConcurrencyLibraryScheduler = Resolve<ILimitedConcurrencyLibraryScheduler>();
Episode.MediaEncoder = Resolve<IMediaEncoder>();
UserView.TVSeriesManager = Resolve<ITVSeriesManager>();
Video.RecordingsManager = Resolve<IRecordingsManager>();

View File

@@ -54,12 +54,12 @@ public class RefreshMediaLibraryTask : IScheduledTask
}
/// <inheritdoc />
public Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
public async Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
progress.Report(0);
return ((LibraryManager)_libraryManager).ValidateMediaLibraryInternal(progress, cancellationToken);
await ((LibraryManager)_libraryManager).ValidateMediaLibraryInternal(progress, cancellationToken).ConfigureAwait(false);
}
}