You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2016/09/29 06:56:47 UTC

[02/50] [abbrv] hbase git commit: Revert "HBASE-16880 Reduce garbage in BufferChain (binlijin)" to fix JIRA number

Revert "HBASE-16880 Reduce garbage in BufferChain (binlijin)" to fix JIRA number

This reverts commit ce493642c0e295a08701cdcfe3ddc6755cdd7718.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/96c5a022
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/96c5a022
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/96c5a022

Branch: refs/heads/hbase-14439
Commit: 96c5a02217c5e0f89983ca216915b88ea07c175e
Parents: 07ed155
Author: Yu Li <li...@apache.org>
Authored: Fri Sep 23 11:03:21 2016 +0800
Committer: Yu Li <li...@apache.org>
Committed: Fri Sep 23 11:03:21 2016 +0800

----------------------------------------------------------------------
 .../apache/hadoop/hbase/ipc/BufferChain.java    | 17 ++++++++++--
 .../org/apache/hadoop/hbase/ipc/RpcServer.java  | 29 ++++++--------------
 2 files changed, 23 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/96c5a022/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java
index 26bc56c..7adc94d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java
@@ -20,6 +20,8 @@ package org.apache.hadoop.hbase.ipc;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.channels.GatheringByteChannel;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
 
@@ -33,11 +35,22 @@ class BufferChain {
   private int remaining = 0;
   private int bufferOffset = 0;
 
-  BufferChain(ByteBuffer[] buffers) {
+  BufferChain(ByteBuffer ... buffers) {
+    // Some of the incoming buffers can be null
+    List<ByteBuffer> bbs = new ArrayList<ByteBuffer>(buffers.length);
     for (ByteBuffer b : buffers) {
+      if (b == null) continue;
+      bbs.add(b);
       this.remaining += b.remaining();
     }
-    this.buffers = buffers;
+    this.buffers = bbs.toArray(new ByteBuffer[bbs.size()]);
+  }
+
+  BufferChain(List<ByteBuffer> buffers) {
+    for (ByteBuffer b : buffers) {
+      this.remaining += b.remaining();
+    }
+    this.buffers = buffers.toArray(new ByteBuffer[buffers.size()]);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/96c5a022/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
index 0dbaf04..12c21d9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
@@ -411,9 +411,7 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
     }
 
     protected synchronized void setSaslTokenResponse(ByteBuffer response) {
-      ByteBuffer[] responseBufs = new ByteBuffer[1];
-      responseBufs[0] = response;
-      this.response = new BufferChain(responseBufs);
+      this.response = new BufferChain(response);
     }
 
     protected synchronized void setResponse(Object m, final CellScanner cells,
@@ -460,20 +458,10 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
         }
         Message header = headerBuilder.build();
         byte[] b = createHeaderAndMessageBytes(result, header, cellBlockSize);
-        ByteBuffer[] responseBufs = null;
-        int cellBlockBufferSize = 0;
-        if (cellBlock != null) {
-          cellBlockBufferSize = cellBlock.size();
-          responseBufs = new ByteBuffer[1 + cellBlockBufferSize];
-        } else {
-          responseBufs = new ByteBuffer[1];
-        }
-        responseBufs[0] = ByteBuffer.wrap(b);
-        if (cellBlock != null) {
-          for (int i = 0; i < cellBlockBufferSize; i++) {
-            responseBufs[i + 1] = cellBlock.get(i);
-          }
-        }
+        List<ByteBuffer> responseBufs = new ArrayList<ByteBuffer>(
+            (cellBlock == null ? 1 : cellBlock.size()) + 1);
+        responseBufs.add(ByteBuffer.wrap(b));
+        if (cellBlock != null) responseBufs.addAll(cellBlock);
         bc = new BufferChain(responseBufs);
         if (connection.useWrap) {
           bc = wrapWithSasl(bc);
@@ -567,10 +555,9 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
             + " as call response.");
       }
 
-      ByteBuffer[] responseBufs = new ByteBuffer[2];
-      responseBufs[0] = ByteBuffer.wrap(Bytes.toBytes(token.length));
-      responseBufs[1] = ByteBuffer.wrap(token);
-      return new BufferChain(responseBufs);
+      ByteBuffer bbTokenLength = ByteBuffer.wrap(Bytes.toBytes(token.length));
+      ByteBuffer bbTokenBytes = ByteBuffer.wrap(token);
+      return new BufferChain(bbTokenLength, bbTokenBytes);
     }
 
     @Override