Browse Source

Refactor TelemetryApplicationInfoEnricher and TelemetryActivityStorage to improve application info handling by renaming properties for clarity and enhancing the enrichment logic to iterate through contributors directly, removing deprecated methods for better maintainability.

pull/23059/head
Emre KARA 1 year ago
parent
commit
285534457d
  1. 29
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs
  2. 4
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs
  3. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs

29
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs

@ -17,7 +17,7 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
public TelemetryApplicationInfoEnricher( public TelemetryApplicationInfoEnricher(
ITelemetrySessionTypeProvider telemetrySessionTypeProvider, ITelemetrySessionTypeProvider telemetrySessionTypeProvider,
IEnumerable<ITelemetryApplicationInfoContributor> telemetryApplicationInfoContributors, IEnumerable<ITelemetryApplicationInfoContributor> telemetryApplicationInfoContributors,
ITelemetryActivityStorage telemetryActivityStorage) ITelemetryActivityStorage telemetryActivityStorage)
{ {
_telemetrySessionTypeProvider = telemetrySessionTypeProvider; _telemetrySessionTypeProvider = telemetrySessionTypeProvider;
@ -45,7 +45,11 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
return; return;
} }
await ContributeApplicationInfoAsync(activity); foreach (var contributor in _telemetryApplicationInfoContributors)
{
await contributor.ContributeAsync(activity);
}
activity.Remove(ActivityPropertyNames.Assembly); activity.Remove(ActivityPropertyNames.Assembly);
await _telemetryActivityStorage.MarkApplicationInfoAsAddedAsync(projectId.Value); await _telemetryActivityStorage.MarkApplicationInfoAsAddedAsync(projectId.Value);
} }
@ -57,14 +61,14 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
private bool ShouldEnrichActivity(ActivityData activity) private bool ShouldEnrichActivity(ActivityData activity)
{ {
return activity.ContainsKey(ActivityPropertyNames.Assembly) && return activity.ContainsKey(ActivityPropertyNames.Assembly) &&
_telemetrySessionTypeProvider.SessionType == SessionType.ApplicationRuntime; _telemetrySessionTypeProvider.SessionType == SessionType.ApplicationRuntime;
} }
private static Guid? ExtractProjectId(ActivityData activity) private static Guid? ExtractProjectId(ActivityData activity)
{ {
if (!activity.TryGetValue(ActivityPropertyNames.ProjectId, out var projectIdObj) || if (!activity.TryGetValue(ActivityPropertyNames.ProjectId, out var projectIdObj) ||
projectIdObj is not string projectIdStr || projectIdObj is not string projectIdStr ||
!Guid.TryParse(projectIdStr, out var projectId)) !Guid.TryParse(projectIdStr, out var projectId))
{ {
return null; return null;
@ -72,19 +76,4 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
return projectId; return projectId;
} }
private async Task ContributeApplicationInfoAsync(ActivityData activity)
{
foreach (var contributor in _telemetryApplicationInfoContributors)
{
try
{
await contributor.ContributeAsync(activity);
}
catch
{
// ignored
}
}
}
} }

4
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs

@ -79,7 +79,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
public async Task MarkApplicationInfoAsAddedAsync(Guid applicationId) public async Task MarkApplicationInfoAsAddedAsync(Guid applicationId)
{ {
var state = await GetStateAsync(); var state = await GetStateAsync();
state.ApplicationInfos[applicationId] = DateTimeOffset.UtcNow; state.Applications[applicationId] = DateTimeOffset.UtcNow;
await SaveAsync(); await SaveAsync();
} }
@ -117,7 +117,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
private async Task<DateTimeOffset?> GetLastApplicationInfoSendTimeAsync(Guid applicationId) private async Task<DateTimeOffset?> GetLastApplicationInfoSendTimeAsync(Guid applicationId)
{ {
var state = await GetStateAsync(); var state = await GetStateAsync();
return state.ApplicationInfos.TryGetValue(applicationId, out var date) ? date : null; return state.Applications.TryGetValue(applicationId, out var date) ? date : null;
} }
private async Task<DateTimeOffset?> GetLastDeviceInfoSendTimeAsync() private async Task<DateTimeOffset?> GetLastDeviceInfoSendTimeAsync()

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs

@ -11,7 +11,7 @@ public class TelemetryActivityStorageState
public List<ActivityData> Activities { get; set; } = new(); public List<ActivityData> Activities { get; set; } = new();
public Dictionary<Guid,DateTimeOffset> Solutions { get; set; } = new(); public Dictionary<Guid,DateTimeOffset> Solutions { get; set; } = new();
public Dictionary<Guid, DateTimeOffset> ApplicationInfos { get; set; } = new(); public Dictionary<Guid, DateTimeOffset> Applications { get; set; } = new();
} }

Loading…
Cancel
Save