Do not crash when RawPTransform has null spec
Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/d879d279 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/d879d279 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/d879d279 Branch: refs/heads/master Commit: d879d2791e51dee5baddbdbe51f757e44b55a109 Parents: acbbf1f Author: Kenneth Knowles <k...@apache.org> Authored: Thu Oct 19 12:45:43 2017 -0700 Committer: Kenneth Knowles <k...@apache.org> Committed: Thu Oct 19 14:28:05 2017 -0700 ---------------------------------------------------------------------- .../runners/core/construction/PTransformTranslation.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/d879d279/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java ---------------------------------------------------------------------- diff --git a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java index 8e6829b..a3a5a1f 100644 --- a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java +++ b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java @@ -179,7 +179,13 @@ public class PTransformTranslation { if (transform instanceof RawPTransform) { // The raw transform was parsed in the context of other components; this puts it in the // context of our current serialization - transformBuilder.setSpec(((RawPTransform<?, ?>) transform).migrate(components)); + FunctionSpec spec = ((RawPTransform<?, ?>) transform).migrate(components); + + // A composite transform is permitted to have a null spec. There are also some pseudo- + // primitives not yet supported by the portability framework that have null specs + if (spec != null) { + transformBuilder.setSpec(spec); + } } else if (KNOWN_PAYLOAD_TRANSLATORS.containsKey(transform.getClass())) { transformBuilder.setSpec( KNOWN_PAYLOAD_TRANSLATORS