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/23 22:56:46 UTC

svn commit: r1235016 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java

Author: tedyu
Date: Mon Jan 23 21:56:45 2012
New Revision: 1235016

URL: http://svn.apache.org/viewvc?rev=1235016&view=rev
Log:
HBASE-5255  Use singletons for OperationStatus to save memory (Benoit)

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1235016&r1=1235015&r2=1235016&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Mon Jan 23 21:56:45 2012
@@ -10,11 +10,12 @@ Release 0.92.1 - Unreleased
    HBASE-5235  HLogSplitter writer thread's streams not getting closed when any 
                of the writer threads has exceptions. (Ram)
    HBASE-5243  LogSyncerThread not getting shutdown waiting for the interrupted flag (Ram)
+   HBASE-5255  Use singletons for OperationStatus to save memory (Benoit)
 
   TESTS
    HBASE-5223  TestMetaReaderEditor is missing call to CatalogTracker.stop()
 
-Release 0.92.0 - Unreleased
+Release 0.92.0 - 01/23/2012
   INCOMPATIBLE CHANGES
    HBASE-2002  Coprocessors: Client side support; Support RPC interface
                changes at runtime (Gary Helmling via Andrew Purtell)

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1235016&r1=1235015&r2=1235016&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Mon Jan 23 21:56:45 2012
@@ -1907,8 +1907,7 @@ public class HRegion implements HeapSize
     public BatchOperationInProgress(T[] operations) {
       this.operations = operations;
       this.retCodeDetails = new OperationStatus[operations.length];
-      Arrays.fill(this.retCodeDetails, new OperationStatus(
-          OperationStatusCode.NOT_RUN));
+      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);
     }
 
     public boolean isDone() {
@@ -1983,8 +1982,7 @@ public class HRegion implements HeapSize
         if (coprocessorHost.prePut(put, walEdit, put.getWriteToWAL())) {
           // pre hook says skip this Put
           // mark as success and skip below
-          batchOp.retCodeDetails[i] = new OperationStatus(
-              OperationStatusCode.SUCCESS);
+          batchOp.retCodeDetails[i] = OperationStatus.SUCCESS;
         }
       }
     }
@@ -2127,7 +2125,7 @@ public class HRegion implements HeapSize
             != OperationStatusCode.NOT_RUN) {
           continue;
         }
-        batchOp.retCodeDetails[i] = new OperationStatus(OperationStatusCode.SUCCESS);
+        batchOp.retCodeDetails[i] = OperationStatus.SUCCESS;
 
         Put p = batchOp.operations[i].getFirst();
         if (!p.getWriteToWAL()) continue;
@@ -2218,8 +2216,7 @@ public class HRegion implements HeapSize
       if (!success) {
         for (int i = firstIndex; i < lastIndexExclusive; i++) {
           if (batchOp.retCodeDetails[i].getOperationStatusCode() == OperationStatusCode.NOT_RUN) {
-            batchOp.retCodeDetails[i] = new OperationStatus(
-                OperationStatusCode.FAILURE);
+            batchOp.retCodeDetails[i] = OperationStatus.FAILURE;
           }
         }
       }

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java?rev=1235016&r1=1235015&r2=1235016&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java Mon Jan 23 21:56:45 2012
@@ -30,9 +30,21 @@ import org.apache.hadoop.hbase.HConstant
  */
 public class OperationStatus {
 
-  private OperationStatusCode code;
+  /** Singleton for successful operations.  */
+  static final OperationStatus SUCCESS =
+    new OperationStatus(OperationStatusCode.SUCCESS);
 
-  private String exceptionMsg;
+  /** Singleton for failed operations.  */
+  static final OperationStatus FAILURE =
+    new OperationStatus(OperationStatusCode.FAILURE);
+
+  /** Singleton for operations not yet run.  */
+  static final OperationStatus NOT_RUN =
+    new OperationStatus(OperationStatusCode.NOT_RUN);
+
+  private final OperationStatusCode code;
+
+  private final String exceptionMsg;
 
   public OperationStatus(OperationStatusCode code) {
     this(code, "");