fixed directory watcher crash

pull/702/head
Luke Pulverenti 12 years ago
parent c2c081c8e4
commit f22c379a13

@ -36,12 +36,12 @@ namespace MediaBrowser.Server.Implementations.IO
/// <summary> /// <summary>
/// A dynamic list of paths that should be ignored. Added to during our own file sytem modifications. /// A dynamic list of paths that should be ignored. Added to during our own file sytem modifications.
/// </summary> /// </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> /// <summary>
/// Any file name ending in any of these will be ignored by the watchers /// Any file name ending in any of these will be ignored by the watchers
/// </summary> /// </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> /// <summary>
/// The timer lock /// The timer lock
@ -117,7 +117,7 @@ namespace MediaBrowser.Server.Implementations.IO
} }
catch (IOException) 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) async void watcher_Error(object sender, ErrorEventArgs e)
{ {
var ex = e.GetException(); 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 await Task.Delay(500).ConfigureAwait(false);
Logger.Warn("Network connection lost - will retry...");
var retries = 0;
var success = false;
while (!success && retries < 10)
{
await Task.Delay(500).ConfigureAwait(false);
try try
{ {
dw.EnableRaisingEvents = false; dw.EnableRaisingEvents = false;
dw.EnableRaisingEvents = true; dw.EnableRaisingEvents = true;
success = true; success = true;
}
catch (IOException)
{
Logger.Warn("Network still unavailable...");
retries++;
}
} }
if (!success) catch (IOException)
{ {
Logger.Warn("Unable to access network. Giving up."); Logger.Warn("Network still unavailable...");
DisposeWatcher(dw); retries++;
} }
} }
else if (!success)
{ {
if (!ex.Message.Contains("BIOS command limit")) Logger.Warn("Unable to access network. Giving up.");
{ DisposeWatcher(dw);
Logger.Info("Attempting to re-start watcher.");
dw.EnableRaisingEvents = false;
dw.EnableRaisingEvents = true;
}
} }
} }

@ -110,7 +110,7 @@ namespace MediaBrowser.Server.Implementations.Library
var items = inputItems.Where(i => !(i is MusicArtist)).ToList(); 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); var index = GetIndex(item.Name, searchTerm, terms);

@ -173,4 +173,7 @@ Global
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
EndGlobal EndGlobal

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common.Internal</id> <id>MediaBrowser.Common.Internal</id>
<version>3.0.85</version> <version>3.0.86</version>
<title>MediaBrowser.Common.Internal</title> <title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors> <authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners> <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> <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> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <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="NLog" version="2.0.1.2" />
<dependency id="ServiceStack.Text" version="3.9.38" /> <dependency id="ServiceStack.Text" version="3.9.38" />
<dependency id="SimpleInjector" version="2.2.1" /> <dependency id="SimpleInjector" version="2.2.1" />

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common</id> <id>MediaBrowser.Common</id>
<version>3.0.85</version> <version>3.0.86</version>
<title>MediaBrowser.Common</title> <title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Server.Core</id> <id>MediaBrowser.Server.Core</id>
<version>3.0.85</version> <version>3.0.86</version>
<title>Media Browser.Server.Core</title> <title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description> <description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.85" /> <dependency id="MediaBrowser.Common" version="3.0.86" />
</dependencies> </dependencies>
</metadata> </metadata>
<files> <files>

Loading…
Cancel
Save