You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Ron Bodkin (JIRA)" <ji...@apache.org> on 2010/11/04 19:11:43 UTC

[jira] Created: (AVRO-690) Schema resolution error message for union lacks field name

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


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.


[jira] Assigned: (AVRO-690) Schema resolution error message for union lacks field name

Posted by "Thiruvalluvan M. G. (JIRA)" <ji...@apache.org>.
     [ 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.