aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Core/IO/LibraryMonitor.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-02-03 15:52:56 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-02-03 15:52:56 -0500
commit9c86c8fe2b7179e319d6dd7a961ed44c2a8abb3d (patch)
tree552ece6f215953b3a921e4119b5615c63ff2a195 /Emby.Server.Core/IO/LibraryMonitor.cs
parent29898ce5388ac44e006a5195fccdfb13af758e19 (diff)
add library monitor error handling
Diffstat (limited to 'Emby.Server.Core/IO/LibraryMonitor.cs')
-rw-r--r--Emby.Server.Core/IO/LibraryMonitor.cs21
1 files changed, 13 insertions, 8 deletions
diff --git a/Emby.Server.Core/IO/LibraryMonitor.cs b/Emby.Server.Core/IO/LibraryMonitor.cs
index f0ecb9d89..baa705111 100644
--- a/Emby.Server.Core/IO/LibraryMonitor.cs
+++ b/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();
}