Blocking on dead sockets
------------------------
Key: QPID-2968
URL: https://issues.apache.org/jira/browse/QPID-2968
Project: Qpid
Issue Type: Bug
Components: Python Client
Affects Versions: Future, 0.9, 0.8, 0.7
Environment: Does not matter
Reporter: Dmitry Konishchev
Fix For: Future, 0.9, 0.8, 0.7
* If you open a few connections, and one of them breaks (for example,
due to a network error), another connections can be locked for time, which is
equal to network timeout of the broken connection. This happens due to
working with sockets in blocking mode and due to using one Selector for all
connections.
* All connections could become locked forever due to races between
Driver and Selector objects. Driver object removes itself from the Selector
non-atomically and a situation when Driver is alredy closed, but the Selector
refers to it could happen. In this case select() call in the Selector raise
an exeption due to self._transport.fileno() call on Driver where
self._transport is None. The selector doesn't handle errors on select(), so
the selector's thread will be stopped due to unhandled Exception.
* There is no checks on EINTR error on os.* calls.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]