You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Xiaobing Zhou (JIRA)" <ji...@apache.org> on 2017/03/15 20:00:44 UTC
[jira] [Comment Edited] (HBASE-17754) [C++] RawAsyncTable
[ https://issues.apache.org/jira/browse/HBASE-17754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15926857#comment-15926857 ]
Xiaobing Zhou edited comment on HBASE-17754 at 3/15/17 8:00 PM:
----------------------------------------------------------------
Thanks for the new patch.
# We should keep the unit test. client-test is like system test.
# I was referring this
{noformat}
std::pair<std::shared_ptr<AsyncSingleRequestRpcRetryingCaller<std::shared_ptr<Result>>>,
Future<std::shared_ptr<Result>>> Get(const hbase::Get& get);
{noformat}
Why do we need the std::pair? Can we simplify this?
# This is the sequence of call
{noformat}
template <typename RESP>
std::shared_ptr<SingleRequestCallerBuilder<RESP>> RawAsyncTable::CreateCallerBuilder
{noformat}
returns builder, and builder->build() returns AsyncSingleRequestRpcRetryingCaller<RESP>,
then AsyncSingleRequestRpcRetryingCaller<RESP>.call() returns RESP which is the hbase::Result.
{noformat}
# you may need to do cast like this, std::shared_ptr itself is agnostic of polymorphism of the enclosed type.
115 std::shared_ptr<RpcChannel> RpcClient::CreateRpcChannel(const std::string &host,
116 uint16_t port, std::shared_ptr<User> ticket, int rpc_timeout) {
117
118 std::shared_ptr<RpcChannelImplementation> channel = std::make_shared<
119 RpcChannelImplementation>(shared_from_this(), host, port, ticket,
120 rpc_timeout);
121
122 /* static_pointer_cast is safe since RpcChannelImplementation derives
123 * from RpcChannel, otherwise, dynamic_pointer_cast should be used. */
124 return std::static_pointer_cast<RpcChannel>(channel);
125 }
Otherwise, v2 looks fine.
was (Author: xiaobingo):
Thanks for the new patch.
# We should keep the unit test. client-test is like system test.
# I was referring this
{noformat}
std::pair<std::shared_ptr<AsyncSingleRequestRpcRetryingCaller<std::shared_ptr<Result>>>,
Future<std::shared_ptr<Result>>> Get(const hbase::Get& get);
{noformat}
Why do we need the std::pair? Can we simplify this?
# This is the sequence of call
{noformat}
template <typename RESP>
std::shared_ptr<SingleRequestCallerBuilder<RESP>> RawAsyncTable::CreateCallerBuilder
{noformat}
returns builder, and builder->build() returns AsyncSingleRequestRpcRetryingCaller<RESP>,
then AsyncSingleRequestRpcRetryingCaller<RESP>.call() returns RESP which is the hbase::Result.
{noformat}
# you may need to do cast like this, std::shared_ptr itself is agnostic of polymorphism of the enclosed type.
115 std::shared_ptr<RpcChannel> RpcClient::CreateRpcChannel(const std::string &host,
116 uint16_t port, std::shared_ptr<User> ticket, int rpc_timeout) {
117
118 std::shared_ptr<RpcChannelImplementation> channel = std::make_shared<
119 RpcChannelImplementation>(shared_from_this(), host, port, ticket,
120 rpc_timeout);
121
122 /* static_pointer_cast is safe since RpcChannelImplementation derives
123 * from RpcChannel, otherwise, dynamic_pointer_cast should be used. */
124 return std::static_pointer_cast<RpcChannel>(channel);
125 }
Otherwise, v2 looks fine.
> [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
>
>
> We need RawAsyncTable to connect {{table.h}} to the async retrying callers.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)