<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/eventlet.git, branch website</title>
<subtitle>github.com: eventlet/eventlet.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/'/>
<entry>
<title>doc index: (mostly) remove dead links</title>
<updated>2020-10-19T01:32:37+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2020-10-19T01:19:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=36ed1911adbb1ff712a01325c560e9952787f22a'/>
<id>36ed1911adbb1ff712a01325c560e9952787f22a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up TypeError in __del__</title>
<updated>2020-09-30T00:48:46+00:00</updated>
<author>
<name>Tim Burke</name>
<email>tim.burke@gmail.com</email>
</author>
<published>2020-09-28T23:30:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=f2ebbb87590d0fa4f173599806dfec88caeb9fb9'/>
<id>f2ebbb87590d0fa4f173599806dfec88caeb9fb9</id>
<content type='text'>
At the end of the py2 tests, we would see (ignored) errors like

   Exception TypeError: "'NoneType' object is not callable" in
   &lt;bound method _SocketDuckForFd.__del__ of _SocketDuckForFd:14&gt; ignored
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
At the end of the py2 tests, we would see (ignored) errors like

   Exception TypeError: "'NoneType' object is not callable" in
   &lt;bound method _SocketDuckForFd.__del__ of _SocketDuckForFd:14&gt; ignored
</pre>
</div>
</content>
</entry>
<entry>
<title>v0.28.0 release</title>
<updated>2020-09-23T17:56:27+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2020-09-23T17:56:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=7f03295741bdc2c8b8294ca513f1ee5e644a74a5'/>
<id>7f03295741bdc2c8b8294ca513f1ee5e644a74a5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make remove more explicit</title>
<updated>2020-09-23T17:08:30+00:00</updated>
<author>
<name>Clay Gerrard</name>
<email>clay.gerrard@gmail.com</email>
</author>
<published>2020-09-23T17:08:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=af253ad97d6e33e86aca56ea5ce5ede1ed0a51cb'/>
<id>af253ad97d6e33e86aca56ea5ce5ede1ed0a51cb</id>
<content type='text'>
There was some concern in fixing hub.remove for secondary listeners
because tests seemed to rely on the implicit robustness of hub.remove
when a listener wasn't being tracked.

It was discovered that socket errors can bubble up in poll and select
hubs which result in all listeners being removed for that fileno before
the listener was alerted (which would then *also* triggered a remove).

Rather than having remove be robust to being called twice this change
makes it be called only once.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There was some concern in fixing hub.remove for secondary listeners
because tests seemed to rely on the implicit robustness of hub.remove
when a listener wasn't being tracked.

It was discovered that socket errors can bubble up in poll and select
hubs which result in all listeners being removed for that fileno before
the listener was alerted (which would then *also* triggered a remove).

Rather than having remove be robust to being called twice this change
makes it be called only once.
</pre>
</div>
</content>
</entry>
<entry>
<title>Always remove the right listener from the hub</title>
<updated>2020-09-23T15:16:27+00:00</updated>
<author>
<name>Samuel Merritt</name>
<email>sam@swiftstack.com</email>
</author>
<published>2018-06-08T03:45:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=9f49f0bbb9c18d7478d7c5e2e677ae6452845ab5'/>
<id>9f49f0bbb9c18d7478d7c5e2e677ae6452845ab5</id>
<content type='text'>
When in hubs.trampoline(fd, ...), a greenthread registers itself as a
listener for fd, switches to the hub, and then calls
hub.remove(listener) to deregister itself. hub.remove(listener)
removes the primary listener. If the greenthread awoke because its fd
became ready, then it is the primary listener, and everything is
fine. However, if the greenthread was a secondary listener and awoke
because a Timeout fired then it would remove the primary and promote a
random secondary to primary.

This commit makes hub.remove(listener) check to make sure listener is
the primary, and if it's not, remove the listener from the
secondaries.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When in hubs.trampoline(fd, ...), a greenthread registers itself as a
listener for fd, switches to the hub, and then calls
hub.remove(listener) to deregister itself. hub.remove(listener)
removes the primary listener. If the greenthread awoke because its fd
became ready, then it is the primary listener, and everything is
fine. However, if the greenthread was a secondary listener and awoke
because a Timeout fired then it would remove the primary and promote a
random secondary to primary.

This commit makes hub.remove(listener) check to make sure listener is
the primary, and if it's not, remove the listener from the
secondaries.
</pre>
</div>
</content>
</entry>
<entry>
<title>v0.27.0 release</title>
<updated>2020-09-01T22:05:23+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2020-09-01T22:05:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=004cc4e6c838c5c218d3a5adb8043bb2afd1cb94'/>
<id>004cc4e6c838c5c218d3a5adb8043bb2afd1cb94</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up threading book-keeping at fork when monkey-patched</title>
<updated>2020-08-29T03:58:07+00:00</updated>
<author>
<name>Tim Burke</name>
<email>tim.burke@gmail.com</email>
</author>
<published>2020-05-07T23:00:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=115103d5608cbe8f15df10e27eba1644f5364e95'/>
<id>115103d5608cbe8f15df10e27eba1644f5364e95</id>
<content type='text'>
Previously, if we patched threading then forked (or, in some cases, used
the subprocess module), Python would log an ignored exception like

   Exception ignored in: &lt;function _after_fork at 0x7f16493489d8&gt;
   Traceback (most recent call last):
     File "/usr/lib/python3.7/threading.py", line 1335, in _after_fork
       assert len(_active) == 1
   AssertionError:

This comes down to threading in Python 3.7+ having an import side-effect
of registering an at-fork callback. When we re-import threading to patch
it, the old (but still registered) callback still points to the old
thread-tracking dict, rather than the new dict that's actually doing the
tracking.

Now, register our own at_fork hook that will fix up the dict reference
before threading's _at_fork runs and put it back afterwards.

Closes #592
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, if we patched threading then forked (or, in some cases, used
the subprocess module), Python would log an ignored exception like

   Exception ignored in: &lt;function _after_fork at 0x7f16493489d8&gt;
   Traceback (most recent call last):
     File "/usr/lib/python3.7/threading.py", line 1335, in _after_fork
       assert len(_active) == 1
   AssertionError:

This comes down to threading in Python 3.7+ having an import side-effect
of registering an at-fork callback. When we re-import threading to patch
it, the old (but still registered) callback still points to the old
thread-tracking dict, rather than the new dict that's actually doing the
tracking.

Now, register our own at_fork hook that will fix up the dict reference
before threading's _at_fork runs and put it back afterwards.

Closes #592
</pre>
</div>
</content>
</entry>
<entry>
<title>.travis.yml: Remove superfluous matrix selectors</title>
<updated>2020-08-19T11:25:37+00:00</updated>
<author>
<name>John Vandenberg</name>
<email>jayvdb@gmail.com</email>
</author>
<published>2020-08-19T10:00:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=44bfc1e0a95c50af4121695aaefc02e6642f938d'/>
<id>44bfc1e0a95c50af4121695aaefc02e6642f938d</id>
<content type='text'>
sudo: and dist: are no longer needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sudo: and dist: are no longer needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Python 3.8 testing</title>
<updated>2020-08-19T11:25:37+00:00</updated>
<author>
<name>John Vandenberg</name>
<email>jayvdb@gmail.com</email>
</author>
<published>2020-08-15T15:23:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=1d11865071256c373540f79fa06cdd180ea7601a'/>
<id>1d11865071256c373540f79fa06cdd180ea7601a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>tests checking output were broken by Python 2 end of support warning</title>
<updated>2020-08-19T09:28:12+00:00</updated>
<author>
<name>Sergey Shepelev</name>
<email>temotor@gmail.com</email>
</author>
<published>2020-08-19T09:28:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/python-packages/eventlet.git/commit/?id=3a01b33250a6b0504d506b79e563e7445b0ecc77'/>
<id>3a01b33250a6b0504d506b79e563e7445b0ecc77</id>
<content type='text'>
Previous behavior to ignore DeprecationWarning is now default in py2.7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previous behavior to ignore DeprecationWarning is now default in py2.7
</pre>
</div>
</content>
</entry>
</feed>
