[ https://issues.apache.org/jira/browse/AVRO-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Doug Cutting reopened AVRO-780: ------------------------------- Re-opening. We generally don't resolve an issue as fixed until the patch has been committed. If this patch fixes the problem for you, please just add a comment saying that. I'd still like to add a unit test that triggers this problem before committing the patch. > union handling in ReflectDatumWriter > ------------------------------------ > > Key: AVRO-780 > URL: https://issues.apache.org/jira/browse/AVRO-780 > Project: Avro > Issue Type: Bug > Components: java > Affects Versions: 1.5.0 > Environment: Mac with VMWare running Linux training-vm > 2.6.28-19-server #61-Ubuntu > Reporter: ey-chih chow > Assignee: Doug Cutting > Fix For: 1.5.1 > > Attachments: AVRO-780.patch, AVRO-780.patch > > Original Estimate: 72h > Remaining Estimate: 72h > > Our avdl schema definition for the record DeviceRow has a field: > union {array<DynamicColumn4Games>, null} Games__; > When we migrated our MR jobs from 1.4.0 to 1.5.0, we got following messages: > =================================================================================================== > 11/03/10 11:31:02 INFO mapred.TaskInProgress: Error from > attempt_20110310113041953_0001_m_000000_0: java.lang.NullPointerException: in > com.ngmoco.hbase.DeviceRow in union null of union in field Games__ of > com.ngmoco.hbase.DeviceRow > at > org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:104) > at > org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:57) > at > org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:131) > at > org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:114) > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:900) > at > org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:466) > at > org.apache.avro.mapred.HadoopMapper$MapCollector.collect(HadoopMapper.java:69) > at > com.ngmoco.ngpipes.sourcing.NgActivityGatheringMapper.map(NgActivityGatheringMapper.java:91) > at > com.ngmoco.ngpipes.sourcing.NgActivityGatheringMapper.map(NgActivityGatheringMapper.java:1) > at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:80) > at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:34) > at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50) > at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) > at org.apache.hadoop.mapred.Child.main(Child.java:170) > Caused by: java.lang.NullPointerException: in union null of union in field > Games__ of com.ngmoco.hbase.DeviceRow > at > org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:92) > at > org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:86) > at > org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:102) > ... 14 more > =================================================================================================== > After we change definition of the field Games__ to: > union {null, array<DynamicColumn4Games>} Games__; > The system stop complaining. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira