Browse Source

add library monitor error handling

Luke Pulverenti 8 years ago
parent
commit
9c86c8fe2b

+ 13 - 8
Emby.Server.Core/IO/LibraryMonitor.cs

@@ -283,18 +283,24 @@ namespace Emby.Server.Core.IO
         /// <param name="path">The path.</param>
         private void StartWatchingPath(string path)
         {
+            if (!_fileSystem.DirectoryExists(path))
+            {
+                // Seeing a crash in the mono runtime due to an exception being thrown on a different thread
+                Logger.Info("Skipping realtime monitor for {0} because the path does not exist", path);
+                return;
+            }
+
+            // Already being watched
+            if (_fileSystemWatchers.ContainsKey(path))
+            {
+                return;
+            }
+
             // Creating a FileSystemWatcher over the LAN can take hundreds of milliseconds, so wrap it in a Task to do them all in parallel
             Task.Run(() =>
             {
                 try
                 {
-                    if (!_fileSystem.DirectoryExists(path))
-                    {
-                        // Seeing a crash in the mono runtime due to an exception being thrown on a different thread
-                        Logger.Info("Skipping realtime monitor for {0} because the path does not exist", path);
-                        return;
-                    }
-
                     var newWatcher = new FileSystemWatcher(path, "*")
                     {
                         IncludeSubdirectories = true
@@ -326,7 +332,6 @@ namespace Emby.Server.Core.IO
                     }
                     else
                     {
-                        Logger.Info("Unable to add directory watcher for {0}. It already exists in the dictionary.", path);
                         newWatcher.Dispose();
                     }
 

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -2112,7 +2112,7 @@ namespace Emby.Server.Implementations.LiveTv
 
             if (timer == null)
             {
-                throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id));
+                throw new ResourceNotFoundException(string.Format("SeriesTimer with Id {0} not found", id));
             }
 
             var service = GetService(timer.ServiceName);

+ 1 - 1
MediaBrowser.Api/Playback/Hls/BaseHlsService.cs

@@ -103,7 +103,7 @@ namespace MediaBrowser.Api.Playback.Hls
                             throw;
                         }
 
-                        var waitForSegments = state.SegmentLength >= 10 ? 2 : 2;
+                        var waitForSegments = state.SegmentLength >= 10 ? 2 : 3;
                         await WaitForMinimumSegmentCount(playlist, waitForSegments, cancellationTokenSource.Token).ConfigureAwait(false);
                     }
                 }