Index: src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java (revision 1508966) +++ src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java (working copy) @@ -4166,7 +4166,7 @@ byte[] v1 = Bytes.toBytes("42"); byte[] v2 = Bytes.toBytes("23"); byte [][] QUALIFIERS = new byte [][] { - Bytes.toBytes("a"), Bytes.toBytes("b") + Bytes.toBytes("b"), Bytes.toBytes("a") }; Append a = new Append(ROW); a.add(FAMILY, QUALIFIERS[0], v1); Index: src/main/java/org/apache/hadoop/hbase/client/Append.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/Append.java (revision 1508966) +++ src/main/java/org/apache/hadoop/hbase/client/Append.java (working copy) @@ -88,7 +88,13 @@ if(list == null) { list = new ArrayList(); } - list.add(new KeyValue( + // find where the new entry should be placed in the List + int idx = 0; + for (KeyValue kv : list) { + if (Bytes.compareTo(qualifier, kv.getQualifier()) < 0) break; + idx ++; + } + list.add(idx, new KeyValue( this.row, family, qualifier, this.ts, KeyValue.Type.Put, value)); familyMap.put(family, list); return this;