From 713907e99000b7316e39661e9217cad124d0a1f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Mar 2026 20:18:28 +0000 Subject: [PATCH 1/2] Initial plan From 2470ae16e033052f00faa6aa6eca8e4f9667c6ab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Mar 2026 20:24:48 +0000 Subject: [PATCH 2/2] Fix exception handling in tracing span lifecycle methods Co-authored-by: torosent <17064840+torosent@users.noreply.github.com> --- .../com/microsoft/durabletask/DurableTaskGrpcWorker.java | 5 ++++- .../java/com/microsoft/durabletask/OrchestrationRunner.java | 6 +++--- .../microsoft/durabletask/TaskOrchestrationExecutor.java | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorker.java b/client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorker.java index 35cee5b4..b51dd239 100644 --- a/client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorker.java +++ b/client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorker.java @@ -208,7 +208,10 @@ public void startAndBlock() { } catch (Throwable e) { TracingHelper.endSpan(orchestrationSpan, e); orchestrationScope.close(); - throw e; + if (e instanceof Error) { + throw (Error) e; + } + throw new RuntimeException(e); } orchestrationScope.close(); TracingHelper.endSpan(orchestrationSpan, null); diff --git a/client/src/main/java/com/microsoft/durabletask/OrchestrationRunner.java b/client/src/main/java/com/microsoft/durabletask/OrchestrationRunner.java index 2de9dc23..0a386a0b 100644 --- a/client/src/main/java/com/microsoft/durabletask/OrchestrationRunner.java +++ b/client/src/main/java/com/microsoft/durabletask/OrchestrationRunner.java @@ -181,12 +181,12 @@ public TaskOrchestration create() { taskOrchestratorResult = taskOrchestrationExecutor.execute( orchestratorRequest.getPastEventsList(), orchestratorRequest.getNewEventsList()); - } catch (Throwable e) { + } catch (Exception e) { TracingHelper.endSpan(orchestrationSpan, e); - orchestrationScope.close(); throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e); + } finally { + orchestrationScope.close(); } - orchestrationScope.close(); TracingHelper.endSpan(orchestrationSpan, null); OrchestratorService.OrchestratorResponse response = OrchestratorService.OrchestratorResponse.newBuilder() diff --git a/client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java b/client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java index 4920c7c8..49275469 100644 --- a/client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java +++ b/client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java @@ -887,6 +887,8 @@ private void processEvent(HistoryEvent e) { this.setVersion(version); if (startedEvent.hasParentTraceContext()) { this.parentTraceContext = startedEvent.getParentTraceContext(); + } else { + this.parentTraceContext = null; } TaskOrchestrationFactory factory = TaskOrchestrationExecutor.this.orchestrationFactories.get(name); if (factory == null) {