You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/12/05 06:26:29 UTC

svn commit: r723589 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/Chore.java src/java/org/apache/hadoop/hbase/util/Sleeper.java

Author: stack
Date: Thu Dec  4 21:26:28 2008
New Revision: 723589

URL: http://svn.apache.org/viewvc?rev=723589&view=rev
Log:
HBASE-1000 Sleeper.sleep does not go back to sleep when interrupted and no stop flag given.

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Chore.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Sleeper.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=723589&r1=723588&r2=723589&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Thu Dec  4 21:26:28 2008
@@ -99,6 +99,8 @@
    HBASE-1039  Compaction fails if bloomfilters are enabled
    HBASE-1027  Make global flusher check work with percentages rather than
                hard code memory sizes
+   HBASE-1000  Sleeper.sleep does not go back to sleep when interrupted
+               and no stop flag given.
 
   IMPROVEMENTS
    HBASE-901   Add a limit to key length, check key and value length on client side

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Chore.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Chore.java?rev=723589&r1=723588&r2=723589&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Chore.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/Chore.java Thu Dec  4 21:26:28 2008
@@ -59,19 +59,21 @@
         this.sleeper.sleep();
       }
       this.sleeper.sleep();
-      while(!this.stop.get()) {
+      while (!this.stop.get()) {
+        long startTime = System.currentTimeMillis();
         try {
-          long startTime = System.currentTimeMillis();
           chore();
-          this.sleeper.sleep(startTime);
         } catch (Exception e) {
           LOG.error("Caught exception", e);
+          if (this.stop.get()) {
+            continue;
+          }
         }
+        this.sleeper.sleep(startTime);
       }
     } catch (Throwable t) {
       LOG.fatal("Caught error. Starting shutdown.", t);
       this.stop.set(true);
-      
     } finally {
       LOG.info(getName() + " exiting");
     }
@@ -97,4 +99,4 @@
   protected void sleep() {
     this.sleeper.sleep();
   }
-}
\ No newline at end of file
+}

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Sleeper.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Sleeper.java?rev=723589&r1=723588&r2=723589&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Sleeper.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Sleeper.java Thu Dec  4 21:26:28 2008
@@ -66,11 +66,14 @@
       LOG.warn("Calculated wait time > " + this.period +
         "; setting to this.period: " + System.currentTimeMillis() + ", " +
         startTime);
+      waitTime = this.period;
     }
-    if (waitTime > 0) {
+    while (waitTime > 0) {
+      long woke = -1;
       try {
         Thread.sleep(waitTime);
-        long slept = System.currentTimeMillis() - now;
+        woke = System.currentTimeMillis();
+        long slept = woke - now;
         if (slept > (10 * this.period)) {
           LOG.warn("We slept " + slept + "ms, ten times longer than scheduled: " +
             this.period);
@@ -82,6 +85,9 @@
           return;
         }
       }
+      // Recalculate waitTime.
+      woke = (woke == -1)? System.currentTimeMillis(): woke;
+      waitTime = this.period - (woke - startTime);
     }
   }
 }