{"record":{"id":"35ee493d3c06588e","repo":"apache/beam","slug":"detected-one-of-the-following-experiments-disable-runner-v2","errorCode":null,"errorMessage":"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+","messagePattern":"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\\+","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdks/go/pkg/beam/runners/dataflow/dataflow.go","lineNumber":354,"sourceCode":"\t// Ensure that we enable the same set of experiments across all SDKs\n\t// for Dataflow Portable Runner.\n\tvar fnApiSet, v2set, uwSet, portaSubmission, seSet, wsSet bool\n\tfor _, e := range experiments {\n\t\tif strings.Contains(e, \"beam_fn_api\") {\n\t\t\tfnApiSet = true\n\t\t}\n\t\tif strings.Contains(e, \"use_runner_v2\") {\n\t\t\tv2set = true\n\t\t}\n\t\tif strings.Contains(e, \"use_unified_worker\") {\n\t\t\tuwSet = true\n\t\t}\n\t\tif strings.Contains(e, \"use_portable_job_submission\") {\n\t\t\tportaSubmission = true\n\t\t}\n\t\t// enable_portable_runner is not documented and hence wont be set by default. This will be fixed in later versions.\n\t\tif 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\") {\n\t\t\treturn 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+\")\n\t\t}\n\t}\n\t// Enable default experiments.\n\tif !fnApiSet {\n\t\texperiments = append(experiments, \"beam_fn_api\")\n\t}\n\tif !v2set {\n\t\texperiments = append(experiments, \"use_runner_v2\")\n\t}\n\tif !uwSet {\n\t\texperiments = append(experiments, \"use_unified_worker\")\n\t}\n\tif !portaSubmission {\n\t\texperiments = append(experiments, \"use_portable_job_submission\")\n\t}\n\n\t// Ensure that streaming specific experiments are set for streaming pipelines\n\t// since Dataflow Portable Runner only supports using streaming engine.","sourceCodeStart":336,"sourceCodeEnd":372,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/go/pkg/beam/runners/dataflow/dataflow.go#L336-L372","documentation":"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.","triggerScenarios":"Submitting a Dataflow job with --experiments containing one of the disallowlist entries (commonly copied from pre-2.45 launch templates or stored job configs).","commonSituations":"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.","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"],"exampleFix":"// before\n--experiments=disable_runner_v2\n// after\n# remove the experiment entirely (Runner V2 is default and required)\n","handlingStrategy":"validation","validationCode":"banned := []string{\"disable_runner_v2\", \"disable_runner_v2_until_2023\", \"disable_prime_runner_v2\", \"disable_portable_runner\", \"enable_streaming_java_runner\"}\nfor _, e := range experiments {\n    for _, b := range banned {\n        if strings.Contains(e, b) {\n            return fmt.Errorf(\"unsupported experiment %q on Beam >= 2.45\", e)\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["go","dataflow","deprecated","experiments"],"backgroundTag":"deprecated-api-usage","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}