[ https://issues.apache.org/jira/browse/AVRO-2400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857941#comment-16857941 ]
Martin Jubelgas commented on AVRO-2400: --------------------------------------- I've come across another example that does not resolve in 1.9.0 but did in 1.8.2: {code:java} public void testArrayInUnion() throws Exception { Schema writerSchema = SchemaBuilder.array().items().intType(); Schema readerSchema = SchemaBuilder.unionOf() .nullType() .and() .array().items().intType().endUnion(); ResolvingDecoder.resolve(writerSchema, readerSchema ); } {code} results in just the same kind of exception (even with pull request #526 applied) {code:java} java.lang.ClassCastException: org.apache.avro.Resolver$ReaderUnion cannot be cast to org.apache.avro.Resolver$Container at org.apache.avro.io.parsing.ResolvingGrammarGenerator.generate(ResolvingGrammarGenerator.java:95) at org.apache.avro.io.parsing.ResolvingGrammarGenerator.generate(ResolvingGrammarGenerator.java:65) at org.apache.avro.io.ResolvingDecoder.resolve(ResolvingDecoder.java:85) {code} > Avro 1.9.0 can't resolve schemas that can be resolved in 1.8.2 > -------------------------------------------------------------- > > Key: AVRO-2400 > URL: https://issues.apache.org/jira/browse/AVRO-2400 > Project: Apache Avro > Issue Type: Bug > Components: java > Reporter: Jacob Tolar > Assignee: Jacob Tolar > Priority: Blocker > Fix For: 1.10.0, 1.9.1 > > > The failure occurs in ResolvingGrammarGenerator when reader and writer schema > have an array of records with different full names (e.g. different > namespace). > {code:java} > Exception in thread "main" java.lang.ClassCastException: > org.apache.avro.Resolver$ReaderUnion cannot be cast to > org.apache.avro.Resolver$Container{code} > Avro 1.8.2 allowed this behavior but it now fails in 1.9.0. Looking at the > jiras and code, I don't believe this was intentional ( AVRO-2275, > [https://github.com/apache/avro/commit/39d959e1c6a1f339f03dab18289e47f27c10be7f] > ). > > It looks like there were some attempts to keep compatibility ( > [https://github.com/apache/avro/blob/branch-1.9/lang/java/avro/src/main/java/org/apache/avro/Resolver.java] > , e.g. see the commented out check for w.getFullName() in resolve()) but > this case was missed. > > See this simple example to reproduce. > [https://gist.github.com/jacobtolar/c88d43ab4e8767227891e5cdc188ffad] -- This message was sent by Atlassian JIRA (v7.6.3#76005)