apache/beam · error
progress[ ] error from SDK
Error message
progress[%v] error from SDK: %v
What it means
Error produced in B.Progress when a ProcessBundleProgress request sent to the SDK worker returns a response with a non-empty error. The runner asks the SDK for bundle progress metrics; the SDK-side failure is propagated as an error keyed to the bundle instruction ID, aborting progress reporting for that bundle.
Solutions
- Inspect SDK worker logs for the underlying failure during progress reporting
- Fix user DoFn errors that poison bundle progress reporting
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at sdks/go/pkg/beam/runners/prism/internal/worker/bundle.go:300 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/121de4cc7c54616a.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/go/pkg/beam/runners/prism/internal/worker/bundle.go:300
FinalizeBundle: &fnpb.FinalizeBundleRequest{
InstructionId: b.InstID,
},
},
})
return resp.GetFinalizeBundle(), nil
}
// Progress sends a progress request for the given bundle to the passed in worker, blocking on the response.
func (b *B) Progress(ctx context.Context, wk *W) (*fnpb.ProcessBundleProgressResponse, error) {
resp := wk.sendInstruction(ctx, &fnpb.InstructionRequest{
Request: &fnpb.InstructionRequest_ProcessBundleProgress{
ProcessBundleProgress: &fnpb.ProcessBundleProgressRequest{
InstructionId: b.InstID,
},
},
})
if resp.GetError() != "" {
return nil, fmt.Errorf("progress[%v] error from SDK: %v", b.InstID, resp.GetError())
}
return resp.GetProcessBundleProgress(), nil
}
// Split sends a split request for the given bundle to the passed in worker, blocking on the response.
func (b *B) Split(ctx context.Context, wk *W, fraction float64, allowedSplits []int64) (*fnpb.ProcessBundleSplitResponse, error) {
resp := wk.sendInstruction(ctx, &fnpb.InstructionRequest{
Request: &fnpb.InstructionRequest_ProcessBundleSplit{
ProcessBundleSplit: &fnpb.ProcessBundleSplitRequest{
InstructionId: b.InstID,
DesiredSplits: map[string]*fnpb.ProcessBundleSplitRequest_DesiredSplit{
b.InputTransformID: {
FractionOfRemainder: fraction,
AllowedSplitPoints: allowedSplits,
EstimatedInputElements: int64(b.EstimatedInputElements),
},
},
},View on GitHub (pinned to 12126d8942)