From 458181c5ceb2ffdc8e1c277610414bda4074cf73 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 5 Oct 2024 13:39:58 +0200 Subject: [PATCH] Refactor activity events with status tags helper method Replaced inline tag creation with a helper method to streamline code and ensure consistency in status tags for activity events. This change also includes a minor comment for clarity on null activity handling. --- ...metryTracingWorkflowExecutionMiddleware.cs | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/modules/Elsa.OpenTelemetry/Middleware/OpenTelemetryTracingWorkflowExecutionMiddleware.cs b/src/modules/Elsa.OpenTelemetry/Middleware/OpenTelemetryTracingWorkflowExecutionMiddleware.cs index e113c77ec..1fd7f8ad7 100644 --- a/src/modules/Elsa.OpenTelemetry/Middleware/OpenTelemetryTracingWorkflowExecutionMiddleware.cs +++ b/src/modules/Elsa.OpenTelemetry/Middleware/OpenTelemetryTracingWorkflowExecutionMiddleware.cs @@ -27,9 +27,9 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD { var workflowInstanceId = context.Id; var workflow = context.Workflow; - using var activity = ElsaOpenTelemetry.ActivitySource.StartActivity($"WorkflowExecution", ActivityKind.Internal, Activity.Current?.Context ?? default); + using var activity = ElsaOpenTelemetry.ActivitySource.StartActivity("WorkflowExecution", ActivityKind.Internal, Activity.Current?.Context ?? default); - if (activity == null) + if (activity == null) // No listener is registered. { await Next(context); return; @@ -42,26 +42,18 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD activity.SetTag("workflowDefinition.definitionId", workflow.Identity.DefinitionId); activity.SetTag("workflowDefinition.version", workflow.Identity.Version); activity.SetTag("workflowDefinition.name", workflow.WorkflowMetadata.Name); - activity.AddEvent(new ActivityEvent("Executing", tags: new ActivityTagsCollection(new Dictionary - { - ["workflowInstance.status"] = context.Status.ToString(), - ["workflowInstance.subStatus"] = context.SubStatus.ToString() - }))); + activity.AddEvent(new ActivityEvent("Executing", tags: CreateStatusTags(context))); await Next(context); if (context.SubStatus == WorkflowSubStatus.Faulted) { - activity.AddEvent(new ActivityEvent("Faulted")); + activity.AddEvent(new ActivityEvent("Faulted", tags: CreateStatusTags(context))); activity.SetStatus(ActivityStatusCode.Error); activity.SetTag("error", true); } else { - activity.AddEvent(new ActivityEvent("Executed", tags: new ActivityTagsCollection(new Dictionary - { - ["workflowInstance.status"] = context.Status.ToString(), - ["workflowInstance.subStatus"] = context.SubStatus.ToString() - }))); + activity.AddEvent(new ActivityEvent("Executed", tags: CreateStatusTags(context))); } if(context.Incidents.Any()) @@ -79,6 +71,15 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD activity.SetTag("workflowExecution.durationMs", (systemClock.UtcNow - activity.StartTimeUtc).TotalMilliseconds); } + + private ActivityTagsCollection CreateStatusTags(WorkflowExecutionContext context) + { + return new ActivityTagsCollection(new Dictionary + { + ["workflowInstance.status"] = context.Status.ToString(), + ["workflowInstance.subStatus"] = context.SubStatus.ToString() + }); + } } ///