Browse Source

Ensure telemetry tasks complete on process exit

Registers a handler for AppDomain.ProcessExit to wait up to 10 seconds for the telemetry task to finish, improving reliability of telemetry data submission during application shutdown.
pull/24377/head
SALİH ÖZKARA 8 months ago
parent
commit
f27723ccba
  1. 14
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryService.cs

14
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryService.cs

@ -67,7 +67,7 @@ public class TelemetryService : ITelemetryService, IScopedDependency
private Task AddActivityAsync(ActivityContext context)
{
_ = Task.Run(async () =>
var telemetryTask = Task.Run(async () =>
{
using var scope = _serviceScopeFactory.CreateScope();
@ -81,6 +81,18 @@ public class TelemetryService : ITelemetryService, IScopedDependency
telemetryActivitySender);
});
AppDomain.CurrentDomain.ProcessExit += (_, _) =>
{
try
{
telemetryTask.Wait(TimeSpan.FromSeconds(10));
}
catch
{
// ignored
}
};
return Task.CompletedTask;
}

Loading…
Cancel
Save