{"record":{"id":"1e0dd9e751b9d1b5","repo":"apache/beam","slug":"could-not-override-the-transforms-with-urns","errorCode":null,"errorMessage":"Could not override the transforms with URNs ","messagePattern":"Could not override the transforms with URNs ","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PipelineTranslation.java","lineNumber":122,"sourceCode":"        RunnerApi.Pipeline.newBuilder()\n            .setComponents(components.toComponents())\n            .addAllRequirements(components.requirements())\n            .addAllRootTransformIds(rootIds)\n            .build();\n    if (!useDeprecatedViewTransforms) {\n      // TODO(JIRA-5649): Don't even emit these transforms in the generated protos.\n      res = elideDeprecatedViews(res);\n    }\n\n    List<String> urnsToOverride =\n        pipeline.getOptions().as(ExternalTranslationOptions.class).getTransformsToOverride();\n    if (urnsToOverride.size() > 0 && upgradeTransforms) {\n      try (TransformUpgrader upgrader = TransformUpgrader.of()) {\n        res =\n            upgrader.upgradeTransformsViaTransformService(\n                res, urnsToOverride, pipeline.getOptions());\n      } catch (Exception e) {\n        throw new RuntimeException(\n            \"Could not override the transforms with URNs \" + urnsToOverride, e);\n      }\n    }\n\n    // Validate that translation didn't produce an invalid pipeline.\n    PipelineValidator.validate(res);\n    return res;\n  }\n\n  private static RunnerApi.Pipeline elideDeprecatedViews(RunnerApi.Pipeline pipeline) {\n    // Record data on CreateView operations.\n    Set<String> viewTransforms = new HashSet<>();\n    Map<String, String> viewOutputsToInputs = new HashMap<>();\n    pipeline\n        .getComponents()\n        .getTransformsMap()\n        .forEach(\n            (transformId, transform) -> {","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PipelineTranslation.java#L104-L140","documentation":"During PipelineTranslation.toProto(), when transform URNs are marked for override and upgradeTransforms is enabled, Beam delegates to TransformUpgrader.upgradeTransformsViaTransformService() to replace legacy transforms via a remote transform service. If that service call (or any part of it) throws, the exception is wrapped in a RuntimeException: 'Could not override the transforms with URNs ...'. It means the pipeline graph upgrade step failed before validation.","triggerScenarios":"Calling PipelineTranslation.toProto(pipeline, sdkComponents, true, urnsToOverride) with a non-empty URN override list where TransformUpgrader.upgradeTransformsViaTransformService fails — transform service unreachable, rejects the transforms, times out, or returns an invalid result.","commonSituations":"Pipelines containing legacy transforms (e.g. old Read, Combine) that require upgrading, environments where the transform service endpoint is misconfigured or firewalled, network outages during job submission, or upgradeable URNs not supported by the configured transform service.","solutions":["Check the wrapped cause for the underlying failure (connectivity, unsupported URN, service error).","Verify the transform service endpoint/configuration (options/runner transform service settings) is reachable and correct.","Re-run with upgradeTransforms=false (or an empty urnsToOverride) so the pipeline is translated without the remote upgrade step, if the runner supports the legacy transforms.","Update the legacy transforms in pipeline code (replace deprecated PTransforms) so they no longer need overriding."],"exampleFix":"// before\nres = upgrader.upgradeTransformsViaTransformService(res, urnsToOverride, pipeline.getOptions());\n// after — verify service reachability before relying on upgrades, or skip upgrade\nif (urnsToOverride.size() > 0 && upgradeTransforms && transformServiceReachable(pipeline.getOptions())) {\n  res = upgrader.upgradeTransformsViaTransformService(res, urnsToOverride, pipeline.getOptions());\n}","handlingStrategy":"fallback","validationCode":"if (!urnsToOverride.isEmpty()) { verifyTransformServiceReachable(pipeline.getOptions()); }","typeGuard":null,"tryCatchPattern":"try { res = PipelineTranslation.toProto(pipeline, components, true, urnsToOverride); } catch (RuntimeException e) { LOG.warn(\"Transform upgrade failed\", e); res = PipelineTranslation.toProto(pipeline, components, false, Collections.emptyList()); }","preventionTips":["Verify transform service connectivity before submission","Replace legacy transforms in code so no upgrade is needed","Keep an upgrade-free translation path as fallback"],"tags":["java","beam","pipeline-translation","transform-service","upgrade"],"backgroundTag":"api-request-failed","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}