aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-28 09:24:20 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-28 09:24:20 -0400
commitf22c379a138fbf1f81be9ed4665c851f0d7b2382 (patch)
tree8141b2371faee602f494a5c39acb35e51449275b
parentc2c081c8e4b5350d449ffc25389ef90483078f52 (diff)
fixed directory watcher crash
-rw-r--r--MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs64
-rw-r--r--MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs2
-rw-r--r--MediaBrowser.sln3
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
6 files changed, 33 insertions, 46 deletions
diff --git a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
index 150b28b4b..d45952d6f 100644
--- a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
+++ b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
@@ -36,12 +36,12 @@ namespace MediaBrowser.Server.Implementations.IO
/// <summary>
/// A dynamic list of paths that should be ignored. Added to during our own file sytem modifications.
/// </summary>
- private readonly ConcurrentDictionary<string,string> _tempIgnoredPaths = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private readonly ConcurrentDictionary<string, string> _tempIgnoredPaths = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase);
/// <summary>
/// Any file name ending in any of these will be ignored by the watchers
/// </summary>
- private readonly List<string> _alwaysIgnoreFiles = new List<string> {"thumbs.db","small.jpg","albumart.jpg"};
+ private readonly List<string> _alwaysIgnoreFiles = new List<string> { "thumbs.db", "small.jpg", "albumart.jpg" };
/// <summary>
/// The timer lock
@@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.IO
Logger = logManager.GetLogger("DirectoryWatchers");
ConfigurationManager = configurationManager;
}
-
+
/// <summary>
/// Starts this instance.
/// </summary>
@@ -117,7 +117,7 @@ namespace MediaBrowser.Server.Implementations.IO
}
catch (IOException)
{
- return new string[] {};
+ return new string[] { };
}
})
@@ -265,49 +265,33 @@ namespace MediaBrowser.Server.Implementations.IO
async void watcher_Error(object sender, ErrorEventArgs e)
{
var ex = e.GetException();
- var dw = (FileSystemWatcher) sender;
+ var dw = (FileSystemWatcher)sender;
- Logger.ErrorException("Error in Directory watcher for: "+dw.Path, ex);
+ Logger.ErrorException("Error in Directory watcher for: " + dw.Path, ex);
- if (ex.Message.Contains("network name is no longer available"))
+ //Network either dropped or, we are coming out of sleep and it hasn't reconnected yet - wait and retry
+ var retries = 0;
+ var success = false;
+ while (!success && retries < 10)
{
- //Network either dropped or, we are coming out of sleep and it hasn't reconnected yet - wait and retry
- Logger.Warn("Network connection lost - will retry...");
- var retries = 0;
- var success = false;
- while (!success && retries < 10)
- {
- await Task.Delay(500).ConfigureAwait(false);
+ await Task.Delay(500).ConfigureAwait(false);
- try
- {
- dw.EnableRaisingEvents = false;
- dw.EnableRaisingEvents = true;
- success = true;
- }
- catch (IOException)
- {
- Logger.Warn("Network still unavailable...");
- retries++;
- }
+ try
+ {
+ dw.EnableRaisingEvents = false;
+ dw.EnableRaisingEvents = true;
+ success = true;
}
- if (!success)
+ catch (IOException)
{
- Logger.Warn("Unable to access network. Giving up.");
- DisposeWatcher(dw);
+ Logger.Warn("Network still unavailable...");
+ retries++;
}
-
}
- else
+ if (!success)
{
- if (!ex.Message.Contains("BIOS command limit"))
- {
- Logger.Info("Attempting to re-start watcher.");
-
- dw.EnableRaisingEvents = false;
- dw.EnableRaisingEvents = true;
- }
-
+ Logger.Warn("Unable to access network. Giving up.");
+ DisposeWatcher(dw);
}
}
@@ -455,7 +439,7 @@ namespace MediaBrowser.Server.Implementations.IO
await Task.WhenAll(itemsToRefresh.Select(i => Task.Run(async () =>
{
Logger.Info(i.Name + " (" + i.Path + ") will be refreshed.");
-
+
try
{
await i.ChangedExternally().ConfigureAwait(false);
@@ -531,7 +515,7 @@ namespace MediaBrowser.Server.Implementations.IO
_updateTimer.Dispose();
_updateTimer = null;
}
- }
+ }
_affectedPaths.Clear();
}
diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
index ea70f4079..e46ce0120 100644
--- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
+++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
@@ -110,7 +110,7 @@ namespace MediaBrowser.Server.Implementations.Library
var items = inputItems.Where(i => !(i is MusicArtist)).ToList();
- hints.AddRange(items.AsParallel().Select(item =>
+ hints.AddRange(items.Select(item =>
{
var index = GetIndex(item.Name, searchTerm, terms);
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index f9f5e9436..eb3251f74 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -173,4 +173,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(Performance) = preSolution
+ HasPerformanceSessions = true
+ EndGlobalSection
EndGlobal
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index cfcb93a52..fe05162b7 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.85</version>
+ <version>3.0.86</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.85" />
+ <dependency id="MediaBrowser.Common" version="3.0.86" />
<dependency id="NLog" version="2.0.1.2" />
<dependency id="ServiceStack.Text" version="3.9.38" />
<dependency id="SimpleInjector" version="2.2.1" />
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index a5aba4b78..569fb9fd4 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.85</version>
+ <version>3.0.86</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 85e6eae88..045922c68 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.85</version>
+ <version>3.0.86</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.85" />
+ <dependency id="MediaBrowser.Common" version="3.0.86" />
</dependencies>
</metadata>
<files>