Author: stack
Date: Fri Jun 24 14:22:42 2011
New Revision: 1139320
URL: http://svn.apache.org/viewvc?rev=1139320&view=rev
Log:
HBASE-3969 Outdated data can not be cleaned in time
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hbase/branches/0.90/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1139320&r1=1139319&r2=1139320&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Fri Jun 24 14:22:42 2011
@@ -44,6 +44,7 @@ Release 0.90.4 - Unreleased
HBASE-2077 NullPointerException with an open scanner that expired causing
an immediate region server shutdown -- part 2.
HBASE-4005 close_region bugs
+ HBASE-3969 Outdated data can not be cleaned in time (zhoushuaifeng)
IMPROVEMENT
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1139320&r1=1139319&r2=1139320&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Fri Jun 24 14:22:42 2011
@@ -1032,12 +1032,23 @@ public class HRegionServer implements HR
*/
private static class MajorCompactionChecker extends Chore {
private final HRegionServer instance;
+ private int majorCompactPriority;
+ private final static int DEFAULT_PRIORITY = Integer.MAX_VALUE;
+
MajorCompactionChecker(final HRegionServer h, final int sleepTime,
final Stoppable stopper) {
super("MajorCompactionChecker", sleepTime, h);
this.instance = h;
LOG.info("Runs every " + sleepTime + "ms");
+
+ /*
+ * MajorCompactPriority is configurable.
+ * If not set, the compaction will use default priority.
+ */
+ majorCompactPriority = this.instance.conf.getInt(
+ "hbase.regionserver.compactionChecker.majorCompactPriority",
+ DEFAULT_PRIORITY);
}
@Override
@@ -1046,8 +1057,15 @@ public class HRegionServer implements HR
try {
if (r != null && r.isMajorCompaction()) {
// Queue a compaction. Will recognize if major is needed.
- this.instance.compactSplitThread.requestCompaction(r, getName()
- + " requests major compaction");
+ if(majorCompactPriority == DEFAULT_PRIORITY ||
+ majorCompactPriority > r.getCompactPriority()){
+ this.instance.compactSplitThread.requestCompaction(r, getName()
+ + " requests major compaction use default priority");
+ } else {
+ this.instance.compactSplitThread.requestCompaction(r,
getName()
+ + " requests major compaction use configured priority",
+ this.majorCompactPriority);
+ }
}
} catch (IOException e) {
LOG.warn("Failed major compaction check on " + r, e);