Description
When a value contains an empty byte[] and then a checkAndPut is performed with an empty byte[] , the operation will fail.
For example:
Put put = new Put(row1);
put.add(fam1, qf1, new byte[0]);
table.put(put);
put = new Put(row1);
put.add(fam1, qf1, val1);
table.checkAndPut(row1, fam1, qf1, new byte[0], put); ---> false
I think this is related to HBASE-3793 and HBASE-3468.
Note that you will also get into this situation when first putting a null value ( put.add(fam1,qf1,null) ), as this value will then be regarded and returned as an empty byte[] upon a get.