You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/01/31 17:52:52 UTC

svn commit: r1238693 - /hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java

Author: tedyu
Date: Tue Jan 31 16:52:51 2012
New Revision: 1238693

URL: http://svn.apache.org/viewvc?rev=1238693&view=rev
Log:
HBASE-5290 [FindBugs] Synchronization on boxed primitive (Ben West)

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java?rev=1238693&r1=1238692&r2=1238693&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactSelection.java Tue Jan 31 16:52:51 2012
@@ -36,9 +36,18 @@ public class CompactSelection {
   // the actual list - this is needed to handle methods like "sublist"
   // correctly
   List<StoreFile> filesToCompact = new ArrayList<StoreFile>();
-  // number of off peak compactions either in the compaction queue or
-  // happening now
-  public static Integer numOutstandingOffPeakCompactions = 0;
+
+  /**
+   * Number of off peak compactions either in the compaction queue or
+   * happening now. Please lock compactionCountLock before modifying.
+   */
+  static long numOutstandingOffPeakCompactions = 0;
+
+  /**
+   * Lock object for numOutstandingOffPeakCompactions
+   */
+  private final static Object compactionCountLock = new Object();
+
   // HBase conf object
   Configuration conf;
   // was this compaction promoted to an off-peak
@@ -83,7 +92,7 @@ public class CompactSelection {
    */
   public double getCompactSelectionRatio() {
     double r = this.compactRatio;
-    synchronized(numOutstandingOffPeakCompactions) {
+    synchronized(compactionCountLock) {
       if (isOffPeakHour() && numOutstandingOffPeakCompactions == 0) {
         r = this.compactRatioOffPeak;
         numOutstandingOffPeakCompactions++;
@@ -104,7 +113,7 @@ public class CompactSelection {
    */
   public void finishRequest() {
     if (isOffPeakCompaction) {
-      synchronized(numOutstandingOffPeakCompactions) {
+      synchronized(compactionCountLock) {
         numOutstandingOffPeakCompactions--;
         isOffPeakCompaction = false;
       }
@@ -124,7 +133,7 @@ public class CompactSelection {
   public void emptyFileList() {
     filesToCompact.clear();
     if (isOffPeakCompaction) {
-      synchronized(numOutstandingOffPeakCompactions) {
+      synchronized(compactionCountLock) {
         // reset the off peak count
         numOutstandingOffPeakCompactions--;
         isOffPeakCompaction = false;