You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:09:20 UTC
svn commit: r1181448 -
/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
Author: nspiegelberg
Date: Tue Oct 11 02:09:19 2011
New Revision: 1181448
URL: http://svn.apache.org/viewvc?rev=1181448&view=rev
Log:
HBASE-3241 & HBASE-3239: log rolling fixes
Summary:
* incorrect check could cause hbase.regionserver.maxlogs to be violated.
* NPE during log roll
Test Plan:
unit tests (running them right now).
DiffCamp Revision: 183416
Reviewed By: nspiegelberg
Commenters: pkhemani
CC: nspiegelberg, pkhemani, hbase@lists
Revert Plan:
OK
Modified:
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java?rev=1181448&r1=1181447&r2=1181448&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java Tue Oct 11 02:09:19 2011
@@ -592,19 +592,22 @@ public class HLog implements Syncable {
// If too many log files, figure which regions we need to flush.
byte [][] regions = null;
- int logCount = this.outputfiles.size() - logsToRemove;
+ int logCount = this.outputfiles.size();
if (logCount > this.maxLogs && this.outputfiles != null &&
this.outputfiles.size() > 0) {
regions = findMemstoresWithEditsEqualOrOlderThan(this.outputfiles.firstKey(),
this.lastSeqWritten);
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < regions.length; i++) {
- if (i > 0) sb.append(", ");
- sb.append(Bytes.toStringBinary(regions[i]));
- }
- LOG.info("Too many hlogs: logs=" + logCount + ", maxlogs=" +
- this.maxLogs + "; forcing flush of " + regions.length + " regions(s): " +
- sb.toString());
+
+ if (regions != null) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < regions.length; i++) {
+ if (i > 0) sb.append(", ");
+ sb.append(Bytes.toStringBinary(regions[i]));
+ }
+ LOG.info("Too many hlogs: logs=" + logCount + ", maxlogs=" +
+ this.maxLogs + "; forcing flush of " + regions.length + " regions(s): " +
+ sb.toString());
+ }
}
return regions;
}