apache/beam · error

split[ ] error from SDK

Error message

split[%v] error from SDK: %v

What it means

Error produced in B.Split when a ProcessBundleSplit request to the SDK worker comes back with a non-empty error. Splits are best-effort (used for work stealing / drainage), so this means the SDK could not split the bundle at the requested fraction and the error, keyed to the bundle instruction ID, is returned to the caller.

Solutions

  1. Treat split failures as best-effort: fall back to the unsplit bundle
  2. Check SDK logs if splits consistently fail, e.g. uncheckpointable DoFn or disallowed split points
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at sdks/go/pkg/beam/runners/prism/internal/worker/bundle.go:322 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/7df2321cb6563226. Report an issue: GitHub.

Appendix: source

Thrown at sdks/go/pkg/beam/runners/prism/internal/worker/bundle.go:322

// 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),
					},
				},
			},
		},
	})
	if resp.GetError() != "" {
		return nil, fmt.Errorf("split[%v] error from SDK: %v", b.InstID, resp.GetError())
	}
	return resp.GetProcessBundleSplit(), nil
}

View on GitHub (pinned to 12126d8942)