apache/beam · error
error must be the final return parameter
Error message
error must be the final return parameter
What it means
Sentinel error errErrorPrecedence from the funcx return-value state machine: once an error return is seen the machine enters the terminal rsError state, so any subsequent return parameter is invalid. If a DoFn method returns an error, it must be the final return value.
Solutions
- Move the error return to the last position of the return signature
- Remove any return values declared after the error
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at sdks/go/pkg/beam/core/funcx/fn.go:748 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/7ce8d794c6f382cc.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/go/pkg/beam/core/funcx/fn.go:748
return -1, errBundleFinalizationPrecedence
case FnRTracker:
return -1, errRTrackerPrecedence
case FnStateProvider:
return -1, errStateProviderPrecedence
case FnTimerProvider:
return -1, errTimerProviderPrecedence
case FnIter, FnReIter, FnValue, FnMultiMap:
return psInput, nil
case FnEmit:
return psOutput, nil
default:
panic(fmt.Sprintf("library error, unknown ParamKind: %v", transition))
}
}
var (
errEventTimeRetPrecedence = errors.New("beam.EventTime must be first return parameter")
errErrorPrecedence = errors.New("error must be the final return parameter")
errProcessContinuationPrecedence = errors.New("ProcessContinuation must be the final non-error return parameter")
)
type retState int
const (
rsStart retState = iota
rsEventTime
rsOutput
rsError
rsProcessContinuation
)
func nextRetState(cur retState, transition ReturnKind) (retState, error) {
switch cur {
case rsStart:
switch transition {
case RetEventTime:View on GitHub (pinned to 12126d8942)