commit 016334a7c44e04987291055ee0e5e0ce00524e6c Author: nspiegelberg Date: 34 seconds ago HBASE-4679 hrift null mutation error diff --git a/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java b/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java index 9d312f2..bb3b3b0 100644 --- a/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java +++ b/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java @@ -597,9 +597,13 @@ public class ThriftServer { } } else { if(famAndQf.length == 1) { - put.add(famAndQf[0], new byte[0], getBytes(m.value)); + put.add(famAndQf[0], HConstants.EMPTY_BYTE_ARRAY, + m.value != null ? m.value.array() + : HConstants.EMPTY_BYTE_ARRAY); } else { - put.add(famAndQf[0], famAndQf[1], getBytes(m.value)); + put.add(famAndQf[0], famAndQf[1], + m.value != null ? m.value.array() + : HConstants.EMPTY_BYTE_ARRAY); } } } @@ -642,9 +646,13 @@ public class ThriftServer { } } else { if(famAndQf.length == 1) { - put.add(famAndQf[0], new byte[0], getBytes(m.value)); + put.add(famAndQf[0], HConstants.EMPTY_BYTE_ARRAY, + m.value != null ? m.value.array() + : HConstants.EMPTY_BYTE_ARRAY); } else { - put.add(famAndQf[0], famAndQf[1], getBytes(m.value)); + put.add(famAndQf[0], famAndQf[1], + m.value != null ? m.value.array() + : HConstants.EMPTY_BYTE_ARRAY); } } } diff --git a/src/test/java/org/apache/hadoop/hbase/thrift/TestThriftServer.java b/src/test/java/org/apache/hadoop/hbase/thrift/TestThriftServer.java index 7401e3b..691bef6 100644 --- a/src/test/java/org/apache/hadoop/hbase/thrift/TestThriftServer.java +++ b/src/test/java/org/apache/hadoop/hbase/thrift/TestThriftServer.java @@ -179,6 +179,14 @@ public class TestThriftServer { size = handler.getRow(tableAname, rowBname).size(); assertEquals(0, size); + // Try null mutation + List mutations = new ArrayList(); + mutations.add(new Mutation(false, columnAname, null)); + handler.mutateRow(tableAname, rowAname, mutations); + TRowResult rowResult3 = handler.getRow(tableAname, rowAname).get(0); + assertEquals(rowAname, rowResult3.row); + assertEquals(0, rowResult3.columns.get(columnAname).value.array().length); + // Teardown handler.disableTable(tableAname); handler.deleteTable(tableAname);