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

Jurriaan Mous commented on HBASE-12684:
---------------------------------------

If I am correct revision 7 == v13. So review should be the same. If I check 
revision 7 I see the changes I did in the last patch.

bq. Its a long-standing problem that we have had that you can't say retry for 
10 seconds and then give up.. its always been retry N times and then give up 
(it has been improving of late but as far as I know, we don't yet have cutoff 
at 10 seconds implemented – could be wrong here)

This is the retry for connect failures. It sleeps with amount in 
hbase.client.pause before trying to reconnect. Connect currently works with the 
retries * sleeptime method. And connect only happens once on Channel creation. 
Should I change it to include a max connect timeout?

After connection each operation has its own operation timeout which can be 
overridden and is the total time of operation.

bq. Is HBASE_CLIENT_OPERATION_TIMEOUT the global timeout?

It is for all normal calls and is the total time to timeout. Anything scan 
related uses HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD.

bq. The patch is not removing the old client because it is possible to select 
one or the other? (Can remove in another patch?)

Yes I am currently keeping both to have the option to make them configurable if 
AsyncRpcClient is wanted on the 1.x branch as an experimental Rpc Channel. But 
maybe if AsyncRpcClient is considered stable enough, RpcClientImpl and all 
related classes can be deleted. I can submit a separate patch in this issue 
when AsyncRpcClient is done.

bq.  Doing the below is convenience? 54 ByteBufInputStream in = new 
ByteBufInputStream(inBuffer);

ByteBuf does not implement InputStream. The protobuf writers need an 
InputStream to write to. So it was a necessary evil.. I would have preferred to 
do without it.

{quote}

RpcServer is doing this:
46      import java.util.*;
So is TestIPC.

{quote}

Will fix it, seems to have slipped in before I fixed my IDE its import settings.

bq. How comes we are an async client but we are doing callBlockingMethod still? 
Should we be doing RpcChannel rather than BlockingRpcChannel (or is this 
something we do after we get all this in)?

I have not included an RpcChannel implementation at this time since it is not 
used in any place. I could include it with a simple test to ensure it works. 
But it cannot be used while RpcClientImpl exists since that client cannot 
support it.

> Add new AsyncRpcClient
> ----------------------
>
>                 Key: HBASE-12684
>                 URL: https://issues.apache.org/jira/browse/HBASE-12684
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>         Attachments: HBASE-12684-v1.patch, HBASE-12684-v10.patch, 
> HBASE-12684-v11.patch, HBASE-12684-v12.patch, HBASE-12684-v13.patch, 
> HBASE-12684-v2.patch, HBASE-12684-v3.patch, HBASE-12684-v4.patch, 
> HBASE-12684-v5.patch, HBASE-12684-v6.patch, HBASE-12684-v7.patch, 
> HBASE-12684-v8.patch, HBASE-12684-v9.patch, HBASE-12684.patch
>
>
> With the changes in HBASE-12597 it is possible to add new RpcClients. This 
> issue is about adding a new Async RpcClient which would enable HBase to do 
> non blocking protobuf service communication.
> Besides delivering a new AsyncRpcClient I would also like to ask the question 
> what it would take to replace the current RpcClient? This would enable to 
> simplify async code in some next issues.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to