diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index ebd87fe5e64..cd23e0f091c 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -134,6 +134,9 @@ Release 2.0.1-alpha - UNRELEASED HADOOP-8563. don't package hadoop-pipes examples/bin (Colin Patrick McCabe via tgraves) + HADOOP-8566. AvroReflectSerializer.accept(Class) throws a NPE if the class has no + package (primitive types and arrays). (tucu) + BREAKDOWN OF HDFS-3042 SUBTASKS HADOOP-8220. ZKFailoverController doesn't handle failure to become active diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/serializer/avro/AvroReflectSerialization.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/serializer/avro/AvroReflectSerialization.java index 5636b597e33..cfbc60d1045 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/serializer/avro/AvroReflectSerialization.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/serializer/avro/AvroReflectSerialization.java @@ -58,8 +58,8 @@ public class AvroReflectSerialization extends AvroSerialization{ if (packages == null) { getPackages(); } - return AvroReflectSerializable.class.isAssignableFrom(c) || - packages.contains(c.getPackage().getName()); + return AvroReflectSerializable.class.isAssignableFrom(c) || + (c.getPackage() != null && packages.contains(c.getPackage().getName())); } private void getPackages() { diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java index 08f2c40e9ea..181419c137e 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java @@ -21,6 +21,7 @@ package org.apache.hadoop.io.serializer.avro; import junit.framework.TestCase; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.io.serializer.SerializationFactory; import org.apache.hadoop.io.serializer.SerializationTestUtil; public class TestAvroSerialization extends TestCase { @@ -43,6 +44,12 @@ public class TestAvroSerialization extends TestCase { assertEquals(before, after); } + public void testAcceptHandlingPrimitivesAndArrays() throws Exception { + SerializationFactory factory = new SerializationFactory(conf); + assertNull(factory.getSerializer(byte[].class)); + assertNull(factory.getSerializer(byte.class)); + } + public void testReflectInnerClass() throws Exception { InnerRecord before = new InnerRecord(); before.x = 10;