[ 
https://issues.apache.org/jira/browse/PROTON-2930?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Clifford Jansen resolved PROTON-2930.
-------------------------------------
    Fix Version/s: proton-c-0.41.0
       Resolution: Fixed

commit 169e19a7

> 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
>             Fix For: proton-c-0.41.0
>
>
> 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]

Reply via email to