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

Enis Soztutar commented on HBASE-17754:
---------------------------------------

bq. We should keep the unit test. client-test is like system test.
The test is back in v3. Some changes were needed to remove some unneeded 
mocking. The MockAsyncConnection turned out to be causing problems with the 
linker when extending the base interface, so I've ended up extending 
AsyncConncetionImpl instead. 
bq. Why do we need the std::pair? Can we simplify this?
Ok, sorry for the confusion. I had added that as a quick way to test the theory 
that the Caller goes out of scope, so the Promise object that the Caller owns 
is deallocated. This causes the "broken promise" result that we were debugging 
earlier. Turns out that the theory is right that since we are capturing by 
{{[&,this]}} in almost all of the lambda in the Caller implementation, the 
Caller object should not be deallocated before all of the lamdbas are executed. 
Now, when RawAsyncTable creates the caller object, and returns the Future, we 
are still injecting the Caller into the Future so that we will keep a reference 
around. 
For 3 and 4, offline conversation, the patch seems correct. 

> [C++] RawAsyncTable
> -------------------
>
>                 Key: HBASE-17754
>                 URL: https://issues.apache.org/jira/browse/HBASE-17754
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Enis Soztutar
>            Assignee: Enis Soztutar
>         Attachments: hbase-17754_v0.patch, hbase-17754_v1.patch, 
> hbase-17754-v2.patch, hbase-17754-v3.patch
>
>
> We need RawAsyncTable to connect {{table.h}} to the async retrying callers. 



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

Reply via email to