From 86fe19a5ddb58713dd80ee9f5b05e09e172662af 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 [common] --- .../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 26442f9e7..f134bfeea 100644 --- a/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs +++ b/src/NzbDrone.Core/HealthCheck/HealthCheckService.cs @@ -77,12 +77,15 @@ namespace NzbDrone.Core.HealthCheck .ToDictionary(g => g.Key, g => g.ToArray()); } - private void PerformHealthCheck(IProvideHealthCheck[] healthChecks) + private void PerformHealthCheck(IProvideHealthCheck[] healthChecks, bool performServerChecks = false) { var results = healthChecks.Select(c => c.Check()) .ToList(); - results.AddRange(_serverSideNotificationService.GetServerChecks()); + if (performServerChecks) + { + results.AddRange(_serverSideNotificationService.GetServerChecks()); + } foreach (var result in results) { @@ -108,17 +111,17 @@ namespace NzbDrone.Core.HealthCheck { if (message.Trigger == CommandTrigger.Manual) { - PerformHealthCheck(_healthChecks); + PerformHealthCheck(_healthChecks, true); } else { - PerformHealthCheck(_scheduledHealthChecks); + PerformHealthCheck(_scheduledHealthChecks, true); } } public void HandleAsync(ApplicationStartedEvent message) { - PerformHealthCheck(_startupHealthChecks); + PerformHealthCheck(_startupHealthChecks, true); } public void HandleAsync(IEvent message) diff --git a/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs b/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs index e5fc51dd7..14f4d3e8a 100644 --- a/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs +++ b/src/NzbDrone.Core/HealthCheck/ServerSideNotificationService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; 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 @@ namespace NzbDrone.Core.HealthCheck private readonly IHttpRequestBuilderFactory _cloudRequestBuilder; private readonly Logger _logger; - public ServerSideNotificationService(IHttpClient client, IConfigFileProvider configFileProvider, IProwlarrCloudRequestBuilder cloudRequestBuilder, Logger logger) + private readonly ICached> _cache; + + public ServerSideNotificationService(IHttpClient client, + IConfigFileProvider configFileProvider, + IProwlarrCloudRequestBuilder 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");