You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2009/05/18 08:10:06 UTC
svn commit: r775824 - in /hadoop/hbase/trunk: CHANGES.txt
src/java/org/apache/hadoop/hbase/regionserver/HLog.java
src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
Author: apurtell
Date: Mon May 18 06:10:06 2009
New Revision: 775824
URL: http://svn.apache.org/viewvc?rev=775824&view=rev
Log:
HBASE-1401 close HLog (and open new one) if there hasnt been edits in N minutes/hours; back out changes
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=775824&r1=775823&r2=775824&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Mon May 18 06:10:06 2009
@@ -256,8 +256,6 @@
HLog#append?)
HBASE-1429 Allow passing of a configuration object to HTablePool
HBASE-1432 LuceneDocumentWrapper is not public
- HBASE-1401 close HLog (and open new one) if there hasnt been edits in N
- minutes/hours
OPTIMIZATIONS
HBASE-1412 Change values for delete column and column family in KeyValue
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java?rev=775824&r1=775823&r2=775824&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HLog.java Mon May 18 06:10:06 2009
@@ -132,6 +132,7 @@
private final AtomicLong logSeqNum = new AtomicLong(0);
private volatile long filenum = -1;
+ private volatile long old_filenum = -1;
private final AtomicInteger numEntries = new AtomicInteger(0);
@@ -273,10 +274,6 @@
* @throws IOException
*/
public byte [] rollWriter() throws FailedLogCloseException, IOException {
- // Return if nothing to flush.
- if (this.writer != null && this.numEntries.get() <= 0) {
- return null;
- }
byte [] regionToFlush = null;
this.cacheFlushLock.lock();
try {
@@ -286,6 +283,9 @@
synchronized (updateLock) {
// Clean up current writer.
Path oldFile = cleanupCurrentWriter(this.filenum);
+ if (this.filenum >= 0) {
+ this.old_filenum = this.filenum;
+ }
this.filenum = System.currentTimeMillis();
Path newPath = computeFilename(this.filenum);
this.writer = SequenceFile.createWriter(this.fs, this.conf, newPath,
@@ -587,7 +587,7 @@
}
}
}
-
+
private void requestLogRoll() {
if (this.listener != null) {
this.listener.logRollRequested();
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java?rev=775824&r1=775823&r2=775824&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/LogRoller.java Mon May 18 06:10:06 2009
@@ -40,32 +40,17 @@
private final ReentrantLock rollLock = new ReentrantLock();
private final AtomicBoolean rollLog = new AtomicBoolean(false);
private final HRegionServer server;
- private volatile long lastrolltime = System.currentTimeMillis();
- // Period to roll log.
- private final long rollperiod;
-
+
/** @param server */
public LogRoller(final HRegionServer server) {
super();
this.server = server;
- this.rollperiod =
- this.server.conf.getLong("hbase.regionserver.logroll.period", 3600000);
}
@Override
public void run() {
while (!server.isStopRequested()) {
- long now = System.currentTimeMillis();
- boolean periodic = false;
if (!rollLog.get()) {
- periodic = (now - this.lastrolltime) < this.rollperiod;
- if (periodic) {
- // Time for periodic roll
- if (LOG.isDebugEnabled()) {
- LOG.debug("Hlog roll period " + this.rollperiod + "ms elapsed");
- }
- break;
- }
synchronized (rollLog) {
try {
rollLog.wait(server.threadWakeFrequency);
@@ -77,7 +62,6 @@
}
rollLock.lock(); // Don't interrupt us. We're working
try {
- this.lastrolltime = now;
byte [] regionToFlush = server.getLog().rollWriter();
if (regionToFlush != null) {
scheduleFlush(regionToFlush);
@@ -106,7 +90,7 @@
}
LOG.info("LogRoller exiting.");
}
-
+
private void scheduleFlush(final byte [] region) {
boolean scheduled = false;
HRegion r = this.server.getOnlineRegion(region);
@@ -130,7 +114,7 @@
rollLog.notifyAll();
}
}
-
+
/**
* Called by region server to wake up this thread if it sleeping.
* It is sleeping if rollLock is not held.
@@ -143,4 +127,4 @@
rollLock.unlock();
}
}
-}
\ No newline at end of file
+}