[
https://issues.apache.org/jira/browse/PROTON-2930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18074962#comment-18074962
]
ASF subversion and git services commented on PROTON-2930:
---------------------------------------------------------
Commit 169e19a757ca8a3c998e29266f319a41a70d39ba in qpid-proton's branch
refs/heads/main from Cliff Jansen
[ https://gitbox.apache.org/repos/asf?p=qpid-proton.git;h=169e19a75 ]
PROTON-2930: epoll proator repeated epoll_wait on disconnected socket
> Epoll proactor busy loop on socket error
> ----------------------------------------
>
> Key: PROTON-2930
> URL: https://issues.apache.org/jira/browse/PROTON-2930
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: proton-c-0.40.0
> Environment: Linux
> Reporter: Clifford Jansen
> Assignee: Clifford Jansen
> Priority: Major
>
> The epoll proactor code for AMQP connections notes EPOLLHUP and EPOLLERR
> conditions but defers reacting to the error until the next read or write on
> the socket.
> It is possible for Linux sockets to note an EPOLLERR for a socket and leave
> EPOLLIN and EPOLLOUT unset. At the same time, a send or recv on the socket
> will not provide a conclusive error condition, returning EAGAIN. The
> excellent reproducer program from PROTON-2928 will trigger this behaviour.
> Eventually the kernel does signal one of EPOLLIN or EPOLLOUT providing the
> expected winding up of the connection, but the procator busy loops in the
> interim waiting for the change to the IO events.
> It is possible there are other ways to trigger this beyond the known
> reproducer.
> If the proactor knows the socket is no longer operational, it should not
> rearm the socket for polling as it does now. Instead, it should determine
> the errno associated with the socket and force the closing of the
> connection's transport.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]