You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Martin Jubelgas (JIRA)" <ji...@apache.org> on 2019/06/06 18:33:00 UTC
[jira] [Issue Comment Deleted] (AVRO-2400) Avro 1.9.0 can't resolve
schemas that can be resolved in 1.8.2
[ https://issues.apache.org/jira/browse/AVRO-2400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Jubelgas updated AVRO-2400:
----------------------------------
Comment: was deleted
(was: 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)