aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-03 21:35:37 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-03 21:35:37 -0400
commit4afe4f1ace27dac50f5614580e585d9a4be2e637 (patch)
tree216dc802f76ca5e3a9720bfb3f6259662b6516a6 /MediaBrowser.Server.Implementations
parent06ec5ebcb99869fdbf8eec08f1dfa46742c053b4 (diff)
added error handling in provider supports
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs21
1 files changed, 20 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index dc7ee32241..b7d73b515a 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -116,7 +116,7 @@ namespace MediaBrowser.Server.Implementations.Providers
cancellationToken.ThrowIfCancellationRequested();
// Run the normal providers sequentially in order of priority
- foreach (var provider in MetadataProviders.Where(p => p.Supports(item)))
+ foreach (var provider in MetadataProviders.Where(p => ProviderSupportsItem(p, item)))
{
cancellationToken.ThrowIfCancellationRequested();
@@ -176,6 +176,25 @@ namespace MediaBrowser.Server.Implementations.Providers
}
/// <summary>
+ /// Providers the supports item.
+ /// </summary>
+ /// <param name="provider">The provider.</param>
+ /// <param name="item">The item.</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
+ private bool ProviderSupportsItem(BaseMetadataProvider provider, BaseItem item)
+ {
+ try
+ {
+ return provider.Supports(item);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("{0} failed in Supports for type {1}", ex, provider.GetType().Name, item.GetType().Name);
+ return false;
+ }
+ }
+
+ /// <summary>
/// Fetches metadata and returns true or false indicating if any work that requires persistence was done
/// </summary>
/// <param name="provider">The provider.</param>