mirror of https://github.com/python/cpython.git
asyncio: sync with Tulip
* Fix a race condition in BaseSubprocessTransport._try_finish(). If the process exited before the _post_init() method was called, scheduling the call to _call_connection_lost() with call_soon() is wrong: connection_made() must be called before connection_lost(). Reuse the BaseSubprocessTransport._call() method to schedule the call to _call_connection_lost() to ensure that connection_made() and connection_lost() are called in the correct order. * Add repr(PipeHandle) * Fix typo
This commit is contained in:
parent
dc7765d12c
commit
1b9763d0a9
|
@ -153,7 +153,7 @@ def _try_finish(self):
|
|||
if all(p is not None and p.disconnected
|
||||
for p in self._pipes.values()):
|
||||
self._finished = True
|
||||
self._loop.call_soon(self._call_connection_lost, None)
|
||||
self._call(self._call_connection_lost, None)
|
||||
|
||||
def _call_connection_lost(self, exc):
|
||||
try:
|
||||
|
|
|
@ -402,7 +402,7 @@ def finish_accept_pipe(trans, key, ov):
|
|||
ov.getresult()
|
||||
return pipe
|
||||
|
||||
# FIXME: Tulip issue 196: why to we neeed register=False?
|
||||
# FIXME: Tulip issue 196: why do we need register=False?
|
||||
# See also the comment in the _register() method
|
||||
return self._register(ov, pipe, finish_accept_pipe,
|
||||
register=False)
|
||||
|
|
|
@ -134,6 +134,13 @@ class PipeHandle:
|
|||
def __init__(self, handle):
|
||||
self._handle = handle
|
||||
|
||||
def __repr__(self):
|
||||
if self._handle != -1:
|
||||
handle = 'handle=%r' % self._handle
|
||||
else:
|
||||
handle = 'closed'
|
||||
return '<%s %s>' % (self.__class__.__name__, handle)
|
||||
|
||||
@property
|
||||
def handle(self):
|
||||
return self._handle
|
||||
|
|
Loading…
Reference in New Issue