From c6d647a8f0874ec12f3d5cb53e02ec4d917cf78a Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Mon, 14 Jun 2021 23:54:39 +1000 Subject: [PATCH] psrp - Fix reset connection on failed scenarios (#74967) (#74983) Co-authored-by: Abhijeet Kasurde (cherry picked from commit cf3a304ce1711ed9a19549fbf58c004acd47c06a) --- changelogs/fragments/psrp-reset.yml | 3 +++ lib/ansible/plugins/connection/psrp.py | 9 +++++++++ 2 files changed, 12 insertions(+) create mode 100644 changelogs/fragments/psrp-reset.yml diff --git a/changelogs/fragments/psrp-reset.yml b/changelogs/fragments/psrp-reset.yml new file mode 100644 index 00000000000..a9af487d9e1 --- /dev/null +++ b/changelogs/fragments/psrp-reset.yml @@ -0,0 +1,3 @@ +bugfixes: +- psrp - Fix error when resetting a connection that was initialised but not connected - (https://github.com/ansible/ansible/issues/74092). +- psrp - Try to clean up any server-side resources when resetting a connection. diff --git a/lib/ansible/plugins/connection/psrp.py b/lib/ansible/plugins/connection/psrp.py index f03eb8782ce..b73f796b317 100644 --- a/lib/ansible/plugins/connection/psrp.py +++ b/lib/ansible/plugins/connection/psrp.py @@ -408,7 +408,16 @@ class Connection(ConnectionBase): def reset(self): if not self._connected: + self.runspace = None return + + # Try out best to ensure the runspace is closed to free up server side resources + try: + self.close() + except Exception as e: + # There's a good chance the connection was already closed so just log the error and move on + display.debug("PSRP reset - failed to closed runspace: %s" % to_text(e)) + display.vvvvv("PSRP: Reset Connection", host=self._psrp_host) self.runspace = None self._connect()