You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/02/26 09:51:53 UTC
svn commit: r1450084 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/regionserver/MemStore.java
test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java
Author: larsh
Date: Tue Feb 26 08:51:52 2013
New Revision: 1450084
URL: http://svn.apache.org/r1450084
Log:
HBASE-7883 Update memstore size when removing the entries in append operation (Himanshu Vashishtha)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java?rev=1450084&r1=1450083&r2=1450084&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java Tue Feb 26 08:51:52 2013
@@ -584,7 +584,9 @@ public class MemStore implements HeapSiz
if (kv.getType() == KeyValue.Type.Put.getCode() &&
kv.getMemstoreTS() == 0) {
// false means there was a change, so give us the size.
- addedSize -= heapSizeChange(kv, true);
+ long delta = heapSizeChange(cur, true);
+ addedSize -= delta;
+ this.size.addAndGet(-delta);
it.remove();
}
} else {
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java?rev=1450084&r1=1450083&r2=1450084&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStore.java Tue Feb 26 08:51:52 2013
@@ -25,6 +25,7 @@ import java.lang.management.MemoryMXBean
import java.rmi.UnexpectedException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
@@ -850,7 +851,26 @@ public class TestMemStore extends TestCa
}
/**
- * Adds {@link #ROW_COUNT} rows and {@link #QUALIFIER_COUNT}
+ * Add keyvalues with a fixed memstoreTs, and checks that memstore size is decreased
+ * as older keyvalues are deleted from the memstore.
+ * @throws Exception
+ */
+ public void testUpsertMemstoreSize() throws Exception {
+ Configuration conf = HBaseConfiguration.create();
+ memstore = new MemStore(conf, KeyValue.COMPARATOR);
+ long oldSize = memstore.size.get();
+
+ KeyValue kv1 = KeyValueTestUtil.create("r", "f", "q", 100, "v");
+ this.memstore.upsert(Collections.singletonList(kv1));
+ long newSize = this.memstore.size.get();
+ assert(newSize > oldSize);
+
+ KeyValue kv2 = KeyValueTestUtil.create("r", "f", "q", 101, "v");
+ this.memstore.upsert(Collections.singletonList(kv2));
+ assertEquals(newSize, this.memstore.size.get());
+ }
+
+ /** * Adds {@link #ROW_COUNT} rows and {@link #QUALIFIER_COUNT}
* @param hmc Instance to add rows to.
* @return How many rows we added.
* @throws IOException