{"record":{"id":"4405690199ae631e","repo":"apache/beam","slug":"transform-with-urn-s-could-not-be-translated","errorCode":null,"errorMessage":"Transform with URN %s could not be translated","messagePattern":"Transform with URN (.+?) could not be translated","errorType":"exception","errorClass":"java.lang.RuntimeException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformMatchers.java","lineNumber":274,"sourceCode":"      }\n    };\n  }\n\n  /**\n   * A {@link PTransformMatcher} that matches a {@link ParDo} by URN if it has a splittable {@link\n   * DoFn}.\n   */\n  public static PTransformMatcher splittableParDo() {\n    return new PTransformMatcher() {\n      @Override\n      public boolean matches(AppliedPTransform<?, ?, ?> application) {\n        if (PTransformTranslation.PAR_DO_TRANSFORM_URN.equals(\n            PTransformTranslation.urnForTransformOrNull(application.getTransform()))) {\n\n          try {\n            return ParDoTranslation.isSplittable(application);\n          } catch (IOException e) {\n            throw new RuntimeException(\n                String.format(\n                    \"Transform with URN %s could not be translated\",\n                    PTransformTranslation.PAR_DO_TRANSFORM_URN),\n                e);\n          }\n        }\n        return false;\n      }\n\n      @Override\n      public String toString() {\n        return MoreObjects.toStringHelper(\"SplittableParDoMultiMatcher\").toString();\n      }\n    };\n  }\n\n  /**\n   * A {@link PTransformMatcher} that matches a {@link ParDo.SingleOutput} containing a {@link DoFn}","sourceCodeStart":256,"sourceCodeEnd":292,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformMatchers.java#L256-L292","documentation":"The splittable-ParDo matcher in PTransformMatchers checks whether an applied ParDo transform is splittable by parsing its payload. If ParDoTranslation.isSplittable throws IOException during payload parsing, it is wrapped in this RuntimeException with the PAR_DO_TRANSFORM_URN, indicating the ParDo payload failed to parse.","triggerScenarios":"A PTransformMatcher (splittable ParDo matching) runs over an AppliedPTransform whose ParDo payload bytes are malformed or incompatible — typically during pipeline optimization/translation when the proto was produced by a different Beam version.","commonSituations":"Version-skewed pipeline protos between stages; corrupt serialization of ParDo payloads; custom runners feeding unusual transform payloads into matchers.","solutions":["Check that all pipeline proto producers/consumers use compatible Beam versions.","Inspect the ParDo payload bytes for the failing transform and validate they decode as RunnerApi.ParDoPayload.","When editing this code, preserve the cause: pass `e` into the RuntimeException."],"exampleFix":"// before\nthrow new RuntimeException(String.format(\"Transform with URN %s could not be translated\", URN), e);\n// after (debugging)\nthrow new RuntimeException(String.format(\"Transform with URN %s failed to parse ParDoPayload\", URN), e);","handlingStrategy":"try-catch","validationCode":"null","typeGuard":null,"tryCatchPattern":"try { matcher.matches(application); } catch (RuntimeException e) { if (e.getCause() instanceof IOException) { /* ParDoPayload parse failure: check version skew */ } throw e; }","preventionTips":["Use a single Beam version across pipeline production and translation","Avoid mutating serialized ParDoPayload bytes","Verify payloads decode as RunnerApi.ParDoPayload in custom runners"],"tags":["java","proto","translation","pardo"],"backgroundTag":"protobuf-unmarshal-failed","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}