avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Carey (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AVRO-667) GenericArray fails to compare with List. SpecificRecord compare gets ClassCastException
Date Fri, 17 Sep 2010 00:21:32 GMT

    [ https://issues.apache.org/jira/browse/AVRO-667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910405#action_12910405

Scott Carey commented on AVRO-667:

+1 on the current patch.

Yes, instanceof is orders of magnitude off of object construction, and several times faster
than the compareTo of two small strings.

If we are trying to optimize comparing GenericRecords for Hadoop there are probably several
other more significant things to change if we spent time profiling or experimenting.

The benefit of marking Utf8 final is that we can guarantee that it uses Utf8 ordering and
no subclasses do improper things.  That may not be a big concern however.

> GenericArray fails to compare with List.  SpecificRecord compare gets ClassCastException
> ----------------------------------------------------------------------------------------
>                 Key: AVRO-667
>                 URL: https://issues.apache.org/jira/browse/AVRO-667
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.4.0
>            Reporter: Scott Carey
>            Assignee: Scott Carey
>            Priority: Blocker
>             Fix For: 1.4.1
>         Attachments: AVRO-667.patch, AVRO-667.patch, AVRO-667.patch, AVRO-667.patch
> AVRO-637 is incomplete.
> I am unable to convert my SpecificRecord project to 1.4.  It compiles, but unit tests
get runtime exceptions.
> compareTo in GenericData does not handle List vs GenericArray and I get class cast exceptions.
> {noformat}
> java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.apache.avro.generic.GenericArray
> 	at org.apache.avro.generic.GenericData.compare(GenericData.java:502)
> 	at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> 	at org.apache.avro.generic.GenericData.compare(GenericData.java:494)
> 	at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> 	at org.apache.avro.specific.SpecificRecordBase.compareTo(SpecificRecordBase.java:45)
> 	at org.apache.avro.specific.SpecificRecordBase.equals(SpecificRecordBase.java:35)
> 	at com.rr.eventdata.ViewRecord.equals(ViewRecord.java:350)
> 	at com.rr.eventdata.WriteStuffTest.main(WriteStuffTest.java:143)
> 	at com.rr.eventdata.WriteStuffTest.testReadWriteDataFile(WriteStuffTest.java:55)
> {noformat}
> Also,  an array of string in SpecificRecord ends up as List<CharSequence>.  
> However, it should be List<? extends CharSequence> or else you can't assign a List<String>
to it.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message