[
https://issues.apache.org/jira/browse/HBASE-18578?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Enis Soztutar updated HBASE-18578:
--
Attachment: hbase-18578-v2.patch
[~xiaobingo] you are getting broken promise, because if a promise is left
unfulfilled at the time of the destruction, then the future throws broken
promise, the code is here:
https://github.com/facebook/folly/blob/master/folly/futures/detail/Core.h#L210.
The problem is that in the test for the pause RPC, the test does and async RPC,
but does not wait on the returned Future in v1 patch, and instead goes ahead
and stops the server which then causes the RPC Client pipeline to the
destructed. Since the RPC takes 500ms, it always fails because server and
pipeline is destructed. The patch at HBASE-18204 solves the broken promise
problem because at the time of pipeline destruction, we already fulfill the
promises from the client-dispatcher. I've tested the patch with this patch, and
it is doing the expected behavior.
The fix to the test is calling Future.get() before stopping the server.
Attaching v2.
> [C++] Add pause for RPC test
>
>
> Key: HBASE-18578
> URL: https://issues.apache.org/jira/browse/HBASE-18578
> Project: HBase
> Issue Type: Sub-task
>Reporter: Xiaobing Zhou
> Attachments: HBASE-18578.000.patch, hbase-18578-v2.patch
>
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)