[ 
https://issues.apache.org/jira/browse/HBASE-9683?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13781578#comment-13781578
 ] 

Chao Shi commented on HBASE-9683:
---------------------------------

bq. This breaks wire compat correct ?

No. The goal of this patch is to add trace support without breaking wire 
compatibility. This is a little bit tricky. It appends 1 boolean + 2 longs to 
Invocation. There are two cases (I've tested manually):

1) old client + new server:
There is no appended trace info, so we will get EOFException in 
readTraceInfo(). It saliently ignore it and return null, effectively performing 
no tracing at server side.

2) new client + old server:
The client sends request with trace info. The server has no knowledge on this. 
It will stop reading just after parameters. Not that this unread bytes should 
have no side effects, as in the data buffer is preceded by its length (in fact, 
the input stream is a ByteArrayInputStream, and any remaining bytes are 
discarded, see HBaseServer#processData).

bq. Also there are much newer versions of HTrace that have change the user 
facing api, and added some perf gains. So my preference would be to use 2.0.1 
if we even want this in 0.94

Oh, I didn't notice trunk has update on it. Let me make another patch. As 
maintaining wire compatibility is so important here. I'd like to ask you guys 
to review if there is anything missing.

>  Port HTrace support to 0.94
> ----------------------------
>
>                 Key: HBASE-9683
>                 URL: https://issues.apache.org/jira/browse/HBASE-9683
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Chao Shi
>         Attachments: hbase-9683.patch
>
>
> Port HTrace (HBASE-6524) to 0.94. This patch includes a wire-format change on 
> writable RPC. It serializes the traceID and spanID in class Invocation. This 
> should be compatible with old versions.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to