Index: src/java/org/apache/hadoop/hbase/Chore.java =================================================================== --- src/java/org/apache/hadoop/hbase/Chore.java (revision 674899) +++ src/java/org/apache/hadoop/hbase/Chore.java (working copy) @@ -34,7 +34,7 @@ */ public abstract class Chore extends Thread { private final Log LOG = LogFactory.getLog(this.getClass()); - private final Sleeper sleeper; + protected final Sleeper sleeper; protected volatile AtomicBoolean stop; /** Index: src/java/org/apache/hadoop/hbase/master/MetaScanner.java =================================================================== --- src/java/org/apache/hadoop/hbase/master/MetaScanner.java (revision 674899) +++ src/java/org/apache/hadoop/hbase/master/MetaScanner.java (working copy) @@ -47,7 +47,8 @@ /** Constructor */ public MetaScanner(HMaster master, RegionManager regionManager) { - super(master, regionManager, false, master.metaRescanInterval, master.closed); + super(master, regionManager, false, 5000, master.closed); + } // Don't retry if we get an error while scanning. Errors are most often @@ -135,6 +136,7 @@ regionManager.numMetaRegions() != regionManager.numOnlineMetaRegions()) { return false; } + sleeper.setNextPeriod(master.metaRescanInterval); LOG.info("all meta regions scanned"); notifyAll(); return true; Index: src/java/org/apache/hadoop/hbase/util/Sleeper.java =================================================================== --- src/java/org/apache/hadoop/hbase/util/Sleeper.java (revision 674899) +++ src/java/org/apache/hadoop/hbase/util/Sleeper.java (working copy) @@ -32,7 +32,8 @@ */ public class Sleeper { private final Log LOG = LogFactory.getLog(this.getClass().getName()); - private final int period; + private int period; + private int nextPeriod; private AtomicBoolean stop; /** @@ -42,6 +43,7 @@ public Sleeper(final int sleep, final AtomicBoolean stop) { this.period = sleep; this.stop = stop; + this.nextPeriod = period; } /** @@ -83,5 +85,11 @@ } } } + if(this.nextPeriod != this.period) + this.period = this.nextPeriod; } + + public void setNextPeriod(int nextPeriod) { + this.nextPeriod = nextPeriod; + } }