apache/beam · error
prism runner doesn't support the following required features
Error message
prism runner doesn't support the following required features: %v
What it means
Before accepting a job, prism's Prepare step calls isSupported, which checks every pipeline requirement against the supportedRequirements allowlist. Any requirement not in the set is collected and, if any exist, the job is rejected with 'prism runner doesn't support the following required features: <sorted list>'. This is a deliberate capability gate, not a bug.
Solutions
- Read the comma-separated list in the error to see exactly which features are unsupported.
- Upgrade prism to the latest release — the supportedRequirements set grows over time.
- Rewrite the pipeline to avoid the unsupported requirement, or use a different runner that supports it.
Example fix
// before: pipeline declares unsupported requirement reqs: ["beam:requirement:unittests:v1"] // after: drop the requirement or upgrade prism so it is supported
Defensive patterns
Strategy: validation
Validate before calling
// Go: check pipeline requirements against prism's allowlist before submission
func unsupportedReqs(reqs []string, supported map[string]struct{}) []string {
var out []string
for _, r := range reqs {
if _, ok := supported[r]; !ok {
out = append(out, r)
}
}
return out
} Try / catch
if err := job.Prepare(); err != nil && strings.Contains(err.Error(), "doesn't support the following required features") {
log.Fatalf("prism capability gap — remove these requirements or upgrade prism: %v", err)
} Prevention
- Review prism's supportedRequirements set before adopting new Beam features
- Pin the latest prism release to pick up newly supported requirements
- Strip test-only requirements from production pipeline submissions
When it happens
Trigger: Submitting a pipeline whose proto sets requirements (e.g. specific capabilities like sink or state/timer features) not in prism's supportedRequirements, during Prepare.
Common situations: Pipelines using newly added Beam requirements against an older prism runner; pipelines using exotic features (e.g. self-checkpointing, certain splittable DoFn capabilities) that prism never adopted.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- couldn't connect to docker
- environment with urn unimplemented
- failed to start environment
- forceLpCoders: coder
- lpUnknownCoders: coder
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/c0a386117ebf5429.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/go/pkg/beam/runners/prism/internal/jobservices/job.go:64
urns.RequirementSplittableDoFn: {},
urns.RequirementStatefulProcessing: {},
urns.RequirementBundleFinalization: {},
urns.RequirementOnWindowExpiration: {},
urns.RequirementTimeSortedInput: {},
}
// TODO, move back to main package, and key off of executor handlers?
// Accept whole pipeline instead, and look at every PTransform too.
func isSupported(requirements []string) error {
var unsupported []string
for _, req := range requirements {
if _, ok := supportedRequirements[req]; !ok {
unsupported = append(unsupported, req)
}
}
if len(unsupported) > 0 {
sort.Strings(unsupported)
return fmt.Errorf("prism runner doesn't support the following required features: %v", strings.Join(unsupported, ","))
}
return nil
}
// Job is an interface to the job services for executing pipelines.
// It allows the executor to communicate status, messages, and metrics
// back to callers of the Job Management API.
type Job struct {
key string
jobName string
artifactEndpoint string
Pipeline *pipepb.Pipeline
options *structpb.Struct
// Management side concerns.
streamCond *sync.CondView on GitHub (pinned to 12126d8942)