Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
resolve deadlock when closing the connection.
I got the problem from
aio-pika
when closing the connection, the closing is always end up with timeout. I narrow down the problem to aiormq that the callbacks (which is_on_connection_close
method ofaio_pika.Connection
class) ofUnderlayConnection
as the transport ofConnection
was never got chances to run.The callbacks are triggered by
self.closing.add_done_callback(close_callback)
, but in aiormq where theself.closing
defined, it never get result resolved.The change I did here is to set result of
self.closing
future as the last step of closing a connection so that all the attached callbacks get chance to run after.