[
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)