[ https://issues.apache.org/jira/browse/BEAM-440?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Halperin updated BEAM-440: --------------------------------- Labels: backward-incompatible newbie starter (was: newbie starter) > 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: Jason White > Labels: backward-incompatible, 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}}: > {code} > 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()); > {code} > 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.15#6346)