diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java index 298d5bc..c1e5fc2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java @@ -25,8 +25,10 @@ import java.util.ArrayList; import java.util.List; import java.util.NavigableSet; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.ReentrantLock; +import com.google.common.primitives.Longs; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -59,6 +61,8 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner protected ScanQueryMatcher matcher; protected KeyValueHeap heap; protected boolean cacheBlocks; + protected static AtomicLong storeScannerSequence = new AtomicLong(0l); + protected long storeScannerID = -1l; protected int countPerRow = 0; protected int storeLimit = -1; @@ -128,7 +132,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner this.now = EnvironmentEdgeManager.currentTime(); this.oldestUnexpiredTS = now - ttl; this.minVersions = minVersions; - + this.storeScannerID = storeScannerSequence.getAndIncrement(); if (store != null && ((HStore)store).getHRegion() != null && ((HStore)store).getHRegion().getBaseConf() != null) { Configuration conf = ((HStore) store).getHRegion().getBaseConf(); @@ -863,5 +867,18 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner public Cell getNextIndexedKey() { return this.heap.getNextIndexedKey(); } + + @Override + public int hashCode() { + return Longs.hashCode(this.storeScannerID); + } + + @Override + public boolean equals(Object obj) { + if (obj != null) + return ((StoreScanner) obj).storeScannerID == this.storeScannerID; + return false; + } + }