[ https://issues.apache.org/jira/browse/HBASE-18078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16025812#comment-16025812 ]
Xiaobing Zhou commented on HBASE-18078: --------------------------------------- Posted v0 patch to handle connection related issues, such as timeout. The idea is to catch and propagate ConnectionException up. Therefore, from bottom of stack, whatever issues from establishing connection (i.e. Wangle pipeline) will be folly::AsyncSocketException wrapped within ConnectionException. Note that there's no way to set socket options in Wangle ClientBootstrap, but fortunately, ClientBootstrap::connect supports setting our own timeout which is enough for now. See also ConnectionFactory::Connect {code} try { /* any connection error (e.g. timeout) will be folly::AsyncSocketException */ auto pipeline = client->connect( SocketAddress(hostname, port, true), std::chrono::duration_cast<milliseconds>(connect_timeout_)).get(); auto dispatcher = std::make_shared<ClientDispatcher>(); dispatcher->setPipeline(pipeline); promise.setValue(dispatcher); } catch(const folly::AsyncSocketException &e) { promise.setException( folly::make_exception_wrapper<hbase::ConnectionException>( folly::make_exception_wrapper<folly::AsyncSocketException>(e))); } {code} > [C++] Harden RPC by handling various communication abnormalities > ---------------------------------------------------------------- > > Key: HBASE-18078 > URL: https://issues.apache.org/jira/browse/HBASE-18078 > Project: HBase > Issue Type: Sub-task > Reporter: Xiaobing Zhou > Assignee: Xiaobing Zhou > Attachments: HBASE-18078.000.patch > > > RPC layer should handle various communication abnormalities (e.g. connection > timeout, server aborted connection, and so on). Ideally, the corresponding > exceptions should be raised and propagated through handlers of pipeline in > client. -- This message was sent by Atlassian JIRA (v6.3.15#6346)