diff --git a/src/NzbDrone.Core/Jobs/TaskManager.cs b/src/NzbDrone.Core/Jobs/TaskManager.cs index 4c7daba7e..459b2ddb5 100644 --- a/src/NzbDrone.Core/Jobs/TaskManager.cs +++ b/src/NzbDrone.Core/Jobs/TaskManager.cs @@ -100,6 +100,9 @@ namespace NzbDrone.Core.Jobs public void Handle(CommandExecutedEvent message) { + if (message.Command.GetType().Name == "BroadcastSignalRMessage") + return; + var scheduledTask = _scheduledTaskRepository.All().SingleOrDefault(c => c.TypeName == message.Command.GetType().FullName); if (scheduledTask != null) diff --git a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs index 9895461ec..a388f1667 100644 --- a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs +++ b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs @@ -4,6 +4,7 @@ using NLog; using NzbDrone.Core.Lifecycle; using NzbDrone.Core.Messaging.Events; using System; +using NzbDrone.Common.Cache; namespace NzbDrone.Core.Qualities { @@ -17,22 +18,31 @@ namespace NzbDrone.Core.Qualities public class QualityDefinitionService : IQualityDefinitionService, IHandle { private readonly IQualityDefinitionRepository _qualityDefinitionRepository; + private readonly ICached> _cache; private readonly Logger _logger; - public QualityDefinitionService(IQualityDefinitionRepository qualityDefinitionRepository, Logger logger) + public QualityDefinitionService(IQualityDefinitionRepository qualityDefinitionRepository, ICacheManager cacheManager, Logger logger) { _qualityDefinitionRepository = qualityDefinitionRepository; + _cache = cacheManager.GetCache>(this.GetType()); _logger = logger; } + private Dictionary GetAll() + { + return _cache.Get("all", () => _qualityDefinitionRepository.All().ToDictionary(v => v.Quality), TimeSpan.FromSeconds(5.0)); + } + public void Update(QualityDefinition qualityDefinition) { _qualityDefinitionRepository.Update(qualityDefinition); + + _cache.Clear(); } public List All() { - return _qualityDefinitionRepository.All().ToList(); + return GetAll().Values.ToList(); } public QualityDefinition Get(Quality quality) @@ -40,7 +50,7 @@ namespace NzbDrone.Core.Qualities if (quality == Quality.Unknown) return new QualityDefinition(Quality.Unknown); - return _qualityDefinitionRepository.GetByQualityId((int)quality); + return GetAll()[quality]; } public void InsertMissingDefinitions(List allDefinitions) @@ -89,10 +99,12 @@ namespace NzbDrone.Core.Qualities _qualityDefinitionRepository.Update(existingDefinitions[i]); } } + + _cache.Clear(); } public void Handle(ApplicationStartedEvent message) - { + { _logger.Debug("Setting up default quality config"); InsertMissingDefinitions(Quality.DefaultQualityDefinitions.ToList());