Quicknote: Fehler in Ansible 2.19.2

Scheinbar gibt es mit Version 2.19.2 einen allgemeinen Fehler in Ansible, oder es hat sich etwas gravierendes geändert, was ich noch nicht ausmachen konnte.

Bei der Ausführung von Playbooks erscheint sporadisch folgender Fehler:

Exception in thread Thread-7 (results_thread_main):
Traceback (most recent call last):
  File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.11/threading.py", line 975, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 108, in results_thread_main
    result = strategy._convert_wire_task_result_to_raw(result)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 456, in _convert_wire_task_result_to_raw
    found_task = self._queued_task_cache[queue_cache_entry]['task']
                 ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: ('localhost', '8ec434a0-f550-4997-2176-00000000002b')

An dieser Stelle bleibt das Playbook hängen und muss mit Strg+c abgebrochen werden:

[ERROR]: Unexpected Exception, this is probably a bug: [Errno 3] Kein passender Prozess gefunden

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/ansible/cli/__init__.py", line 660, in cli_executor
    exit_code = cli.run()
                ^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/cli/playbook.py", line 153, in run
    results = pbex.run()
              ^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/executor/playbook_executor.py", line 188, in run
    result = self._tqm.run(play=play)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/executor/task_queue_manager.py", line 344, in run
    play_return = strategy.run(iterator, play_context)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/linear.py", line 216, in run
    results.extend(self._wait_on_pending_results(iterator))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 796, in _wait_on_pending_results
    time.sleep(C.DEFAULT_INTERNAL_POLL_INTERVAL)
  File "/usr/local/lib/python3.11/dist-packages/ansible/executor/process/worker.py", line 110, in _term
    os.killpg(self.pid, signum)
ProcessLookupError: [Errno 3] Kein passender Prozess gefunden

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/ansible/cli/__init__.py", line 669, in cli_executor
    raise AnsibleError("Unexpected Exception, this is probably a bug.") from ex
ansible.errors.AnsibleError: Unexpected Exception, this is probably a bug: [Errno 3] Kein passender Prozess gefunden

Der Fehler tritt mit Version 2.18.9 nicht auf, andere 2.19.x Versionen habe ich nicht getestet.

Zusätzlich trat der Fehler auch nicht an bestimmten Stellen auf, sondern an unterschiedlichen.

Das sollte man mal beobachten, ein Issue scheint es noch nicht zu geben.

Kommentare

2 Antworten zu „Quicknote: Fehler in Ansible 2.19.2“

  1. Avatar von Larvitz :fedora: :redhat:

    @mauri

    Auf den ersten Blick könnte dein Fehler durch eine Race Condition in der neuen Task-Queue-Handhabung entstehen (z. B. wenn der Cache-Eintrag für den Task asynchron gelöscht wird, bevor der Result-Thread draufzugreift). Das erklärt die Sporadik und die verschiedenen Auftretensstellen.

    Was du probieren könntest:

    – Führe Playbooks mit –strategy=free statt linear aus (um zu sehen, ob es strategy-spezifisch ist).

    – Forks mal auf 1 setzen (ansible-playbook -f 1) und schauen, ob das Problem damit zusammenhängt.

    – Setze ANSIBLE_INTERNAL_POLL_INTERVAL=0.1 (oder höher) in der Env, um Polling zu verlangsamen und Races zu mildern.

    – Aktiviere Debug-Logging: ansible-playbook -vvv und suche nach Warnungen vor dem Hang.

    Im besten Fall aber:
    Öffne einen neuen Issue im Ansible-Repo auf GitHub. Füge deinen Traceback, Ansible-Version (ansible –version), OS/Python-Details und ein minimales Playbook-Beispiel bei.

    1. Avatar von mauri :verified:

      @Larvitz @mauri@blog.maurix.net Danke für die Tipps! Teste ich sobald die Zeit es wieder zulässt. Ich werde berichten ✌️

Neuste Toots

  1. Loading Mastodon feed…

Andere Beiträge