From dad721d9dc2f3436e3ae4be733a516123e979540 Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Mon, 14 Jun 2021 23:54:15 +1000 Subject: [PATCH] psrp - Fix reset connection on failed scenarios (#74967) (#74984) 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 086897b38e0..b643c1e485e 100644 --- a/lib/ansible/plugins/connection/psrp.py +++ b/lib/ansible/plugins/connection/psrp.py @@ -410,7 +410,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()