Author: cmccabe Date: Thu May 8 17:49:52 2014 New Revision: 1593346 URL: http://svn.apache.org/r1593346 Log: HDFS-5381. ExtendedBlock#hashCode should use both blockId and block pool ID (Benoy Antony via Colin Patrick McCabe)
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/ExtendedBlock.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestExtendedBlock.java Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1593346&r1=1593345&r2=1593346&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu May 8 17:49:52 2014 @@ -435,6 +435,10 @@ Release 2.5.0 - UNRELEASED HDFS-6337. Setfacl testcase is failing due to dash character in username in TestAclCLI (umamahesh) + HDFS-5381. ExtendedBlock#hashCode should use both blockId and block pool ID + (Benoy Antony via Colin Patrick McCabe) + + Release 2.4.1 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/ExtendedBlock.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/ExtendedBlock.java?rev=1593346&r1=1593345&r2=1593346&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/ExtendedBlock.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/ExtendedBlock.java Thu May 8 17:49:52 2014 @@ -112,7 +112,8 @@ public class ExtendedBlock { @Override // Object public int hashCode() { - return block.hashCode(); + int result = 31 + poolId.hashCode(); + return (31 * result + block.hashCode()); } @Override // Object Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestExtendedBlock.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestExtendedBlock.java?rev=1593346&r1=1593345&r2=1593346&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestExtendedBlock.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestExtendedBlock.java Thu May 8 17:49:52 2014 @@ -49,6 +49,26 @@ public class TestExtendedBlock { new ExtendedBlock(POOL_A, BLOCK_1_GS1), new ExtendedBlock(POOL_A, BLOCK_1_GS2)); } + + @Test + public void testHashcode() { + + // Different pools, same block id -> different hashcode + assertNotEquals( + new ExtendedBlock(POOL_A, BLOCK_1_GS1).hashCode(), + new ExtendedBlock(POOL_B, BLOCK_1_GS1).hashCode()); + + // Same pool, different block id -> different hashcode + assertNotEquals( + new ExtendedBlock(POOL_A, BLOCK_1_GS1).hashCode(), + new ExtendedBlock(POOL_A, BLOCK_2_GS1).hashCode()); + + // Same block -> same hashcode + assertEquals( + new ExtendedBlock(POOL_A, BLOCK_1_GS1).hashCode(), + new ExtendedBlock(POOL_A, BLOCK_1_GS1).hashCode()); + + } private static void assertNotEquals(Object a, Object b) { assertFalse("expected not equal: '" + a + "' and '" + b + "'",