From 1d73d25fb25378c2b4ea59ef341c55cd7bf07765 Mon Sep 17 00:00:00 2001 From: Qstick Date: Sun, 3 Jul 2022 12:26:02 -0500 Subject: [PATCH] Fixed: Don't call for server notifications on event driven check --- .../HealthCheck/HealthCheckService.cs | 13 ++++---- .../ServerSideNotificationService.cs | 30 ++++++++++++++----- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs b/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs index 04b401826d..36bc6e969d 100644 --- a/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs +++ b/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs @@ -77,7 +77,7 @@ public List Results() .ToDictionary(g => g.Key, g => g.ToArray()); } - private void PerformHealthCheck(IProvideHealthCheck[] healthChecks, IEvent message = null) + private void PerformHealthCheck(IProvideHealthCheck[] healthChecks, IEvent message = null, bool performServerChecks = false) { var results = new List(); @@ -93,7 +93,10 @@ private void PerformHealthCheck(IProvideHealthCheck[] healthChecks, IEvent messa } } - results.AddRange(_serverSideNotificationService.GetServerChecks()); + if (performServerChecks) + { + results.AddRange(_serverSideNotificationService.GetServerChecks()); + } foreach (var result in results) { @@ -119,17 +122,17 @@ public void Execute(CheckHealthCommand message) { if (message.Trigger == CommandTrigger.Manual) { - PerformHealthCheck(_healthChecks); + PerformHealthCheck(_healthChecks, null, true); } else { - PerformHealthCheck(_scheduledHealthChecks); + PerformHealthCheck(_scheduledHealthChecks, null, true); } } public void HandleAsync(ApplicationStartedEvent message) { - PerformHealthCheck(_startupHealthChecks); + PerformHealthCheck(_startupHealthChecks, null, true); } public void HandleAsync(IEvent message) diff --git a/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs b/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs index 139f95e820..0a40c1224e 100644 --- a/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs +++ b/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Runtime.InteropServices; using NLog; +using NzbDrone.Common.Cache; using NzbDrone.Common.Cloud; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Http; @@ -23,24 +24,37 @@ public class ServerSideNotificationService : IServerSideNotificationService private readonly IHttpRequestBuilderFactory _cloudRequestBuilder; private readonly Logger _logger; - public ServerSideNotificationService(IHttpClient client, IConfigFileProvider configFileProvider, ILidarrCloudRequestBuilder cloudRequestBuilder, Logger logger) + private readonly ICached> _cache; + + public ServerSideNotificationService(IHttpClient client, + IConfigFileProvider configFileProvider, + ILidarrCloudRequestBuilder cloudRequestBuilder, + ICacheManager cacheManager, + Logger logger) { _client = client; _configFileProvider = configFileProvider; _cloudRequestBuilder = cloudRequestBuilder.Services; _logger = logger; + + _cache = cacheManager.GetCache>(GetType()); } public List GetServerChecks() + { + return _cache.Get("ServerChecks", () => RetrieveServerChecks(), TimeSpan.FromHours(2)); + } + + private List RetrieveServerChecks() { var request = _cloudRequestBuilder.Create() - .Resource("/notification") - .AddQueryParam("version", BuildInfo.Version) - .AddQueryParam("os", OsInfo.Os.ToString().ToLowerInvariant()) - .AddQueryParam("arch", RuntimeInformation.OSArchitecture) - .AddQueryParam("runtime", PlatformInfo.Platform.ToString().ToLowerInvariant()) - .AddQueryParam("branch", _configFileProvider.Branch) - .Build(); + .Resource("/notification") + .AddQueryParam("version", BuildInfo.Version) + .AddQueryParam("os", OsInfo.Os.ToString().ToLowerInvariant()) + .AddQueryParam("arch", RuntimeInformation.OSArchitecture) + .AddQueryParam("runtime", PlatformInfo.Platform.ToString().ToLowerInvariant()) + .AddQueryParam("branch", _configFileProvider.Branch) + .Build(); try { _logger.Trace("Getting server side health notifications");