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-436 website: http://hadoop.apache.org/hbase
|
||||||
HBASE-417 Factor TableOperation and subclasses into separate files from
|
HBASE-417 Factor TableOperation and subclasses into separate files from
|
||||||
HMaster (Bryan Duxbury via Stack)
|
HMaster (Bryan Duxbury via Stack)
|
||||||
|
HBASE-440 Add optional log roll interval so that log files are garbage
|
||||||
|
collected
|
||||||
|
|
||||||
|
|
||||||
Branch 0.1
|
Branch 0.1
|
||||||
|
|
|
@ -155,6 +155,16 @@
|
||||||
Default: 30 minutes (in miliseconds)
|
Default: 30 minutes (in miliseconds)
|
||||||
</description>
|
</description>
|
||||||
</property>
|
</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>
|
<property>
|
||||||
<name>hbase.hregion.memcache.flush.size</name>
|
<name>hbase.hregion.memcache.flush.size</name>
|
||||||
<value>67108864</value>
|
<value>67108864</value>
|
||||||
|
|
|
@ -508,12 +508,17 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
||||||
/** Runs periodically to determine if the HLog should be rolled */
|
/** Runs periodically to determine if the HLog should be rolled */
|
||||||
class LogRoller extends Thread implements LogRollListener {
|
class LogRoller extends Thread implements LogRollListener {
|
||||||
private final Integer rollLock = new Integer(0);
|
private final Integer rollLock = new Integer(0);
|
||||||
|
private final long optionalLogRollInterval;
|
||||||
|
private long lastLogRollTime;
|
||||||
private volatile boolean rollLog;
|
private volatile boolean rollLog;
|
||||||
|
|
||||||
/** constructor */
|
/** constructor */
|
||||||
public LogRoller() {
|
public LogRoller() {
|
||||||
super();
|
super();
|
||||||
|
this.optionalLogRollInterval = conf.getLong(
|
||||||
|
"hbase.regionserver.optionallogrollinterval", 30L * 60L * 1000L);
|
||||||
this.rollLog = false;
|
this.rollLog = false;
|
||||||
|
lastLogRollTime = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
|
@ -521,6 +526,11 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
||||||
public void run() {
|
public void run() {
|
||||||
while (!stopRequested.get()) {
|
while (!stopRequested.get()) {
|
||||||
while (!rollLog && !stopRequested.get()) {
|
while (!rollLog && !stopRequested.get()) {
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
if (this.lastLogRollTime + this.optionalLogRollInterval <= now) {
|
||||||
|
rollLog = true;
|
||||||
|
this.lastLogRollTime = now;
|
||||||
|
} else {
|
||||||
synchronized (rollLock) {
|
synchronized (rollLock) {
|
||||||
try {
|
try {
|
||||||
rollLock.wait(threadWakeFrequency);
|
rollLock.wait(threadWakeFrequency);
|
||||||
|
@ -530,6 +540,7 @@ public class HRegionServer implements HConstants, HRegionInterface, Runnable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!rollLog) {
|
if (!rollLog) {
|
||||||
// There's only two reasons to break out of the while loop.
|
// There's only two reasons to break out of the while loop.
|
||||||
// 1. Log roll requested
|
// 1. Log roll requested
|
||||||
|
|
Loading…
Reference in New Issue