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());
}
/**