Skip to content

Commit 7b231ad

Browse files
committed
Refactor TelemetryApplicationInfoEnricher to improve activity enrichment logic by adding null checks and extracting project ID handling into separate methods for better readability and maintainability.
1 parent e600ee3 commit 7b231ad

File tree

1 file changed

+53
-14
lines changed

1 file changed

+53
-14
lines changed

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

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
1515
private readonly IEnumerable<ITelemetryApplicationInfoContributor> _telemetryApplicationInfoContributors;
1616
private readonly ITelemetryActivityStorage _telemetryActivityStorage;
1717

18-
public TelemetryApplicationInfoEnricher(ITelemetrySessionTypeProvider telemetrySessionTypeProvider,
19-
IEnumerable<ITelemetryApplicationInfoContributor> telemetryApplicationInfoContributors, ITelemetryActivityStorage telemetryActivityStorage)
18+
public TelemetryApplicationInfoEnricher(
19+
ITelemetrySessionTypeProvider telemetrySessionTypeProvider,
20+
IEnumerable<ITelemetryApplicationInfoContributor> telemetryApplicationInfoContributors,
21+
ITelemetryActivityStorage telemetryActivityStorage)
2022
{
2123
_telemetrySessionTypeProvider = telemetrySessionTypeProvider;
2224
_telemetryApplicationInfoContributors = telemetryApplicationInfoContributors;
@@ -25,27 +27,64 @@ public TelemetryApplicationInfoEnricher(ITelemetrySessionTypeProvider telemetryS
2527

2628
public async Task EnrichAsync(ActivityData activity)
2729
{
28-
if (activity.ContainsKey(ActivityPropertyNames.Assembly) && _telemetrySessionTypeProvider.SessionType == SessionType.ApplicationRuntime)
30+
if (!ShouldEnrichActivity(activity))
2931
{
30-
if (!activity.TryGetValue(ActivityPropertyNames.ProjectId, out var projectIdObj) ||
31-
projectIdObj is not string projectIdStr ||
32-
!Guid.TryParse(projectIdStr, out var projectId))
32+
return;
33+
}
34+
35+
var projectId = ExtractProjectId(activity);
36+
if (projectId == null)
37+
{
38+
return;
39+
}
40+
41+
try
42+
{
43+
if (!await _telemetryActivityStorage.ShouldAddApplicationInfoAsync(projectId.Value))
3344
{
3445
return;
3546
}
3647

37-
if (!await _telemetryActivityStorage.ShouldAddApplicationInfoAsync(projectId))
48+
await ContributeApplicationInfoAsync(activity);
49+
activity.Remove(ActivityPropertyNames.Assembly);
50+
await _telemetryActivityStorage.MarkApplicationInfoAsAddedAsync(projectId.Value);
51+
}
52+
catch
53+
{
54+
// ignored
55+
}
56+
}
57+
58+
private bool ShouldEnrichActivity(ActivityData activity)
59+
{
60+
return activity.ContainsKey(ActivityPropertyNames.Assembly) &&
61+
_telemetrySessionTypeProvider.SessionType == SessionType.ApplicationRuntime;
62+
}
63+
64+
private static Guid? ExtractProjectId(ActivityData activity)
65+
{
66+
if (!activity.TryGetValue(ActivityPropertyNames.ProjectId, out var projectIdObj) ||
67+
projectIdObj is not string projectIdStr ||
68+
!Guid.TryParse(projectIdStr, out var projectId))
69+
{
70+
return null;
71+
}
72+
73+
return projectId;
74+
}
75+
76+
private async Task ContributeApplicationInfoAsync(ActivityData activity)
77+
{
78+
foreach (var contributor in _telemetryApplicationInfoContributors)
79+
{
80+
try
3881
{
39-
return;
82+
await contributor.ContributeAsync(activity);
4083
}
41-
42-
foreach (var contributor in _telemetryApplicationInfoContributors)
84+
catch
4385
{
44-
await contributor.ContributeAsync(activity);
86+
// ignored
4587
}
46-
47-
activity.Remove(ActivityPropertyNames.Assembly);
48-
await _telemetryActivityStorage.MarkApplicationInfoAsAddedAsync(projectId);
4988
}
5089
}
5190
}

0 commit comments

Comments
 (0)