diff --git a/src/Temporalio.Extensions.OpenTelemetry/TracingInterceptor.cs b/src/Temporalio.Extensions.OpenTelemetry/TracingInterceptor.cs index 277c70ad..a0e698c1 100644 --- a/src/Temporalio.Extensions.OpenTelemetry/TracingInterceptor.cs +++ b/src/Temporalio.Extensions.OpenTelemetry/TracingInterceptor.cs @@ -169,6 +169,12 @@ protected virtual IDictionary HeadersFromContext( return ret; } + private static void RecordExceptionWithStatus(Activity? activity, Exception exception) + { + activity?.SetStatus(ActivityStatusCode.Error, exception.Message); + activity?.RecordException(exception); + } + private sealed class ClientOutbound : ClientOutboundInterceptor { private readonly TracingInterceptor root; @@ -370,7 +376,7 @@ public override async Task HandleSignalAsync(HandleSignalInput input) } catch (Exception e) { - activity.Activity?.RecordException(e); + RecordExceptionWithStatus(activity.Activity, e); throw; } } @@ -406,7 +412,7 @@ public override void ValidateUpdate(HandleUpdateInput input) } catch (Exception e) { - activity.Activity?.RecordException(e); + RecordExceptionWithStatus(activity.Activity, e); throw; } } @@ -447,7 +453,7 @@ public override void ValidateUpdate(HandleUpdateInput input) "CompleteUpdate" : "WorkflowTaskFailure"; WorkflowsSource.TrackWorkflowDiagnosticActivity( name: $"{namePrefix}:{input.Update}", - updateActivity: act => act.RecordException(e)). + updateActivity: act => RecordExceptionWithStatus(act, e)). Dispose(); throw; } @@ -474,7 +480,7 @@ private static void ApplyWorkflowException(Exception e) "CompleteWorkflow" : "WorkflowTaskFailure"; WorkflowsSource.TrackWorkflowDiagnosticActivity( name: $"{namePrefix}:{Workflow.Info.WorkflowType}", - updateActivity: act => act.RecordException(e)). + updateActivity: act => RecordExceptionWithStatus(act, e)). Dispose(); } @@ -593,7 +599,7 @@ internal ActivityInbound(TracingInterceptor root, ActivityInboundInterceptor nex } catch (Exception e) { - activity.RecordException(e); + RecordExceptionWithStatus(activity, e); throw; } }