Skip to content

Ansible 14: dnf module list returns No start of json char found #1558

Description

@dygland

Description

This seems to be very similar to #1529 but only affects the list command, there seems to be some handling of the list-command in https://github.com/mitogen-hq/mitogen/blob/master/ansible_mitogen/_modifiers.py#L34 but i am not sure how the modifiers work.

When running a task such as:

- name: find all available packages
   ansible.builtin.dnf
     list: "httpd-*"
    register: available_packages

Mitogen failes with the following error/stack trace:

TASK [httpd : Find all available packages] *****************************
[ERROR]: Task failed: Action failed: Module result deserialization failed: No start of json char found                                                                                                                                                           
                                                                                                                                                                                                                                                                 
Task failed: Action failed.                                                                                                                                                                                                                                      
Origin: /home/dygland/git/ansible/roles/httpd/tasks/main.yml:26:3                                    

24   when: ansible_facts.packages['httpd'] is defined
25
26 - name: Find all available packages
     ^ column 3

<<< caused by >>>

Module result deserialization failed: No start of json char found See stdout/stderr for the returned output.

fatal: [hostname.domain.tld]: FAILED! => {
    "changed": false,
    "rc": 1
}

MSG:

Module result deserialization failed: No start of json char found

                                                                                                                                                                                                                                                                                                                                
MODULE_STDERR:

Traceback (most recent call last):
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible_mitogen/runner.py", line 1062, in _run
    self._run_code(code, mod)
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible_mitogen/runner.py", line 1017, in _run_code
    exec(code, vars(mod))
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible/modules/dnf.py", line 675, in <module>
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible/modules/dnf.py", line 671, in main
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible/modules/dnf.py", line 647, in run
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible/modules/dnf.py", line 539, in list_items
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/ansible/modules/dnf.py", line 484, in _execute_dnf_script
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/mitogen/parent.py", line 2029, in call
    return self.default_call_chain.call(fn, *args, **kwargs)
  File "master:/home/dygland/git/ansible/.venv/ansible14/lib64/python3.12/site-packages/mitogen/parent.py", line 1986, in call
    return receiver.get().unpickle(throw_dead=False)
  File "<stdin>", line 1014, in unpickle
  File "<stdin>", line 1055, in unpickle_iter
mitogen.core.CallError: builtins.TypeError: list_items() missing 1 required positional argument: 'command'
  File "<stdin>", line 4009, in _dispatch_one

Mitogen version

0.3.53

Ansible version (if applicable)

2.21.3

OS and environment

Controller: RedHat 10, python 3.12
Target: Redhat 9 or 10, python 3.9 or 3.12

Steps to reproduce

Steps:
run the following task in a playbook

- name: find all available packages
   ansible.builtin.dnf
     list: "httpd-*"
    register: available_packages

Anything else

This works fine on mitogen 0.3.53 on ansible 2.16 targeting RedHat 8 or 9 hosts. so there is some changes that have been made by ansible and not in mitogen.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    affects-0.3Issues related to 0.3.X Mitogen releases

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions