<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/eventlet.git, branch partial-write-fix-2</title>
<subtitle>github.com: eventlet/eventlet.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/'/>
<entry>
<title>wsgi: Fix handling partial writes on Python 3</title>
<updated>2016-02-09T10:20:05+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-02-09T01:24:47+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=b7380fdc70fde26777f4f141da3f01570e870cac'/>
<id>b7380fdc70fde26777f4f141da3f01570e870cac</id>
<content type='text'>
Closes https://github.com/eventlet/eventlet/issues/295 (in the wsgi
module we use a custom writelines implementation now).

Those write() calls might write only part of the data (and even if they
don't - it's more readable to make sure all data is written
explicitly).

I changed the test code so that the write() implementation returns the
number of characters logged and it cooperates nicely with writeall()
now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes https://github.com/eventlet/eventlet/issues/295 (in the wsgi
module we use a custom writelines implementation now).

Those write() calls might write only part of the data (and even if they
don't - it's more readable to make sure all data is written
explicitly).

I changed the test code so that the write() implementation returns the
number of characters logged and it cooperates nicely with writeall()
now.
</pre>
</div>
</content>
</entry>
<entry>
<title>wsgi tests: Remove unused import</title>
<updated>2016-02-08T23:02:07+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-02-08T23:02:07+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=8a4a1212b2097c6ecca96c81dc355388583ac45d'/>
<id>8a4a1212b2097c6ecca96c81dc355388583ac45d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>v0.18.1 release</title>
<updated>2016-01-24T19:24:39+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2016-01-24T19:24:39+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=a8125b602110ffd88acb317cc7915ba604cff4bb'/>
<id>a8125b602110ffd88acb317cc7915ba604cff4bb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>patcher: certain order of import subprocess and monkey_patch breaks .communicate()</title>
<updated>2016-01-24T18:36:38+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2016-01-24T18:27:52+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=8ea9df6b9f6a13bb47feb35bacc60968c5ce4b43'/>
<id>8ea9df6b9f6a13bb47feb35bacc60968c5ce4b43</id>
<content type='text'>
https://github.com/eventlet/eventlet/issues/290
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/eventlet/eventlet/issues/290
</pre>
</div>
</content>
</entry>
<entry>
<title>greenio: Fix "TypeError: an integer is required" in sendto()</title>
<updated>2016-01-24T08:43:51+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-01-24T08:43:51+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=a79c0ee57af25ab176e34ae7ceb27a1c0262ae5d'/>
<id>a79c0ee57af25ab176e34ae7ceb27a1c0262ae5d</id>
<content type='text'>
The sendto() interface as defined in Python documentation:

    socket.sendto(string, address)
    socket.sendto(string, flags, address)

I didn't catch the fact that [1] broke this, this patch fixes it and add
a sendto/recvfrom test to make sure it doesn't happen again (turns out
we didn't have any).

GitHub issue: https://github.com/eventlet/eventlet/issues/290

Fixes: bc4d1b5 - gh-274: Handle blocking I/O errors in GreenSocket

[1] bc4d1b5d362e5baaeded35b1e339b9db08172dd2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sendto() interface as defined in Python documentation:

    socket.sendto(string, address)
    socket.sendto(string, flags, address)

I didn't catch the fact that [1] broke this, this patch fixes it and add
a sendto/recvfrom test to make sure it doesn't happen again (turns out
we didn't have any).

GitHub issue: https://github.com/eventlet/eventlet/issues/290

Fixes: bc4d1b5 - gh-274: Handle blocking I/O errors in GreenSocket

[1] bc4d1b5d362e5baaeded35b1e339b9db08172dd2
</pre>
</div>
</content>
</entry>
<entry>
<title>v0.18.0 release</title>
<updated>2016-01-23T08:58:35+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2016-01-23T08:58:35+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=2865c23837980c987e79562d15633ef4a032b8c6'/>
<id>2865c23837980c987e79562d15633ef4a032b8c6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Mention all changes to be released</title>
<updated>2016-01-23T01:23:20+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-01-22T23:19:14+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=17a2f70078b286c91dc76ca3ca3d3524bd77b32e'/>
<id>17a2f70078b286c91dc76ca3ca3d3524bd77b32e</id>
<content type='text'>
I hope I didn't miss anything/anyone.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I hope I didn't miss anything/anyone.
</pre>
</div>
</content>
</entry>
<entry>
<title>travis: Fix allowing more CPU usage</title>
<updated>2016-01-23T01:20:47+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-01-23T00:47:30+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=c6337f7d295a3e1947542c5c7268a365859c5896'/>
<id>c6337f7d295a3e1947542c5c7268a365859c5896</id>
<content type='text'>
The original commit[1] was not enough because we run tests using tox and
tox by default doesn't pass all environment variables to the
environments in which tests run - this patch whitelists subset of
environment variables set by Travis, including one that we read and use.

[1] 74f418bcf38ac128cadad641d59d7ecd8f127340
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The original commit[1] was not enough because we run tests using tox and
tox by default doesn't pass all environment variables to the
environments in which tests run - this patch whitelists subset of
environment variables set by Travis, including one that we read and use.

[1] 74f418bcf38ac128cadad641d59d7ecd8f127340
</pre>
</div>
</content>
</entry>
<entry>
<title>greenio: Remove sendall-like semantincs from GreenSocket.send</title>
<updated>2016-01-23T01:02:59+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2015-11-10T23:11:02+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=c315ee86dac996ac533b738f7c8777f4d01a0472'/>
<id>c315ee86dac996ac533b738f7c8777f4d01a0472</id>
<content type='text'>
When a socket timeout was set the sendall-like semantics was resulting
in losing information about sent data and raising socket.timeout exception.

The previous GreenSocket.send() implementation used to call fd.send() in a
loop until all data was sent. The issue would manifest if at least one
fd.send() call succeeded and was followed by a fd.send() call that would
block and a trampoline that timed out. The client code would see
socket.timeout being raised and would rightfully assume that no data was
sent which would be incorrect.

Discussed at https://github.com/eventlet/eventlet/issues/260.

The original commit[1] has been reverted because it broke the
test_multiple_readers test. After some debugging I believe I more or
less know what's going on:

The test uses sendall() which calls send() in a loop if send() reports
only part of the data sent. Previously sendall() would call send() only
one anyway because send() had sendall-like semantics; send has an
internal loop on its own and, previously, it'd call the underlying
socket object send() and, in case of partial write, call trampoline
mechanism which would switch to another greenthread ready to run.

After the change partial writes no longer result in trampoline mechanism
being called which means that during this test it's likely that
sendall() doesn't yield control to the hub even once. Similarly the
current recv() implementation - it attemps to read from a socket first
and only yields control to the hub if there's nothing to read at the
moment; when one of the readers obtained control it's likely it'd manage
to read all the data from the socket without yielding control to the hub
and letting the other reader receive any data.

The test changes the sending code so that it not only yields to the hub
but also waits a bit so that both the readers have to yield to the hub
when trying to read and there's no data available; the tests confirmed
this lets both the readers receive some data from the socket which is
the purpose of the test.

[1] 4656eadfa5ae1237036a63ad4004dbee4572debf
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a socket timeout was set the sendall-like semantics was resulting
in losing information about sent data and raising socket.timeout exception.

The previous GreenSocket.send() implementation used to call fd.send() in a
loop until all data was sent. The issue would manifest if at least one
fd.send() call succeeded and was followed by a fd.send() call that would
block and a trampoline that timed out. The client code would see
socket.timeout being raised and would rightfully assume that no data was
sent which would be incorrect.

Discussed at https://github.com/eventlet/eventlet/issues/260.

The original commit[1] has been reverted because it broke the
test_multiple_readers test. After some debugging I believe I more or
less know what's going on:

The test uses sendall() which calls send() in a loop if send() reports
only part of the data sent. Previously sendall() would call send() only
one anyway because send() had sendall-like semantics; send has an
internal loop on its own and, previously, it'd call the underlying
socket object send() and, in case of partial write, call trampoline
mechanism which would switch to another greenthread ready to run.

After the change partial writes no longer result in trampoline mechanism
being called which means that during this test it's likely that
sendall() doesn't yield control to the hub even once. Similarly the
current recv() implementation - it attemps to read from a socket first
and only yields control to the hub if there's nothing to read at the
moment; when one of the readers obtained control it's likely it'd manage
to read all the data from the socket without yielding control to the hub
and letting the other reader receive any data.

The test changes the sending code so that it not only yields to the hub
but also waits a bit so that both the readers have to yield to the hub
when trying to read and there's no data available; the tests confirmed
this lets both the readers receive some data from the socket which is
the purpose of the test.

[1] 4656eadfa5ae1237036a63ad4004dbee4572debf
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Remove unused code</title>
<updated>2016-01-23T01:00:03+00:00</updated>
<author>
<name>Jakub Stasiak</name>
<email>jakub@stasiak.at</email>
</author>
<published>2016-01-22T23:46:28+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/eventlet.git/commit/?id=5c5025f0f66c11e1f714fbb5678463f5c77e70ee'/>
<id>5c5025f0f66c11e1f714fbb5678463f5c77e70ee</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
