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) {