temporalio/temporal · error
missing RespondActivityTaskCompletedRequest return
Error message
missing RespondActivityTaskCompletedRequest return
What it means
respondTaskCompleted (activity-task variant) requires a non-nil RespondActivityTaskCompletedRequest. Like the other taskpoller guards, a nil reply means the test never built the activity completion, and the poller fails fast with this message instead of nil-dereferencing.
Source
Thrown at common/testing/taskpoller/taskpoller.go:625
}
resp, err := p.respondTaskCompleted(ctx, opts, task, reply)
if err != nil {
return nil, err
}
return resp, nil
}
func (p *activityTaskPoller) respondTaskCompleted(
ctx context.Context,
opts *options,
task *workflowservice.PollActivityTaskQueueResponse,
reply *workflowservice.RespondActivityTaskCompletedRequest,
) (*workflowservice.RespondActivityTaskCompletedResponse, error) {
p.t.Helper()
if reply == nil {
return nil, errors.New("missing RespondActivityTaskCompletedRequest return")
}
if reply.Namespace == "" {
reply.Namespace = p.namespace
}
if len(reply.TaskToken) == 0 {
reply.TaskToken = task.TaskToken
}
if reply.Identity == "" {
reply.Identity = opts.tv.WorkerIdentity()
}
return p.client.RespondActivityTaskCompleted(ctx, reply)
}
func (p *activityTaskPoller) respondTaskFailed(
ctx context.Context,
opts *options,
task *workflowservice.PollActivityTaskQueueResponse,View on GitHub (pinned to bde624efd1)
Solutions
- Return &workflowservice.RespondActivityTaskCompletedRequest{} — Namespace and TaskToken are filled in automatically
- Use reply.Failure (RespondActivityTaskFailedRequest-style fields per API) to signal activity failure rather than a nil request
- Check the handler builds the correct request type for activity vs workflow tasks
Example fix
// before
return nil, nil
// after
return &workflowservice.RespondActivityTaskCompletedRequest{
Result: payloads.EncodeString("done"),
}, nil Defensive patterns
Strategy: validation
Validate before calling
if reply == nil {
reply = &workflowservice.RespondActivityTaskCompletedRequest{}
} Try / catch
resp, err := poller.HandleTask(ctx, opts, activityTask, reply) require.ErrorContains(t, err, "missing RespondActivityTaskCompletedRequest")
Prevention
- Always return an initialized activity completion request
- Use failure fields to report activity errors
- Cover activity handling branches in tests
When it happens
Trigger: HandleTask for an activity task where the respond callback returns nil for *workflowservice.RespondActivityTaskCompletedRequest.
Common situations: Activity completion omitted in the test's switch on activity type; nil, nil early returns; tests copied from workflow-task handlers that build a different request type.
Related errors
- missing RespondWorkflowTaskCompletedRequest return
- history is nil
- missing PollWorkflowTaskQueueResponse
- missing Legacy Query in PollWorkflowTaskQueueResponse
- missing RespondQueryTaskCompletedRequest
AI-assisted analysis of temporalio/temporal@bde624efd1 (2026-09-01).
Data as JSON: /api/errors/f0e136e7767ae1a7.
Report an issue: GitHub.