From 42e2254e30f47e7a1f9ea8795ba226459e8e3d9f Mon Sep 17 00:00:00 2001 From: Mole Date: Wed, 22 Jun 2022 08:25:18 +0200 Subject: [PATCH] Only send telemetry if we're on runtimelevel run (#12600) --- .../HostedServices/ReportSiteTask.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs b/src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs index 658b8dd47d..cf209109fc 100644 --- a/src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs +++ b/src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs @@ -3,8 +3,10 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; +using Umbraco.Cms.Core; using Umbraco.Cms.Core.Configuration; using Umbraco.Cms.Core.Configuration.Models; +using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Telemetry; using Umbraco.Cms.Core.Telemetry.Models; using Umbraco.Cms.Web.Common.DependencyInjection; @@ -16,17 +18,28 @@ public class ReportSiteTask : RecurringHostedServiceBase private static HttpClient _httpClient = new(); private readonly ILogger _logger; private readonly ITelemetryService _telemetryService; + private readonly IRuntimeState _runtimeState; public ReportSiteTask( ILogger logger, - ITelemetryService telemetryService) - : base(logger, TimeSpan.FromDays(1), TimeSpan.FromMinutes(1)) + ITelemetryService telemetryService, + IRuntimeState runtimeState) + : base(logger, TimeSpan.FromDays(1), TimeSpan.FromMinutes(5)) { _logger = logger; _telemetryService = telemetryService; + _runtimeState = runtimeState; _httpClient = new HttpClient(); } + [Obsolete("Use the constructor that takes IRuntimeState, scheduled for removal in V12")] + public ReportSiteTask( + ILogger logger, + ITelemetryService telemetryService) + : this(logger, telemetryService, StaticServiceProvider.Instance.GetRequiredService()) + { + } + [Obsolete("Use the constructor that takes ITelemetryService instead, scheduled for removal in V11")] public ReportSiteTask( ILogger logger, @@ -42,6 +55,12 @@ public class ReportSiteTask : RecurringHostedServiceBase /// public override async Task PerformExecuteAsync(object? state) { + if (_runtimeState.Level is not RuntimeLevel.Run) + { + // We probably haven't installed yet, so we can't get telemetry. + return; + } + if (_telemetryService.TryGetTelemetryReportData(out TelemetryReportData? telemetryReportData) is false) { _logger.LogWarning("No telemetry marker found");