Skip to content

Workflow task failed with an internal Java SDK runner-closed error, masking the original workflow exception. #2810

@antmendoza

Description

@antmendoza

Is your feature request related to a problem? Please describe.

Workflow task failed with an internal Java SDK runner-closed error after repeated getVersion() calls and an unhandled workflow-code exception, masking the original exception.

Reproduction


public String execute() {
    String changeId = "change-id";

    Workflow.getVersion(changeId, Workflow.DEFAULT_VERSION, 1);

    Workflow.getVersion(changeId, Workflow.DEFAULT_VERSION, 1);

    throw new RuntimeException("Any error");
  }

Output

{
  "eventId": "4",
  "eventTime": "2026-03-16T15:11:44.248131861Z",
  "eventType": "WorkflowTaskFailed",
  "version": "4100265",
  "taskId": "312960817",
  "workflowTaskFailedEventAttributes": {
    "scheduledEventId": "2",
    "startedEventId": "3",
    "failure": {
      "message": "closed",
      "source": "JavaSDK",
      "stackTrace": "io.temporal.internal.sync.DeterministicRunnerImpl.checkNotClosed(DeterministicRunnerImpl.java:564)
io.temporal.internal.sync.DeterministicRunnerImpl.runUntilAllBlocked(DeterministicRunnerImpl.java:179)
io.temporal.internal.sync.SyncWorkflow.eventLoop(SyncWorkflow.java:194)
io.temporal.internal.replay.ReplayWorkflowExecutor.eventLoop(ReplayWorkflowExecutor.java:86)
io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$StatesMachinesCallbackImpl.eventLoop(ReplayWorkflowRunTaskHandler.java:410)
io.temporal.internal.statemachines.WorkflowStateMachines.eventLoop(WorkflowStateMachines.java:816)
io.temporal.internal.statemachines.WorkflowStateMachines.lambda$getVersion$8ac38aa7$1(WorkflowStateMachines.java:1241)
io.temporal.internal.statemachines.VersionStateMachine$InvocationStateMachine.notifyFromException(VersionStateMachine.java:223)
io.temporal.internal.statemachines.VersionStateMachine$InvocationStateMachine.notifySkippedExecuting(VersionStateMachine.java:262)
io.temporal.internal.statemachines.FixedTransitionAction.apply(FixedTransitionAction.java:26)
io.temporal.internal.statemachines.StateMachine.executeTransition(StateMachine.java:139)
io.temporal.internal.statemachines.StateMachine.handleCommand(StateMachine.java:103)
io.temporal.internal.statemachines.EntityStateMachineBase.handleCommand(EntityStateMachineBase.java:41)
io.temporal.internal.statemachines.CancellableCommand.handleCommand(CancellableCommand.java:44)
io.temporal.internal.statemachines.WorkflowStateMachines.prepareImpl(WorkflowStateMachines.java:768)
io.temporal.internal.statemachines.WorkflowStateMachines.prepareCommands(WorkflowStateMachines.java:751)
io.temporal.internal.statemachines.WorkflowStateMachines.eventLoop(WorkflowStateMachines.java:820)
io.temporal.internal.statemachines.WorkflowStateMachines.access$700(WorkflowStateMachines.java:41)
io.temporal.internal.statemachines.WorkflowStateMachines$WorkflowTaskCommandsListener.workflowTaskStarted(WorkflowStateMachines.java:1486)
io.temporal.internal.statemachines.WorkflowTaskStateMachine.handleCompleted(WorkflowTaskStateMachine.java:119)
io.temporal.internal.statemachines.WorkflowTaskStateMachine.handleStarted(WorkflowTaskStateMachine.java:109)
io.temporal.internal.statemachines.FixedTransitionAction.apply(FixedTransitionAction.java:26)
io.temporal.internal.statemachines.StateMachine.executeTransition(StateMachine.java:139)
io.temporal.internal.statemachines.StateMachine.handleHistoryEvent(StateMachine.java:83)
io.temporal.internal.statemachines.EntityStateMachineBase.handleEvent(EntityStateMachineBase.java:64)
io.temporal.internal.statemachines.EntityStateMachineInitialCommand.handleEvent(EntityStateMachineInitialCommand.java:50)
io.temporal.internal.statemachines.WorkflowStateMachines.handleSingleEvent(WorkflowStateMachines.java:496)
io.temporal.internal.statemachines.WorkflowStateMachines.handleEventsBatch(WorkflowStateMachines.java:344)
io.temporal.internal.statemachines.WorkflowStateMachines.handleEvent(WorkflowStateMachines.java:305)
io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.applyServerHistory(ReplayWorkflowRunTaskHandler.java:246)
io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.handleWorkflowTaskImpl(ReplayWorkflowRunTaskHandler.java:228)
io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.handleWorkflowTask(ReplayWorkflowRunTaskHandler.java:151)
io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTaskWithQuery(ReplayWorkflowTaskHandler.java:115)
io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTask(ReplayWorkflowTaskHandler.java:80)
io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handleTask(WorkflowWorker.java:563)
io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:402)
io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:342)
io.temporal.internal.worker.PollTaskExecutor.lambda$process$1(PollTaskExecutor.java:76)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:840)
",
      "applicationFailureInfo": {
        "type": "java.lang.Error"
      }
    },
    "identity": "69101@danis-MacBook-Pro.local"
  },
  "links": [],
  "billableActions": 0
}


Describe the solution you'd like

I would like to see the original exeception

cc @dan8f

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions