<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/trollius-git.git/tests, branch 3.4.2</title>
<subtitle>github.com: jamadden/trollius.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/'/>
<entry>
<title>test_tasks: Fix test_env_var_debug to use correct asyncio module (issue #207)</title>
<updated>2014-09-25T23:09:54+00:00</updated>
<author>
<name>Yury Selivanov</name>
<email>yselivanov@sprymix.com</email>
</author>
<published>2014-09-25T23:09:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=f3e29d20c153e4e5a468968aea204b1b1c15770a'/>
<id>f3e29d20c153e4e5a468968aea204b1b1c15770a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve canceled timer callback handles cleanup (CPython issue #22448)</title>
<updated>2014-09-25T16:02:25+00:00</updated>
<author>
<name>Yury Selivanov</name>
<email>yselivanov@sprymix.com</email>
</author>
<published>2014-09-25T16:02:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=0dfb7bf842b3f730722c341bd1b0851637c0a313'/>
<id>0dfb7bf842b3f730722c341bd1b0851637c0a313</id>
<content type='text'>
Patch by Joshua Moore-Oliva.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Patch by Joshua Moore-Oliva.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Handle and TimerHandle repr in debug mode</title>
<updated>2014-09-17T21:14:36+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-09-17T21:14:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=eeeef365cb67138c2335f03ef48d43374c26417b'/>
<id>eeeef365cb67138c2335f03ef48d43374c26417b</id>
<content type='text'>
Tulip issue #206:  In debug mode, keep the callback in the representation of
Handle and TimerHandle after cancel().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tulip issue #206:  In debug mode, keep the callback in the representation of
Handle and TimerHandle after cancel().
</pre>
</div>
</content>
</entry>
<entry>
<title>Tulip issue #205: Fix a race condition in BaseSelectorEventLoop.sock_connect()</title>
<updated>2014-08-31T13:06:28+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-08-31T13:06:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=25a84086c03469fc6bd711d662d914b83b811ff1'/>
<id>25a84086c03469fc6bd711d662d914b83b811ff1</id>
<content type='text'>
There is a race condition in create_connection() used with wait_for() to have a
timeout. sock_connect() registers the file descriptor of the socket to be
notified of write event (if connect() raises BlockingIOError). When
create_connection() is cancelled with a TimeoutError, sock_connect() coroutine
gets the exception, but it doesn't unregister the file descriptor for write
event. create_connection() gets the TimeoutError and closes the socket.

If you call again create_connection(), the new socket will likely gets the same
file descriptor, which is still registered in the selector. When sock_connect()
calls add_writer(), it tries to modify the entry instead of creating a new one.

This issue was originally reported in the Trollius project, but the bug comes
from Tulip in fact (Trollius is based on Tulip):
https://bitbucket.org/enovance/trollius/issue/15/after-timeouterror-on-wait_for

This change fixes the race condition. It also makes sock_connect() more
reliable (and portable) is sock.connect() raises an InterruptedError.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a race condition in create_connection() used with wait_for() to have a
timeout. sock_connect() registers the file descriptor of the socket to be
notified of write event (if connect() raises BlockingIOError). When
create_connection() is cancelled with a TimeoutError, sock_connect() coroutine
gets the exception, but it doesn't unregister the file descriptor for write
event. create_connection() gets the TimeoutError and closes the socket.

If you call again create_connection(), the new socket will likely gets the same
file descriptor, which is still registered in the selector. When sock_connect()
calls add_writer(), it tries to modify the entry instead of creating a new one.

This issue was originally reported in the Trollius project, but the bug comes
from Tulip in fact (Trollius is based on Tulip):
https://bitbucket.org/enovance/trollius/issue/15/after-timeouterror-on-wait_for

This change fixes the race condition. It also makes sock_connect() more
reliable (and portable) is sock.connect() raises an InterruptedError.
</pre>
</div>
</content>
</entry>
<entry>
<title>Tulip issue #201: Fix a race condition in wait_for()</title>
<updated>2014-08-28T09:14:14+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-08-28T09:14:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=e637bf51253ae860c0a343433d8244636fa70da3'/>
<id>e637bf51253ae860c0a343433d8244636fa70da3</id>
<content type='text'>
Don't raise a TimeoutError if we reached the timeout and the future completed
in the same iteration of the event loop. A side effect of the bug is that
Queue.get() looses items.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't raise a TimeoutError if we reached the timeout and the future completed
in the same iteration of the event loop. A side effect of the bug is that
Queue.get() looses items.
</pre>
</div>
</content>
</entry>
<entry>
<title>Tulip issue #203: Add _FlowControlMixin.get_write_buffer_limits() method</title>
<updated>2014-08-25T22:10:48+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-08-25T22:10:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=efd90f2b66beb1eefdd821b0077401246e4e3ca9'/>
<id>efd90f2b66beb1eefdd821b0077401246e4e3ca9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't log expected errors in unit tests</title>
<updated>2014-07-30T13:52:28+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-07-30T13:52:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=cd7a6f4f24d5e4894682f2f0ce8a2bbe56d43323'/>
<id>cd7a6f4f24d5e4894682f2f0ce8a2bbe56d43323</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix unit tests in debug mode: mock a non-blocking socket for socket operations</title>
<updated>2014-07-30T13:31:53+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-07-30T13:31:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=65e86f2eba816d72b67083e21a79ff1d6a6e4925'/>
<id>65e86f2eba816d72b67083e21a79ff1d6a6e4925</id>
<content type='text'>
which now raise an exception if the socket is blocking.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
which now raise an exception if the socket is blocking.
</pre>
</div>
</content>
</entry>
<entry>
<title>Python issue 22063: socket operations (sock_recv, sock_sendall, sock_connect,</title>
<updated>2014-07-30T13:37:32+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-07-30T13:37:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=dfcf393bd957a60106339d02cd9a2786192f7993'/>
<id>dfcf393bd957a60106339d02cd9a2786192f7993</id>
<content type='text'>
sock_accept) of the proactor event loop don't raise an exception in debug mode
if the socket are in blocking mode. Overlapped operations also work on blocking
sockets.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sock_accept) of the proactor event loop don't raise an exception in debug mode
if the socket are in blocking mode. Overlapped operations also work on blocking
sockets.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix debug log in BaseEventLoop.create_connection(): get the socket object from</title>
<updated>2014-07-30T12:57:41+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2014-07-30T12:57:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/trollius-git.git/commit/?id=e50222808f14d21968444158f27e5aabe7c4b3dd'/>
<id>e50222808f14d21968444158f27e5aabe7c4b3dd</id>
<content type='text'>
the transport because SSL transport closes the old socket and creates a new
SSL socket object.

Remove also the _SelectorSslTransport._rawsock attribute: it contained the
closed socket (not very useful) and it was not used.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the transport because SSL transport closes the old socket and creates a new
SSL socket object.

Remove also the _SelectorSslTransport._rawsock attribute: it contained the
closed socket (not very useful) and it was not used.
</pre>
</div>
</content>
</entry>
</feed>
