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()