python/aqmp: Fix disconnect during capabilities negotiation
commitf26bd6ff21df2f1d155ca17eef360423b706ab7f
authorJohn Snow <jsnow@redhat.com>
Thu, 11 Nov 2021 14:37:15 +0000 (11 09:37 -0500)
committerJohn Snow <jsnow@redhat.com>
Tue, 16 Nov 2021 19:26:36 +0000 (16 14:26 -0500)
tree2b6702e32eaac8f40ae2fa3f8230fbc1f0520439
parent2b22e7540d6ab4efe82d442363e3fc900cea6584
python/aqmp: Fix disconnect during capabilities negotiation

If we receive ConnectionResetError (ECONNRESET) while attempting to
perform capabilities negotiation -- prior to the establishment of the
async reader/writer tasks -- the disconnect function is not aware that
we are in an error pathway.

As a result, when attempting to close the StreamWriter, we'll see the
same ConnectionResetError that caused us to initiate a disconnect in the
first place, which will cause the disconnect task itself to fail, which
emits a CRITICAL logging event.

I still don't know if there's a smarter way to check to see if an
exception received at this point is "the same" exception as the one that
caused the initial disconnect, but for now the problem can be avoided by
improving the error pathway detection in the exit path.

Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-id: 20211111143719.2162525-2-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
python/qemu/aqmp/protocol.py