From 4819a3c8edad34185ec807902b1440a6c8db9daa Mon Sep 17 00:00:00 2001 From: kaso17 Date: Wed, 13 Sep 2017 11:33:17 +0200 Subject: [PATCH] Continue loading cardigann definition in case of an error --- src/Jackett/Services/IndexerManagerService.cs | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Jackett/Services/IndexerManagerService.cs b/src/Jackett/Services/IndexerManagerService.cs index e55aa86d3..8112c4141 100644 --- a/src/Jackett/Services/IndexerManagerService.cs +++ b/src/Jackett/Services/IndexerManagerService.cs @@ -115,20 +115,35 @@ namespace Jackett.Services { logger.Info("Loading Cardigann definition " + file.FullName); - string DefinitionString = File.ReadAllText(file.FullName); - var definition = deserializer.Deserialize(DefinitionString); + try { + string DefinitionString = File.ReadAllText(file.FullName); + var definition = deserializer.Deserialize(DefinitionString); + return definition; + } + catch (Exception ex) + { + logger.Error(ex, "Error while parsing Cardigann definition " + file.FullName + ": " + ex.Message); + return null; + } + }).Where(definition => definition != null); - return definition; - }); - var cardigannIndexers = definitions.Select(definition => + List cardigannIndexers = definitions.Select(definition => { - // create own webClient instance for each indexer (seperate cookies stores, etc.) - var indexerWebClientInstance = (IWebClient)Activator.CreateInstance(webClient.GetType(), processService, logger, globalConfigService); + try + { + // create own webClient instance for each indexer (seperate cookies stores, etc.) + var indexerWebClientInstance = (IWebClient)Activator.CreateInstance(webClient.GetType(), processService, logger, globalConfigService); - IIndexer indexer = new CardigannIndexer(configService, indexerWebClientInstance, logger, protectionService, definition); - configService.Load(indexer); - return indexer; - }).ToList(); // Explicit conversion to list to avoid repeated resource loading + IIndexer indexer = new CardigannIndexer(configService, indexerWebClientInstance, logger, protectionService, definition); + configService.Load(indexer); + return indexer; + } + catch (Exception ex) + { + logger.Error(ex, "Error while creating Cardigann instance from Definition: " + ex.Message); + return null; + } + }).Where(cardigannIndexer => cardigannIndexer != null).ToList(); // Explicit conversion to list to avoid repeated resource loading foreach (var indexer in cardigannIndexers) {