You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Thiruvalluvan M. G. (JIRA)" <ji...@apache.org> on 2010/11/09 03:36:22 UTC
[jira] Assigned: (AVRO-690) Schema resolution error message for
union lacks field name
[ https://issues.apache.org/jira/browse/AVRO-690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thiruvalluvan M. G. reassigned AVRO-690:
----------------------------------------
Assignee: Thiruvalluvan M. G.
> Schema resolution error message for union lacks field name
> ----------------------------------------------------------
>
> Key: AVRO-690
> URL: https://issues.apache.org/jira/browse/AVRO-690
> Project: Avro
> Issue Type: Improvement
> Reporter: Ron Bodkin
> Assignee: Thiruvalluvan M. G.
>
> I had a field whose type changed from ["null", "int"] to ["null", "string"]. When reading a file with the old type (an int) in it, the Avro reader gave this error message:
> org.apache.avro.AvroTypeException: Found "int", expecting ["null","string"]
> at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:212)
> at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
> at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:187)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:125)
> at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:149)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:121)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:112)
> at org.apache.avro.file.DataFileStream.next(DataFileStream.java:198)
> at org.apache.avro.mapred.AvroRecordReader.next(AvroRecordReader.java:67)
> at org.apache.avro.mapred.AvroRecordReader.next(AvroRecordReader.java:34)
> It would be helpful if the generate method had context about what record and field name it was working on, so the message could be
> org.apache.avro.AvroTypeException: Found "int", expecting ["null","string"] in field "my_field_name" in record "record_name"
> I think this would mean adding a field and a record parameter to the ResolvingGrammarGenerator.generate and resolve* methods so an error could identify where it came from.
> E.g., the data about the field was available in the resolveRecords methods in this trace of where that error got generated.
> Symbol.error(String) line: 122
> ResolvingGrammarGenerator.generate(Schema, Schema, Map<LitS,Symbol>) line: 170
> ResolvingGrammarGenerator.resolveUnion(Schema, Schema, Map<LitS,Symbol>) line: 186
> ResolvingGrammarGenerator.generate(Schema, Schema, Map<LitS,Symbol>) line: 120
> ResolvingGrammarGenerator.resolveRecords(Schema, Schema, Map<LitS,Symbol>) line: 254
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.