From f56025130be510dea44103b155b484f39074d69f Mon Sep 17 00:00:00 2001 From: Benoit Sigoure Date: Sun, 22 Jan 2012 19:16:56 -0800 Subject: [PATCH] Use singletons to remove unnecessary memory allocation. --- .../apache/hadoop/hbase/regionserver/HRegion.java | 11 ++++------- .../hadoop/hbase/regionserver/OperationStatus.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index c7cc402..af5661b 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1907,8 +1907,7 @@ public class HRegion implements HeapSize { // , Writable{ 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 { // , Writable{ 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 { // , Writable{ != 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 { // , Writable{ 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; } } } diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java b/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java index b6f7456..11a558a 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java @@ -30,6 +30,18 @@ import org.apache.hadoop.hbase.HConstants.OperationStatusCode; */ public class OperationStatus { + /** Singleton for successful operations. */ + static final OperationStatus SUCCESS = + new OperationStatus(OperationStatusCode.SUCCESS); + + /** 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 OperationStatusCode code; private String exceptionMsg; -- 1.7.9.rc0.24.ga04fb