You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Sean Busbey (JIRA)" <ji...@apache.org> on 2014/07/13 05:20:04 UTC

[jira] [Commented] (AVRO-1544) Union of enum and null can result in NPE on validate if null is not first

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

Sean Busbey commented on AVRO-1544:
-----------------------------------

AVRO-997 is def not backwards compatible. It's waiting for 1.8.0. Once this goes in, I'll rebase it onto the current trunk so it can happily keep waiting.

A few points of feedback:

* TestGenericData has several lines with trailing whitespace, could you clean those up?
* Could you change the test to use GenericData.EnumSymbol instead of String? (that way the tests won't have to change when 1.8.0 changes to strict enforcement of use of GenericData.EnumSymbol.)
* How about changing the check to be consistent with the fail-first style elsewhere in GenericData? e.g.
{code}
+ if (datum == null) return false;
return schema.getEnumSymbols().contains(datum.toString());
{code}

> Union of enum and null can result in NPE on validate if null is not first
> -------------------------------------------------------------------------
>
>                 Key: AVRO-1544
>                 URL: https://issues.apache.org/jira/browse/AVRO-1544
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.7.6
>            Reporter: Matthew Hayes
>         Attachments: AVRO-1544.patch
>
>
> The ENUM case in validate is missing a null check for datum:
> {code}
>     case ENUM:
>       return schema.getEnumSymbols().contains(datum.toString());
> {code}
> This leads to a surprising error where a NPE is thrown for a union of enum and null when the enum is first in the union.  If null is first it works.  The fix is a simple.  I'm creating a patch that adds the fix and a unit test for this case.



--
This message was sent by Atlassian JIRA
(v6.2#6252)