diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index acbf06a..a898f56 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1218,7 +1219,7 @@ public class HRegion implements HeapSize { // , Writable{ status.setStatus("Obtaining lock to block concurrent updates"); this.updatesLock.writeLock().lock(); status.setStatus("Preparing to flush by snapshotting stores"); - final long currentMemStoreSize = this.memstoreSize.get(); + long currentMemStoreSize = 0; List storeFlushers = new ArrayList(stores.size()); try { // Record the rwcc for all transactions in progress. @@ -1279,7 +1280,8 @@ public class HRegion implements HeapSize { // , Writable{ storeFlushers.clear(); // Set down the memstore size by amount of flush. - this.addAndGetGlobalMemstoreSize(-currentMemStoreSize); + currentMemStoreSize = + this.addAndGetGlobalMemstoreSize(-this.memstoreSize.get()); } catch (Throwable t) { // An exception here means that the snapshot was not persisted. // The hlog needs to be replayed so its content is restored to memstore. diff --git a/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java b/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java index 22ee8d0..70bcae5 100644 --- a/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java +++ b/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java @@ -89,13 +89,12 @@ public class TestGlobalMemStoreSize { } // check the global memstore size after flush - LOG.info("Starting flushes"); int i = 0; for (HRegionServer server : getOnlineRegionServers()) { + LOG.info("Starting flushes on " + server.getServerName() + ", size=" + server.getRegionServerAccounting().getGlobalMemstoreSize()); for (HRegionInfo regionInfo : server.getOnlineRegions()) { HRegion r = server.getFromOnlineRegions(regionInfo.getEncodedName()); - LOG.info("Flushing " + r.toString()); - r.flushcache(); + LOG.info("Flush " + r.toString() + " on " + server.getServerName() + ", " + r.flushcache() + ", size=" + server.getRegionServerAccounting().getGlobalMemstoreSize());; } LOG.info("Post flush on " + server.getServerName()); long now = System.currentTimeMillis();