Index: hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java =================================================================== --- hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java (revision 1381668) +++ hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java (working copy) @@ -283,5 +283,12 @@ assertEquals("World", Bytes.readStringFixedSize(dis, 18)); assertEquals("", Bytes.readStringFixedSize(dis, 9)); } + + public void testCopy() throws Exception { + byte [] bytes = Bytes.toBytes("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + byte [] copy = Bytes.copy(bytes); + assertFalse(bytes == copy); + assertTrue(Bytes.equals(bytes, copy)); + } } Index: hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java =================================================================== --- hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java (revision 1381668) +++ hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java (working copy) @@ -1655,5 +1655,17 @@ return toString(b, 0, n); } - + + /** + * Copy the byte array given in parameter and return an instance + * of a new byte array with the same length and the same content. + * @param bytes the byte array to duplicate + * @return a copy of the given byte array + */ + public static byte [] copy(byte [] bytes) { + if (bytes == null) return null; + byte [] result = new byte[bytes.length]; + System.arraycopy(bytes, 0, result, 0, bytes.length); + return result; + } }