[ https://issues.apache.org/jira/browse/BEAM-440?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Manu Zhang reassigned BEAM-440: ------------------------------- Assignee: Manu Zhang > Create.values() returns a type-unsafe Coder > ------------------------------------------- > > Key: BEAM-440 > URL: https://issues.apache.org/jira/browse/BEAM-440 > Project: Beam > Issue Type: Bug > Components: sdk-java-core > Reporter: Daniel Halperin > Assignee: Manu Zhang > Labels: newbie, starter > > Create.values() with no arguments will default to a VoidCoder, unless one is > set later with #setCoder(Coder). > Although it will encode its input correctly, this seems like a bad choice in > many cases. E.g., with Flatten: > PCollection<KV<SomeClass, Integer>> initial = p.apply("First", > Create.<KV<SomeClass, Integer>>of()); > PCollection<KV<SomeClass, Integer>> second = > p.apply("Second", Create.of("a", "b")).apply(ParDo.of(new > MyAvroDoFn())); > PCollectionList > .of(initial).and(second) > .apply(Flatten.<KV<SomeClass, Integer>>pCollections()); > This crashes trying to cast a KV from "Second" to a Void.class. > 1. Suggest throwing a warning in #getDefaultOutputCoder when defaulting to > VoidCoder for an empty elements list. Should this be an error? > 2. Suggest adding something like Create.empty(TypeDescriptor) to handle this > case properly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)