(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.
This commit is contained in:
Victor Stinner 2014-07-25 22:40:12 +02:00
commit 19e020c5c7
2 changed files with 9 additions and 1 deletions

View File

@ -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):

View File

@ -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):