apache/beam · error
detected one of the following experiments…
Error message
detected one of the following experiments: disable_runner_v2 | disable_runner_v2_until_2023 | disable_prime_runner_v2 | disable_portable_runner | enable_streaming_java_runner. Disabling Dataflow Portable Runner is no longer supported as of Beam version 2.45.0+
What it means
As of Beam 2.45.0+, the Dataflow runner no longer supports disabling the portable (Runner V2) pipeline. getJobOptions scans the configured experiments and fails with this error if any of disable_runner_v2, disable_runner_v2_until_2023, disable_prime_runner_v2, disable_portable_runner, or enable_streaming_java_runner is present.
Solutions
- Remove the disallowed experiment flags (--experiments=...) from the job configuration
- Enable Runner V2 instead (it is the default; ensure no disable_* experiments leak in via jobopts.GetExperiments)
- Pin Beam <2.45 only as a short-term rollback while migrating configs
Example fix
// before --experiments=disable_runner_v2 // after # remove the experiment entirely (Runner V2 is default and required)
Defensive patterns
Strategy: validation
Validate before calling
banned := []string{"disable_runner_v2", "disable_runner_v2_until_2023", "disable_prime_runner_v2", "disable_portable_runner", "enable_streaming_java_runner"}
for _, e := range experiments {
for _, b := range banned {
if strings.Contains(e, b) {
return fmt.Errorf("unsupported experiment %q on Beam >= 2.45", e)
}
}
} Prevention
- Purge legacy disable_* experiments when upgrading the Beam SDK
- Scan Terraform/scripts for the banned experiment strings in CI
- Rely on Runner V2 defaults instead of disabling it
When it happens
Trigger: Submitting a Dataflow job with --experiments containing one of the disallowlist entries (commonly copied from pre-2.45 launch templates or stored job configs).
Common situations: Upgrading the Beam SDK from <2.45 to a newer version while old experiment flags persist in Terraform/CLI templates; enable_streaming_java_runner set from older streaming guidance.
Understand the failure class
Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.
Related errors
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/35ee493d3c06588e.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/go/pkg/beam/runners/dataflow/dataflow.go:354
// Ensure that we enable the same set of experiments across all SDKs
// for Dataflow Portable Runner.
var fnApiSet, v2set, uwSet, portaSubmission, seSet, wsSet bool
for _, e := range experiments {
if strings.Contains(e, "beam_fn_api") {
fnApiSet = true
}
if strings.Contains(e, "use_runner_v2") {
v2set = true
}
if strings.Contains(e, "use_unified_worker") {
uwSet = true
}
if strings.Contains(e, "use_portable_job_submission") {
portaSubmission = true
}
// enable_portable_runner is not documented and hence wont be set by default. This will be fixed in later versions.
if strings.Contains(e, "disable_runner_v2") || strings.Contains(e, "disable_runner_v2_until_2023") || strings.Contains(e, "disable_prime_runner_v2") || strings.Contains(e, "disable_portable_runner") || strings.Contains(e, "enable_streaming_java_runner") {
return nil, errors.New("detected one of the following experiments: disable_runner_v2 | disable_runner_v2_until_2023 | disable_prime_runner_v2 | disable_portable_runner | enable_streaming_java_runner. Disabling Dataflow Portable Runner is no longer supported as of Beam version 2.45.0+")
}
}
// Enable default experiments.
if !fnApiSet {
experiments = append(experiments, "beam_fn_api")
}
if !v2set {
experiments = append(experiments, "use_runner_v2")
}
if !uwSet {
experiments = append(experiments, "use_unified_worker")
}
if !portaSubmission {
experiments = append(experiments, "use_portable_job_submission")
}
// Ensure that streaming specific experiments are set for streaming pipelines
// since Dataflow Portable Runner only supports using streaming engine.View on GitHub (pinned to 12126d8942)