diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-07-25 20:40:12 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-07-25 20:40:12 (GMT) |
commit | 19e020c5c713fcf24d66d72f5e599d57e8841360 (patch) | |
tree | 2373e45b49a13367def4bc4d530e8c83d100fa6a | |
parent | 465e60e654732b3a0b726d1fd82950fc982fcba2 (diff) | |
parent | 65dd69a3da16257bd86b92900e5ec5a8dd26f1d9 (diff) | |
download | cpython-19e020c5c713fcf24d66d72f5e599d57e8841360.zip cpython-19e020c5c713fcf24d66d72f5e599d57e8841360.tar.gz cpython-19e020c5c713fcf24d66d72f5e599d57e8841360.tar.bz2 |
(Merge 3.4) asyncio: sync with Tulip
* Tulip issue #196: IocpProactor._poll() clears the reference to the
overlapped operation when the operation is done. It would be better to clear
the reference in a new _OverlappedFuture.set_result() method, but it cannot
be done yet because of a weird bug.
* BaseSelectorEventLoop._write_to_self() now logs errors in debug mode.
-rw-r--r-- | Lib/asyncio/selector_events.py | 5 | ||||
-rw-r--r-- | Lib/asyncio/windows_events.py | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index cd1a75a..eca48b8 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -120,7 +120,10 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop): try: csock.send(b'\0') except OSError: - pass + if self._debug: + logger.debug("Fail to write a null byte into the " + "self-pipe socket", + exc_info=True) def _start_serving(self, protocol_factory, sock, sslcontext=None, server=None): diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py index 375003c..65ecf34 100644 --- a/Lib/asyncio/windows_events.py +++ b/Lib/asyncio/windows_events.py @@ -489,6 +489,11 @@ class IocpProactor: else: f.set_result(value) self._results.append(f) + # FIXME, tulip issue #196: add _OverlappedFuture.set_result() + # method to clear the refrence, don't do it here (f may + # by a _WaitHandleFuture). Problem: clearing the reference + # in _register() if ov.pedding is False leads to weird bugs. + f._ov = None ms = 0 def _stop_serving(self, obj): |