From f27723ccba42313064afc1b691334cb166880652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SAL=C4=B0H=20=C3=96ZKARA?= Date: Mon, 8 Dec 2025 15:46:07 +0300 Subject: [PATCH] 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. --- .../Abp/Internal/Telemetry/TelemetryService.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryService.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryService.cs index 2f684acd29..7c54bbd48f 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryService.cs +++ b/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; }