HBASE-1000 Sleeper.sleep does not go back to sleep when interrupted and no stop flag given.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@723589 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2987febc16
commit
4024f5f128
|
@ -99,6 +99,8 @@ Release 0.19.0 - Unreleased
|
||||||
HBASE-1039 Compaction fails if bloomfilters are enabled
|
HBASE-1039 Compaction fails if bloomfilters are enabled
|
||||||
HBASE-1027 Make global flusher check work with percentages rather than
|
HBASE-1027 Make global flusher check work with percentages rather than
|
||||||
hard code memory sizes
|
hard code memory sizes
|
||||||
|
HBASE-1000 Sleeper.sleep does not go back to sleep when interrupted
|
||||||
|
and no stop flag given.
|
||||||
|
|
||||||
IMPROVEMENTS
|
IMPROVEMENTS
|
||||||
HBASE-901 Add a limit to key length, check key and value length on client side
|
HBASE-901 Add a limit to key length, check key and value length on client side
|
||||||
|
|
|
@ -59,19 +59,21 @@ public abstract class Chore extends Thread {
|
||||||
this.sleeper.sleep();
|
this.sleeper.sleep();
|
||||||
}
|
}
|
||||||
this.sleeper.sleep();
|
this.sleeper.sleep();
|
||||||
while(!this.stop.get()) {
|
while (!this.stop.get()) {
|
||||||
try {
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
try {
|
||||||
chore();
|
chore();
|
||||||
this.sleeper.sleep(startTime);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error("Caught exception", e);
|
LOG.error("Caught exception", e);
|
||||||
|
if (this.stop.get()) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.sleeper.sleep(startTime);
|
||||||
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
LOG.fatal("Caught error. Starting shutdown.", t);
|
LOG.fatal("Caught error. Starting shutdown.", t);
|
||||||
this.stop.set(true);
|
this.stop.set(true);
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
LOG.info(getName() + " exiting");
|
LOG.info(getName() + " exiting");
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,11 +66,14 @@ public class Sleeper {
|
||||||
LOG.warn("Calculated wait time > " + this.period +
|
LOG.warn("Calculated wait time > " + this.period +
|
||||||
"; setting to this.period: " + System.currentTimeMillis() + ", " +
|
"; setting to this.period: " + System.currentTimeMillis() + ", " +
|
||||||
startTime);
|
startTime);
|
||||||
|
waitTime = this.period;
|
||||||
}
|
}
|
||||||
if (waitTime > 0) {
|
while (waitTime > 0) {
|
||||||
|
long woke = -1;
|
||||||
try {
|
try {
|
||||||
Thread.sleep(waitTime);
|
Thread.sleep(waitTime);
|
||||||
long slept = System.currentTimeMillis() - now;
|
woke = System.currentTimeMillis();
|
||||||
|
long slept = woke - now;
|
||||||
if (slept > (10 * this.period)) {
|
if (slept > (10 * this.period)) {
|
||||||
LOG.warn("We slept " + slept + "ms, ten times longer than scheduled: " +
|
LOG.warn("We slept " + slept + "ms, ten times longer than scheduled: " +
|
||||||
this.period);
|
this.period);
|
||||||
|
@ -82,6 +85,9 @@ public class Sleeper {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Recalculate waitTime.
|
||||||
|
woke = (woke == -1)? System.currentTimeMillis(): woke;
|
||||||
|
waitTime = this.period - (woke - startTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue