diff --git hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java index 09f877d..4ca792e 100644 --- hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java +++ hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java @@ -158,6 +158,11 @@ public class MetricsRegionSourceImpl implements MetricsRegionSource { } @Override + public int hashCode() { + return this.regionWrapper.getRegionName().hashCode(); + } + + @Override public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof MetricsRegionSourceImpl)) return false; diff --git hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java index 30beb8a..eb5c814 100644 --- hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java +++ hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java @@ -22,12 +22,13 @@ import org.apache.hadoop.hbase.CompatibilitySingletonFactory; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; public class TestMetricsRegionSourceImpl { @Test - public void testCompareTo() throws Exception { + public void testCompareToHashCodeEquals() throws Exception { MetricsRegionServerSourceFactory fact = CompatibilitySingletonFactory.getInstance(MetricsRegionServerSourceFactory.class); MetricsRegionSource one = fact.createRegion(new RegionWrapperStub("TEST")); @@ -35,6 +36,8 @@ public class TestMetricsRegionSourceImpl { MetricsRegionSource two = fact.createRegion(new RegionWrapperStub("TWO")); assertEquals(0, one.compareTo(oneClone)); + assertEquals(one.hashCode(), oneClone.hashCode()); + assertNotEquals(one, two); assertTrue( one.compareTo(two) < 0); assertTrue( two.compareTo(one) > 0); diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java index 25cfb2e..1b53eb0 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java @@ -102,6 +102,11 @@ public class LruCachedBlock implements HeapSize, Comparable { } @Override + public int hashCode() { + return (int)(accessTime ^ (accessTime >>> 32)); + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableSplit.java hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableSplit.java index 9083586..b3c8b82 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableSplit.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableSplit.java @@ -21,6 +21,7 @@ package org.apache.hadoop.hbase.mapred; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.util.Arrays; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; @@ -138,4 +139,13 @@ public class TableSplit implements InputSplit, Comparable { Bytes.equals(m_endRow, other.m_endRow) && m_regionLocation.equals(other.m_regionLocation); } + + @Override + public int hashCode() { + int result = m_tableName != null ? m_tableName.hashCode() : 0; + result = 31 * result + Arrays.hashCode(m_startRow); + result = 31 * result + Arrays.hashCode(m_endRow); + result = 31 * result + (m_regionLocation != null ? m_regionLocation.hashCode() : 0); + return result; + } } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java index 6fb3edf..1b198c9 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java @@ -115,6 +115,11 @@ public class RegionPlan implements Comparable { public int compareTo(RegionPlan o) { return getRegionName().compareTo(o.getRegionName()); } + + @Override + public int hashCode() { + return getRegionName().hashCode(); + } @Override public boolean equals(Object obj) { diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java index 93298d8..22082e8 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java @@ -51,6 +51,13 @@ class ServerAndLoad implements Comparable, Serializable { } @Override + public int hashCode() { + int result = load; + result = 31 * result + ((sn == null) ? 0 : sn.hashCode()); + return result; + } + + @Override public boolean equals(Object o) { if (o instanceof ServerAndLoad) { ServerAndLoad sl = (ServerAndLoad) o; diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java index 5bf3a19..165176f 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java @@ -733,6 +733,11 @@ class MemStoreFlusher implements FlushRequester { } @Override + public int hashCode() { + return (int) getDelay(TimeUnit.MILLISECONDS); + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationKey.java hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationKey.java index c68af4e..5f4378f 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationKey.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationKey.java @@ -19,9 +19,11 @@ package org.apache.hadoop.hbase.security.token; import javax.crypto.SecretKey; + import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.util.Arrays; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.io.Writable; @@ -63,6 +65,14 @@ public class AuthenticationKey implements Writable { } @Override + public int hashCode() { + int result = id; + result = 31 * result + (int) (expirationDate ^ (expirationDate >>> 32)); + result = 31 * result + ((secret == null) ? 0 : Arrays.hashCode(secret.getEncoded())); + return result; + } + + @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof AuthenticationKey)) { return false;