[ 
https://issues.apache.org/jira/browse/HBASE-17576?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sudeep Sunthankar updated HBASE-17576:
--------------------------------------
    Attachment: HBASE-17576.HBASE-14850.v11.patch

Hi [~enis], Thanks for your feedback. The attached patch consists of the foll 
changes    

* As suggested, I removed the get() while getting region location and making an 
async call as it was not asynchronous. But, on dong this the functions were 
returning instantly and the lambdas were not satisfied. I suspect, the duration 
in operation_timeout() in table.cc is not large enough and the call to get() 
doesn't wait long enough.. To test this, I turned on the glog logging, and due 
to the time taken for file i/o, the lambdas had some time to execute, but it 
was still not big enough. So before inserting the lambdas, I'm calling 
folly::Future::wait() and this ensures that the lambdas are executed. But, I'm 
still skeptical whether this is the correct thing to do as we are waiting for 
some 'x' amount of time in ms before the callbacks are executed. Need your 
further guidance on that part.
* RawAsyncTable::Get() for multi requests now returns a 
Future<vector<std::shared_ptr<Result>>>.
* action2promises_ in async-batch-rpc-retrying-caller.cc creates promises 
during construction and when AsyncBatchRpcRetryingCaller::Call() returns, we 
return those promises as a vector of futures.
* There was a regression in last couple of patches where ActionsByServer was 
changed to std::map from std::unordered_map. Have fixed that as well in this 
patch.

Thanks

> [C++] Implement request retry mechanism over RPC for Multi calls.
> -----------------------------------------------------------------
>
>                 Key: HBASE-17576
>                 URL: https://issues.apache.org/jira/browse/HBASE-17576
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Sudeep Sunthankar
>            Assignee: Sudeep Sunthankar
>         Attachments: HBASE-17576.HBASE-14850.v10.patch, 
> HBASE-17576.HBASE-14850.v11.patch, HBASE-17576.HBASE-14850.v1.patch, 
> HBASE-17576.HBASE-14850.v2.patch, HBASE-17576.HBASE-14850.v3.patch, 
> HBASE-17576.HBASE-14850.v4.patch, HBASE-17576.HBASE-14850.v5.patch, 
> HBASE-17576.HBASE-14850.v6.patch, HBASE-17576.HBASE-14850.v7.patch, 
> HBASE-17576.HBASE-14850.v8.patch, HBASE-17576.HBASE-14850.v9.patch
>
>
> This work is based on top of HBASE-17465. Multi Calls will be based on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to