HBASE-440 Add optional log roll interval so that log files are garbage collected
git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@627152 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ef9a7c1017
commit
8b2c345d4c
|
@ -44,6 +44,8 @@ Hbase Change Log
|
|||
HBASE-436 website: http://hadoop.apache.org/hbase
|
||||
HBASE-417 Factor TableOperation and subclasses into separate files from
|
||||
HMaster (Bryan Duxbury via Stack)
|
||||
HBASE-440 Add optional log roll interval so that log files are garbage
|
||||
collected
|
||||
|
||||
|
||||
Branch 0.1
|
||||
|
|
|
@ -155,6 +155,16 @@
|
|||
Default: 30 minutes (in miliseconds)
|
||||
</description>
|
||||
</property>
|
||||
<property>
|
||||
<name>hbase.regionserver.optionallogrollinterval</name>
|
||||
<value>1800000</value>
|
||||
<description>
|
||||
Amount of time to wait since the last time a the region server's log was
|
||||
rolled before invoking an optional log roll (An optional log roll is a
|
||||
one in which the log does not contain hbase.regionserver.maxlogentries).
|
||||
Default: 30 minutes (in miliseconds)
|
||||
</description>
|
||||
</property>
|
||||
<property>
|
||||
<name>hbase.hregion.memcache.flush.size</name>
|
||||
<value>67108864</value>
|
||||
|
|
|
@ -508,12 +508,17 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
|||
/** Runs periodically to determine if the HLog should be rolled */
|
||||
class LogRoller extends Thread implements LogRollListener {
|
||||
private final Integer rollLock = new Integer(0);
|
||||
private final long optionalLogRollInterval;
|
||||
private long lastLogRollTime;
|
||||
private volatile boolean rollLog;
|
||||
|
||||
/** constructor */
|
||||
public LogRoller() {
|
||||
super();
|
||||
this.optionalLogRollInterval = conf.getLong(
|
||||
"hbase.regionserver.optionallogrollinterval", 30L * 60L * 1000L);
|
||||
this.rollLog = false;
|
||||
lastLogRollTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
|
@ -521,6 +526,11 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
|||
public void run() {
|
||||
while (!stopRequested.get()) {
|
||||
while (!rollLog && !stopRequested.get()) {
|
||||
long now = System.currentTimeMillis();
|
||||
if (this.lastLogRollTime + this.optionalLogRollInterval <= now) {
|
||||
rollLog = true;
|
||||
this.lastLogRollTime = now;
|
||||
} else {
|
||||
synchronized (rollLock) {
|
||||
try {
|
||||
rollLock.wait(threadWakeFrequency);
|
||||
|
@ -530,6 +540,7 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!rollLog) {
|
||||
// There's only two reasons to break out of the while loop.
|
||||
// 1. Log roll requested
|
||||
|
|
Loading…
Reference in New Issue