diff --git a/changelogs/fragments/ansible-connection_persist_issue.yaml b/changelogs/fragments/ansible-connection_persist_issue.yaml new file mode 100644 index 00000000000..d8783687e22 --- /dev/null +++ b/changelogs/fragments/ansible-connection_persist_issue.yaml @@ -0,0 +1,2 @@ +bugfixes: +- ansible-connection persists even after playbook run is completed (https://github.com/ansible/ansible/pull/61591) diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py index 07663683b10..5a61aa71674 100755 --- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py +++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py @@ -120,7 +120,7 @@ class ConnectionProcess(object): def run(self): try: - while True: + while not self.connection._conn_closed: signal.signal(signal.SIGALRM, self.connect_timeout) signal.signal(signal.SIGTERM, self.handler) signal.alarm(self.connection.get_option('persistent_connect_timeout')) diff --git a/lib/ansible/plugins/connection/__init__.py b/lib/ansible/plugins/connection/__init__.py index 14973dd6f3a..818d3416922 100644 --- a/lib/ansible/plugins/connection/__init__.py +++ b/lib/ansible/plugins/connection/__init__.py @@ -275,6 +275,7 @@ class NetworkConnectionBase(ConnectionBase): def __init__(self, play_context, new_stdin, *args, **kwargs): super(NetworkConnectionBase, self).__init__(play_context, new_stdin, *args, **kwargs) self._messages = [] + self._conn_closed = False self._network_os = self._play_context.network_os @@ -335,6 +336,7 @@ class NetworkConnectionBase(ConnectionBase): self.queue_message('vvvv', 'reset call on connection instance') def close(self): + self._conn_closed = True if self._connected: self._connected = False