Ver código fonte

fix directory watchers not picking up changes

Luke Pulverenti 11 anos atrás
pai
commit
64818ebd22

+ 28 - 5
MediaBrowser.Api/Library/LibraryStructureService.cs

@@ -286,7 +286,12 @@ namespace MediaBrowser.Api.Library
             }
             finally
             {
-                _directoryWatchers.Start();
+                // No need to start if scanning the library because it will handle it
+                if (!request.RefreshLibrary)
+                {
+                    _directoryWatchers.Start();
+                }
+
                 _directoryWatchers.RemoveTempIgnore(virtualFolderPath);
             }
 
@@ -353,7 +358,12 @@ namespace MediaBrowser.Api.Library
             }
             finally
             {
-                _directoryWatchers.Start();
+                // No need to start if scanning the library because it will handle it
+                if (!request.RefreshLibrary)
+                {
+                    _directoryWatchers.Start();
+                }
+
                 _directoryWatchers.RemoveTempIgnore(currentPath);
                 _directoryWatchers.RemoveTempIgnore(newPath);
             }
@@ -404,7 +414,12 @@ namespace MediaBrowser.Api.Library
             }
             finally
             {
-                _directoryWatchers.Start();
+                // No need to start if scanning the library because it will handle it
+                if (!request.RefreshLibrary)
+                {
+                    _directoryWatchers.Start();
+                }
+
                 _directoryWatchers.RemoveTempIgnore(path);
             }
 
@@ -442,7 +457,11 @@ namespace MediaBrowser.Api.Library
             }
             finally
             {
-                _directoryWatchers.Start();
+                // No need to start if scanning the library because it will handle it
+                if (!request.RefreshLibrary)
+                {
+                    _directoryWatchers.Start();
+                }
             }
 
             if (request.RefreshLibrary)
@@ -479,7 +498,11 @@ namespace MediaBrowser.Api.Library
             }
             finally
             {
-                _directoryWatchers.Start();
+                // No need to start if scanning the library because it will handle it
+                if (!request.RefreshLibrary)
+                {
+                    _directoryWatchers.Start();
+                }
             }
 
             if (request.RefreshLibrary)

+ 1 - 11
MediaBrowser.Api/TvShowsService.cs

@@ -372,22 +372,12 @@ namespace MediaBrowser.Api
                 return episodes.Where(i => (i.PhysicalSeasonNumber ?? -1) == seasonNumber);
             }
 
-            var episodeList = episodes.ToList();
-
-            // We can only enforce the air date requirement if the episodes have air dates
-            var enforceAirDate = episodeList.Any(i => i.PremiereDate.HasValue);
-
-            return episodeList.Where(i =>
+            return episodes.Where(i =>
             {
                 var episode = i;
 
                 if (episode != null)
                 {
-                    if (enforceAirDate && !episode.PremiereDate.HasValue)
-                    {
-                        return false;
-                    }
-
                     var currentSeasonNumber = episode.AiredSeasonNumber;
 
                     return currentSeasonNumber.HasValue && currentSeasonNumber.Value == seasonNumber;

+ 2 - 2
MediaBrowser.Controller/LiveTv/ILiveTvManager.cs

@@ -1,7 +1,7 @@
-using System.Threading;
-using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.LiveTv;
 using MediaBrowser.Model.Querying;
 using System.Collections.Generic;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace MediaBrowser.Controller.LiveTv

+ 12 - 0
MediaBrowser.Model/LiveTv/ProgramInfoDto.cs

@@ -100,6 +100,18 @@ namespace MediaBrowser.Model.LiveTv
         /// </summary>
         /// <value>The recording status.</value>
         public RecordingStatus? RecordingStatus { get; set; }
+
+        /// <summary>
+        /// Gets or sets the timer identifier.
+        /// </summary>
+        /// <value>The timer identifier.</value>
+        public string TimerId { get; set; }
+
+        /// <summary>
+        /// Gets or sets the timer status.
+        /// </summary>
+        /// <value>The timer status.</value>
+        public RecordingStatus? TimerStatus { get; set; }
         
         public ProgramInfoDto()
         {

+ 0 - 1
MediaBrowser.Providers/TV/EpisodeProviderFromXml.cs

@@ -2,7 +2,6 @@
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;

+ 1 - 1
MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs

@@ -69,7 +69,7 @@ namespace MediaBrowser.Server.Implementations.IO
             // This is an arbitraty amount of time, but delay it because file system writes often trigger events after RemoveTempIgnore has been called. 
             // Seeing long delays in some situations, especially over the network.
             // Seeing delays up to 40 seconds, but not going to ignore changes for that long.
-            await Task.Delay(20000).ConfigureAwait(false);
+            await Task.Delay(1500).ConfigureAwait(false);
 
             string val;
             _tempIgnoredPaths.TryRemove(path, out val);

+ 14 - 0
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -905,6 +905,20 @@ namespace MediaBrowser.Server.Implementations.Library
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task.</returns>
         public async Task ValidateMediaLibraryInternal(IProgress<double> progress, CancellationToken cancellationToken)
+        {
+            _directoryWatchersFactory().Stop();
+
+            try
+            {
+                await PerformLibraryValidation(progress, cancellationToken).ConfigureAwait(false);
+            }
+            finally
+            {
+                _directoryWatchersFactory().Start();
+            }
+        }
+
+        private async Task PerformLibraryValidation(IProgress<double> progress, CancellationToken cancellationToken)
         {
             _logger.Info("Validating media library");
 

+ 1 - 1
MediaBrowser.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
 
 namespace MediaBrowser.Server.Implementations.LiveTv
 {
-    class RefreshChannelsScheduledTask : IScheduledTask
+    class RefreshChannelsScheduledTask 
     {
         private readonly ILiveTvManager _liveTvManager;
 

+ 0 - 2
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -199,8 +199,6 @@ namespace MediaBrowser.ServerApplication
         {
             await base.RunStartupTasks().ConfigureAwait(false);
 
-            DirectoryWatchers.Start();
-
             Logger.Info("Core startup complete");
 
             Parallel.ForEach(GetExports<IServerEntryPoint>(), entryPoint =>