diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-28 09:24:20 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-28 09:24:20 -0400 |
| commit | f22c379a138fbf1f81be9ed4665c851f0d7b2382 (patch) | |
| tree | 8141b2371faee602f494a5c39acb35e51449275b | |
| parent | c2c081c8e4b5350d449ffc25389ef90483078f52 (diff) | |
fixed directory watcher crash
| -rw-r--r-- | MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs | 64 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.sln | 3 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.Internal.nuspec | 4 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Common.nuspec | 2 | ||||
| -rw-r--r-- | Nuget/MediaBrowser.Server.Core.nuspec | 4 |
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> |
