You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2014/04/02 23:11:04 UTC

svn commit: r1584193 - in /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase: ipc/thrift/HBaseToThriftAdapter.java ipc/thrift/ThriftCallStatsReporter.java util/Bytes.java

Author: liyin
Date: Wed Apr  2 21:11:04 2014
New Revision: 1584193

URL: http://svn.apache.org/r1584193
Log:
[HBASE-9930] Change encoding/decoding header from hex to string64

Author: adela

Summary:
We can only send string in the header - so initially we were sending hexString,
changing it to string64 to be more performant

Test Plan:
ran
- TestPerRequestProfiling
- TestHeaderSendReceive

Reviewers: manukranthk, gauravm, fan

Reviewed By: manukranthk

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D1251672

Task ID: 3548223

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/HBaseToThriftAdapter.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/ThriftCallStatsReporter.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/util/Bytes.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/HBaseToThriftAdapter.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/HBaseToThriftAdapter.java?rev=1584193&r1=1584192&r2=1584193&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/HBaseToThriftAdapter.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/HBaseToThriftAdapter.java Wed Apr  2 21:11:04 2014
@@ -213,7 +213,7 @@ public class HBaseToThriftAdapter implem
       headerTransport.clearHeaders();
       String dataString = headerTransport.getReadHeaders().get(HConstants.THRIFT_HEADER_FROM_SERVER);
       if (dataString != null) {
-        byte[] dataBytes = Bytes.hexToBytes(dataString);
+        byte[] dataBytes = Bytes.string64ToBytes(dataString);
         try {
           Call call = Bytes.readThriftBytes(dataBytes, Call.class);
           this.options.profilingResult = call.getProfilingData();

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/ThriftCallStatsReporter.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/ThriftCallStatsReporter.java?rev=1584193&r1=1584192&r2=1584193&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/ThriftCallStatsReporter.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/thrift/ThriftCallStatsReporter.java Wed Apr  2 21:11:04 2014
@@ -459,13 +459,12 @@ public class ThriftCallStatsReporter ext
       String dataString = headerTransport.getReadHeaders().get(
           HConstants.THRIFT_HEADER_FROM_CLIENT);
       if (dataString != null) {
-        byte[] dataBytes = Bytes.hexToBytes(dataString);
+        byte[] dataBytes = Bytes.string64ToBytes(dataString);
         try {
           Call call = Bytes.readThriftBytes(dataBytes, Call.class);
           return call;
         } catch (Exception e) {
-          e.printStackTrace();
-          LOG.error("Deserialization of the call header didn't succeed.");
+          LOG.error("Deserialization of the call header didn't succeed.", e);
         }
       }
     } else {

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/util/Bytes.java?rev=1584193&r1=1584192&r2=1584193&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/util/Bytes.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/util/Bytes.java Wed Apr  2 21:11:04 2014
@@ -520,6 +520,15 @@ public class Bytes {
     return data;
   }
 
+  public static byte[] string64ToBytes(String s) {
+    return Base64.decode(s);
+  }
+
+  public static String bytesToString64(byte[] bytes, int offset, int length) {
+    return Base64.encodeBytes(bytes, offset, length);
+  }
+
+
   /**
    * Convert a boolean to a byte array. True becomes -1
    * and false becomes 0.
@@ -1868,8 +1877,7 @@ public class Bytes {
   public static <T> String writeThriftBytesAndGetString(T t, Class<T> clazz)
     throws Exception {
     TMemoryBuffer buffer = writeThriftBytesAndGetBuffer(t, clazz);
-    return Bytes.bytesToHex(buffer.getArray(), 0, buffer.length());
-
+    return bytesToString64(buffer.getArray(), 0, buffer.length());
   }
 
   /**