Skip to content

Commit bf26249

Browse files
authored
Add exceptions to OTel client spans and minor 1.24 server test fixes (#272)
1 parent af5e004 commit bf26249

File tree

3 files changed

+48
-16
lines changed

3 files changed

+48
-16
lines changed

src/Temporalio.Extensions.OpenTelemetry/TracingInterceptor.cs

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,15 @@ public override async Task<WorkflowHandle<TWorkflow, TResult>> StartWorkflowAsyn
196196
{
197197
input = input with { Headers = headers };
198198
}
199-
return await base.StartWorkflowAsync<TWorkflow, TResult>(input).ConfigureAwait(false);
199+
try
200+
{
201+
return await base.StartWorkflowAsync<TWorkflow, TResult>(input).ConfigureAwait(false);
202+
}
203+
catch (Exception e)
204+
{
205+
RecordExceptionWithStatus(activity, e);
206+
throw;
207+
}
200208
}
201209
}
202210

@@ -212,7 +220,15 @@ public override async Task SignalWorkflowAsync(SignalWorkflowInput input)
212220
{
213221
input = input with { Headers = headers };
214222
}
215-
await base.SignalWorkflowAsync(input).ConfigureAwait(false);
223+
try
224+
{
225+
await base.SignalWorkflowAsync(input).ConfigureAwait(false);
226+
}
227+
catch (Exception e)
228+
{
229+
RecordExceptionWithStatus(activity, e);
230+
throw;
231+
}
216232
}
217233
}
218234

@@ -228,7 +244,15 @@ public override async Task<TResult> QueryWorkflowAsync<TResult>(QueryWorkflowInp
228244
{
229245
input = input with { Headers = headers };
230246
}
231-
return await base.QueryWorkflowAsync<TResult>(input).ConfigureAwait(false);
247+
try
248+
{
249+
return await base.QueryWorkflowAsync<TResult>(input).ConfigureAwait(false);
250+
}
251+
catch (Exception e)
252+
{
253+
RecordExceptionWithStatus(activity, e);
254+
throw;
255+
}
232256
}
233257
}
234258

@@ -245,7 +269,15 @@ public override async Task<WorkflowUpdateHandle<TResult>> StartWorkflowUpdateAsy
245269
{
246270
input = input with { Headers = headers };
247271
}
248-
return await base.StartWorkflowUpdateAsync<TResult>(input).ConfigureAwait(false);
272+
try
273+
{
274+
return await base.StartWorkflowUpdateAsync<TResult>(input).ConfigureAwait(false);
275+
}
276+
catch (Exception e)
277+
{
278+
RecordExceptionWithStatus(activity, e);
279+
throw;
280+
}
249281
}
250282
}
251283

tests/Temporalio.Tests/Client/TemporalClientScheduleTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,9 @@ await handle.BackfillAsync(new List<ScheduleBackfill>
323323
EndAt: now,
324324
Overlap: ScheduleOverlapPolicy.AllowAll),
325325
});
326-
Assert.Equal(6, (await handle.DescribeAsync()).Info.NumActions);
326+
// Servers < 1.24 this is 6, servers >= 1.24 this is 7
327+
var numActions = (await handle.DescribeAsync()).Info.NumActions;
328+
Assert.True(numActions == 6 || numActions == 7, $"Invalid num actions: {numActions}");
327329

328330
// Delete when done
329331
await TestUtils.DeleteAllSchedulesAsync(Client);

tests/Temporalio.Tests/Extensions/OpenTelemetry/TracingInterceptorTests.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -393,15 +393,6 @@ await WorkflowWorkerTests.AssertTaskFailureContainsEventuallyAsync(
393393
"RunWorkflow:TracingWorkflow",
394394
Parent: "StartWorkflow:TracingWorkflow",
395395
Tags: workflowRunTags),
396-
// Validate update
397-
new(
398-
"ValidateUpdate:UpdateTaskFailure",
399-
Parent: "StartWorkflow:TracingWorkflow",
400-
Tags: workflowRunTags,
401-
// Ignore link because client-side send update not captured since it didn't complete
402-
// TODO(cretz): This may need to change when server bug that doesn't finish update
403-
// poll on workflow terminate is complete.
404-
IgnoreLinks: true),
405396
// Handle update
406397
new(
407398
"HandleUpdate:UpdateTaskFailure",
@@ -413,7 +404,13 @@ await WorkflowWorkerTests.AssertTaskFailureContainsEventuallyAsync(
413404
"WorkflowTaskFailure:UpdateTaskFailure",
414405
Parent: "HandleUpdate:UpdateTaskFailure",
415406
Tags: workflowRunTags,
416-
Events: new[] { ActivityAssertion.ExceptionEvent("some message") }));
407+
Events: new[] { ActivityAssertion.ExceptionEvent("some message") }),
408+
// On 1.24+, updates properly fail on client when workflow terminated
409+
new(
410+
"UpdateWorkflow:UpdateTaskFailure",
411+
Parent: null,
412+
Tags: workflowTags,
413+
Events: new[] { ActivityAssertion.ExceptionEvent("workflow execution already completed") }));
417414
}
418415

419416
[Fact]
@@ -509,7 +506,8 @@ public async Task TracingInterceptor_ProperFailures_HaveProperSpans()
509506
new(
510507
"QueryWorkflow:QueryFailure",
511508
Parent: null,
512-
Tags: workflowTags),
509+
Tags: workflowTags,
510+
Events: new[] { ActivityAssertion.ExceptionEvent("fail3") }),
513511
// Handle query
514512
new(
515513
"HandleQuery:QueryFailure",

0 commit comments

Comments
 (0)