diff --git a/src/NzbDrone.Core/ThingiProvider/ProviderFactory.cs b/src/NzbDrone.Core/ThingiProvider/ProviderFactory.cs index 0e1a04759..b81b64446 100644 --- a/src/NzbDrone.Core/ThingiProvider/ProviderFactory.cs +++ b/src/NzbDrone.Core/ThingiProvider/ProviderFactory.cs @@ -169,14 +169,13 @@ public virtual void SetProviderCharacteristics(TProvider provider, TProviderDefi definition.Message = provider.Message; } - // TODO: Remove providers even if the ConfigContract can't be deserialized (this will fail to remove providers if the settings can't be deserialized). private void RemoveMissingImplementations() { var storedProvider = _providerRepository.All(); foreach (var invalidDefinition in storedProvider.Where(def => GetImplementation(def) == null)) { - _logger.Debug("Removing {0} ", invalidDefinition.Name); + _logger.Warn("Removing {0}", invalidDefinition.Name); _providerRepository.Delete(invalidDefinition); } } diff --git a/src/NzbDrone.Core/ThingiProvider/ProviderRepository.cs b/src/NzbDrone.Core/ThingiProvider/ProviderRepository.cs index ca347313b..44000f8d3 100644 --- a/src/NzbDrone.Core/ThingiProvider/ProviderRepository.cs +++ b/src/NzbDrone.Core/ThingiProvider/ProviderRepository.cs @@ -54,7 +54,7 @@ protected override List Query(SqlBuilder builder) var item = parser(reader); var impType = typeof(IProviderConfig).Assembly.FindTypeByName(item.ConfigContract); - if (body.IsNullOrWhiteSpace()) + if (body.IsNullOrWhiteSpace() || impType == null) { item.Settings = NullConfig.Instance; }