{"record":{"id":"91f404ed9da8b569","repo":"temporalio/temporal","slug":"nexus-operation-processor-failed","errorCode":null,"errorMessage":"nexus operation processor failed","messagePattern":"nexus operation processor failed","errorType":"http","errorClass":null,"httpStatus":500,"severity":"error","filePath":"components/nexusoperations/executors.go","lineNumber":52,"sourceCode":"\t\"go.temporal.io/server/common/resource\"\n\t\"go.temporal.io/server/service/history/consts\"\n\t\"go.temporal.io/server/service/history/hsm\"\n\tqueueserrors \"go.temporal.io/server/service/history/queues/errors\"\n\t\"go.uber.org/fx\"\n)\n\ntype operationTimeoutBelowMinError struct {\n\ttimeoutType enumspb.TimeoutType\n}\n\nfunc (o *operationTimeoutBelowMinError) Error() string {\n\treturn fmt.Sprintf(\"not enough time to execute another request before %s timeout\", o.timeoutType.String())\n}\n\nvar ErrInvalidOperationToken = errors.New(\"invalid operation token\")\nvar ErrResponseBodyTooLarge = errors.New(\"http: response body too large\")\nvar errRequestTimedOut = errors.New(\"request timed out\")\nvar errOpProcessorFailed = errors.New(\"nexus operation processor failed\")\n\nconst maxDuration = time.Duration(1<<63 - 1)\n\n// ClientProvider provides a nexus client for a given endpoint.\ntype ClientProvider func(ctx context.Context, namespaceID string, entry *persistencespb.NexusEndpointEntry, service string) (*nexusrpc.HTTPClient, error)\n\ntype TaskExecutorOptions struct {\n\tfx.In\n\n\tConfig                 *Config\n\tNamespaceRegistry      namespace.Registry\n\tMetricsHandler         metrics.Handler\n\tLogger                 log.Logger\n\tCallbackTokenGenerator *commonnexus.CallbackTokenGenerator\n\tClientProvider         ClientProvider\n\tEndpointRegistry       commonnexus.EndpointRegistry\n\tHTTPTraceProvider      commonnexus.HTTPClientTraceProvider\n\tHistoryClient          resource.HistoryClient","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/temporalio/temporal/blob/bde624efd13fbd3843654058db6d9c716166318b/components/nexusoperations/executors.go#L34-L70","documentation":"errOpProcessorFailed is a sentinel error returned by the nexusoperations component's Start/Cancel execution paths when the underlying Nexus operation processor (the async task machinery that drives the operation state machine) fails to run. It indicates an internal processing failure rather than a problem with the caller's request or the remote Nexus endpoint. It is also used by outcome-tagging helpers (startCallOutcomeTag/cancelCallOutcomeTag) to classify metrics for processor failures.","triggerScenarios":"Calling Start or Cancel on a nexusoperations executor when the operation processor returns an error, or when isDestinationDown-adjacent processing hits a processor failure while preparing an outbound Nexus call.","commonSituations":"Internal state-machine task execution bugs, corrupt or unexpected persisted operation state, failures initializing the Nexus client via the ClientProvider, or version-skew between history nodes running different processor implementations.","solutions":["Check history service logs around the tagged operation outcome for the underlying processor error; the sentinel wraps/masks the real cause","Verify the Nexus endpoint registration and that ClientProvider can construct a client for the namespace/service","Confirm all history service nodes run the same Temporal server version to avoid state-machine processor incompatibilities","Retry the workflow operation; if persistent, inspect the operation HSM state in the workflow and file an issue with the full logs"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// pseudo: on Start/Cancel failure tagged as processor failure, retry with backoff; alert if persistent\nerr := exec.Start(ctx, req)\nif errors.Is(err, errOpProcessorFailed) { scheduleRetryWithBackoff() }","preventionTips":["Keep all Temporal server nodes on the same version","Monitor nexus operation outcome metrics for processor-failure tags","Validate Nexus endpoint registrations and client providers at deploy time"],"tags":["nexus","operations","internal-processor","temporal-server"],"backgroundTag":"nexus-operation-processor-failed","analyzedSha":"bde624efd13fbd3843654058db6d9c716166318b","analyzedAt":"2026-09-01T07:18:39.080Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}