diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs index 8965b865d1..04ea98644e 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs @@ -200,7 +200,7 @@ public abstract class AbpApplicationBase : IAbpApplication using var scope = ServiceProvider.CreateScope(); var abpHostEnvironment = scope.ServiceProvider.GetRequiredService(); var configuration = scope.ServiceProvider.GetRequiredService(); - return abpHostEnvironment.IsDevelopment() && configuration.GetValue("Abp:Telemetry:IsEnabled") == true; + return abpHostEnvironment.IsDevelopment() && configuration.GetValue("Abp:Telemetry:IsEnabled") != false; } //TODO: We can extract a new class for this diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs index 6616c62bda..b718d6ac15 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs @@ -43,26 +43,25 @@ public sealed class TelemetryApplicationInfoEnricher : TelemetryActivityEventEnr context.Terminate(); return Task.CompletedTask; } - - if (!_telemetryActivityStorage.ShouldAddProjectInfo(projectMetaData.ProjectId.Value)) + + var solutionId = ReadSolutionIdFromSolutionPath(projectMetaData.AbpSlnPath); + if (!solutionId.HasValue) { IgnoreChildren = true; + context.Terminate(); return Task.CompletedTask; } + context.Current[ActivityPropertyNames.SolutionId] = solutionId; - var solutionId = ReadSolutionIdFromSolutionPath(projectMetaData.AbpSlnPath); - - if (!solutionId.HasValue) + if (!_telemetryActivityStorage.ShouldAddProjectInfo(projectMetaData.ProjectId.Value)) { IgnoreChildren = true; - context.Terminate(); return Task.CompletedTask; } context.ExtraProperties[ActivityPropertyNames.SolutionPath] = projectMetaData.AbpSlnPath; context.Current[ActivityPropertyNames.ProjectType] = projectMetaData.Role ?? string.Empty; context.Current[ActivityPropertyNames.ProjectId] = projectMetaData.ProjectId.Value; - context.Current[ActivityPropertyNames.SolutionId] = solutionId; context.Current[ActivityPropertyNames.HasProjectInfo] = true; } catch diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs index eedc0712ff..e01768c418 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs @@ -33,6 +33,11 @@ internal sealed class TelemetrySolutionInfoEnricher : TelemetryActivityEventEnri { try { + if (context.SolutionPath.IsNullOrEmpty()) + { + return Task.CompletedTask; + } + var jsonContent = File.ReadAllText(context.SolutionPath!); using var doc = JsonDocument.Parse(jsonContent, new JsonDocumentOptions { @@ -91,6 +96,9 @@ internal sealed class TelemetrySolutionInfoEnricher : TelemetryActivityEventEnri context.Current[ActivityPropertyNames.DynamicLocalization] = TelemetryJsonExtensions.GetBooleanOrNull(config, "dynamicLocalization"); context.Current[ActivityPropertyNames.KubernetesConfiguration] = TelemetryJsonExtensions.GetBooleanOrNull(config, "kubernetesConfiguration"); context.Current[ActivityPropertyNames.GrafanaDashboard] = TelemetryJsonExtensions.GetBooleanOrNull(config, "grafanaDashboard"); + context.Current[ActivityPropertyNames.SampleCrudPage] = TelemetryJsonExtensions.GetBooleanOrNull(config, "sampleCrudPage"); + context.Current[ActivityPropertyNames.CreationTool] = TelemetryJsonExtensions.GetStringOrNull(config, "creationTool"); + context.Current[ActivityPropertyNames.Aspire] = TelemetryJsonExtensions.GetBooleanOrNull(config, "aspire"); } private static void AddModuleInfo(ActivityContext context, JsonElement modulesElement) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs index 70455b2d45..6796af7179 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs @@ -35,7 +35,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep var activityName = activityEvent.Get(ActivityPropertyNames.ActivityName); - if (activityName == ActivityNameConsts.AbpStudioClose) + if (activityName == ActivityNameConsts.AbpStudioClose || activityName == ActivityNameConsts.AbpStudioCloseWithoutLogin) { State.SessionId = null; } @@ -47,14 +47,20 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep if (activityEvent.HasSolutionInfo()) { - var solutionId = activityEvent.Get(ActivityPropertyNames.SolutionId); - State.Solutions[solutionId] = DateTimeOffset.UtcNow; + var solutionId = activityEvent.Get(ActivityPropertyNames.SolutionId); + if (solutionId.HasValue && solutionId.Value != Guid.Empty) + { + State.Solutions[solutionId.Value] = DateTimeOffset.UtcNow; + } } if (activityEvent.HasProjectInfo()) { - var projectId = activityEvent.Get(ActivityPropertyNames.ProjectId); - State.Projects[projectId] = DateTimeOffset.UtcNow; + var projectId = activityEvent.Get(ActivityPropertyNames.ProjectId); + if (projectId.HasValue && projectId.Value != Guid.Empty) + { + State.Projects[projectId.Value] = DateTimeOffset.UtcNow; + } } SaveState(); @@ -62,7 +68,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep public List GetActivities() { - return State.Activities; + return new List(State.Activities); } public Guid InitializeOrGetSession() diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs index 131180a3a4..0507e85597 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs @@ -12,7 +12,7 @@ static internal class TelemetryPeriod InformationSendPeriod = isTestMode ? TimeSpan.FromSeconds(15) - : TimeSpan.FromDays(7); + : TimeSpan.FromDays(2); ActivitySendPeriod = isTestMode ? TimeSpan.FromSeconds(5) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs index 68f7e95f16..924cd1dd7d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs @@ -56,13 +56,14 @@ public static class ActivityPropertyNames public const string SoftwareType = "SoftwareType"; public const string WebFramework = "WebFramework"; public const string Dbms = "Dbms"; - public const string UiTheme = "UiTheme"; - public const string UiThemeStyle = "UiThemeStyle"; + public const string UiTheme = "Theme"; + public const string UiThemeStyle = "ThemeStyle"; public const string MobileApp = "MobileApp"; public const string SampleCrudPage = "SampleCrudPage"; public const string FirstAbpVersion = "FirstAbpVersion"; public const string FirstDotnetVersion = "FirstDotnetVersion"; public const string CreationTool = "CreationTool"; + public const string Aspire = "Aspire"; public const string ModuleName = "ModuleName"; public const string ModuleVersion = "ModuleVersion"; public const string ModuleInstallationTime = "ModuleInstallationTime"; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs index d5efc1ccfd..16ad1e562f 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs @@ -67,7 +67,6 @@ public class TelemetryActivitySender : ITelemetryActivitySender, IScopedDependen } } - private async Task TrySendBatchWithRetriesAsync(HttpClient httpClient, ActivityEvent[] activities) { var currentAttempt = 0;