[
https://issues.apache.org/jira/browse/GEODE-8847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17271714#comment-17271714
]
ASF subversion and git services commented on GEODE-8847:
--------------------------------------------------------
Commit 9a46e7d89918c192c3edd5ff57dbfee078419883 in geode-native's branch
refs/heads/develop from Alberto Gomez
[ https://gitbox.apache.org/repos/asf?p=geode-native.git;h=9a46e7d ]
GEODE-8847: Change boost::asio name resolution to synchronous (#726)
When creating a TCP connection and name resolution is needed, the
synchronous version of the boost::asio::ip::tcp::resolver class
is used instead of the asynchronous one.
The reason is that the asynchronous one does not offer any advantage
over the synchronous one because even if a timeout is set when
using the async one it is later required by the io_service to wait for the
thread launched by the asynchronous call to finish.
> Use boost::asio::ip::tcp::resolver::resolve method instead of the
> asynchronous one
> ----------------------------------------------------------------------------------
>
> Key: GEODE-8847
> URL: https://issues.apache.org/jira/browse/GEODE-8847
> Project: Geode
> Issue Type: Improvement
> Components: native client
> Reporter: Alberto Gomez
> Assignee: Alberto Gomez
> Priority: Major
> Labels: pull-request-available
>
> The async_resolve method of the boost::asio::ip::tcp::resolver class allows
> to perform asynchronous calls for name resolution which would, in theory,
> permit to add a timeout to the name resolution, useful when DNS calls take
> long.
> In practice, it has been observed that this call creates a thread internally
> and even if a timeout is set in the io_context run method and the call exits
> at timeout, subsequent calls to run or the destruction of the io_context will
> wait for the thread created by the async_resolve method to finish which
> provokes that calls to the resolver can take longer than the timeout set.
> As a consequence, it is proposed to use the synchronous version of the method
> (resolve) which makes the code simpler and does not lead to interpret that a
> timeout out can be set to the name resolution.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)