Repository: hbase
Updated Branches:
  refs/heads/branch-1 e5df9bb2e -> a6cf9c51d


HBASE-13745 Say why a flush was requested in log message


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a6cf9c51
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a6cf9c51
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a6cf9c51

Branch: refs/heads/branch-1
Commit: a6cf9c51d97851f33593a1df64d6c45d801314fd
Parents: e5df9bb
Author: stack <st...@apache.org>
Authored: Fri May 22 11:41:22 2015 -0700
Committer: stack <st...@apache.org>
Committed: Fri May 22 11:42:21 2015 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java   |  5 ++++-
 .../apache/hadoop/hbase/regionserver/HRegionServer.java | 12 +++++++-----
 .../hadoop/hbase/regionserver/TestDefaultMemStore.java  | 10 ++++++----
 3 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/a6cf9c51/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index 0ab397e..22fdc78 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -1942,10 +1942,12 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
   /**
    * Should the memstore be flushed now
    */
-  boolean shouldFlush() {
+  boolean shouldFlush(final StringBuffer whyFlush) {
+    whyFlush.setLength(0);
     // This is a rough measure.
     if (this.maxFlushedSeqId > 0
           && (this.maxFlushedSeqId + this.flushPerChanges < 
this.sequenceId.get())) {
+      whyFlush.append("more than max edits, " + this.flushPerChanges + ", 
since last flush");
       return true;
     }
     long modifiedFlushCheckInterval = flushCheckInterval;
@@ -1966,6 +1968,7 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
     for (Store s : getStores()) {
       if (s.timeOfOldestEdit() < now - modifiedFlushCheckInterval) {
         // we have an old enough edit in the memstore, flush
+        whyFlush.append(s.toString() + " has an old edit so flush to free 
WALs");
         return true;
       }
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/a6cf9c51/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index 9e3af90..843c0a7 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -1548,15 +1548,17 @@ public class HRegionServer extends HasThread implements
 
     @Override
     protected void chore() {
+      final StringBuffer whyFlush = new StringBuffer();
       for (Region r : this.server.onlineRegions.values()) {
-        if (r == null)
-          continue;
-        if (((HRegion)r).shouldFlush()) {
+        if (r == null) continue;
+        if (((HRegion)r).shouldFlush(whyFlush)) {
           FlushRequester requester = server.getFlushRequester();
           if (requester != null) {
             long randomDelay = RandomUtils.nextInt(RANGE_OF_DELAY) + 
MIN_DELAY_TIME;
-            LOG.info(getName() + " requesting flush for region " +
-              r.getRegionInfo().getRegionNameAsString() + " after a delay of " 
+ randomDelay);
+            LOG.info(getName() + " requesting flush of " +
+              r.getRegionInfo().getRegionNameAsString() + " because " +
+              whyFlush.toString() +
+              " after random delay " + randomDelay + "ms");
             //Throttle the flushes by putting a delay. If we don't throttle, 
and there
             //is a balanced write-load on the regions in a table, we might end 
up
             //overwhelming the filesystem with too many flushes at once.

http://git-wip-us.apache.org/repos/asf/hbase/blob/a6cf9c51/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
index 7a405a4..d0c3b91 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
@@ -927,9 +927,10 @@ public class TestDefaultMemStore extends TestCase {
       edge.setCurrentTimeMillis(1234);
       s.add(KeyValueTestUtil.create("r", "f", "q", 100, "v"));
       edge.setCurrentTimeMillis(1234 + 100);
-      assertTrue(region.shouldFlush() == false);
+      StringBuffer sb = new StringBuffer();
+      assertTrue(region.shouldFlush(sb) == false);
       edge.setCurrentTimeMillis(1234 + 10000);
-      assertTrue(region.shouldFlush() == expected);
+      assertTrue(region.shouldFlush(sb) == expected);
     } finally {
       EnvironmentEdgeManager.reset();
     }
@@ -960,9 +961,10 @@ public class TestDefaultMemStore extends TestCase {
             wFactory.getWAL(hri.getEncodedNameAsBytes()));
     HRegion.addRegionToMETA(meta, r);
     edge.setCurrentTimeMillis(1234 + 100);
-    assertTrue(meta.shouldFlush() == false);
+    StringBuffer sb = new StringBuffer();
+    assertTrue(meta.shouldFlush(sb) == false);
     edge.setCurrentTimeMillis(edge.currentTime() + 
HRegion.META_CACHE_FLUSH_INTERVAL + 1);
-    assertTrue(meta.shouldFlush() == true);
+    assertTrue(meta.shouldFlush(sb) == true);
   }
 
   private class EnvironmentEdgeForMemstoreTest implements EnvironmentEdge {

Reply via email to