[
https://issues.apache.org/jira/browse/PROTON-2812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17837355#comment-17837355
]
Clifford Jansen commented on PROTON-2812:
-----------------------------------------
An additional possible mitigation (with thanks to astitcher):
Since the epoll proactor knows when the getaddrinfo calls are needed and also
when they are completed, it could regulate a maximum concurrent number of
threads committed to servicing such calls.
> Epoll proactor blocks thread during DNS lookups in getaddrinfo
> --------------------------------------------------------------
>
> Key: PROTON-2812
> URL: https://issues.apache.org/jira/browse/PROTON-2812
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: proton-c-0.39.0
> Reporter: Clifford Jansen
> Assignee: Clifford Jansen
> Priority: Major
> Attachments: mitigate01.diff
>
>
> The epoll proactor uses getaddrinfo() to resolve network addresses for
> inbound and outbound AMQP and raw connections. These connect and listener
> calls are thread safe so may be called from any thread and the expectation is
> that they initiate the action without blocking.
> Solutions could entail:
> 1) using a dedicated DNS thread pool that multiplexes N serialized (blocking)
> getaddrinfo calls over the pool (e.g. getaddrinfo_a or self managed like
> libuv)
> 2) use some custom library that scales DNS requests without blocking
> 3) write the simplest custom proactor library that does #2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]