ansible-collections / ansible-collections/cloud.common

Turbo server processes are not stopped

Open
#138 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
19
Forks
28
PR merge metrics
No merged PRs in 30d

Description

##### SUMMARY
Turbo server processes are not killed after 15 seconds as mentioned in the documentation

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
ansible_collections.cloud.common.plugins.module_utils.turbo.server

##### ANSIBLE VERSION

```paste below
ansible [core 2.13.11]
config file = /opt/ansible-playbooks-commit-2/ansible.cfg
configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/ansible-playbooks-commit-2/.venv/lib/python3.8/site-packages/ansible
ansible collection location = /opt/ansible-playbooks-commit-2/collections:/home/ansible/.ansible/collections:/usr/share/ansible/collections
executable location = /opt/ansible-playbooks-commit-2/.venv/bin/ansible
python version = 3.8.13 (default, Mar 28 2022, 09:27:29) [GCC 8.3.0]
jinja version = 3.1.2
libyaml = True
```

##### COLLECTION VERSION

```paste below
$ ansible-galaxy collection list community.general

# /opt/ansible-playbooks-commit-2/collections/ansible_collections
Collection Version
----------------- -------
community.general 7.4.0
$ ansible-galaxy collection list cloud.common

# /opt/ansible-playbooks-commit-2/collections/ansible_collections
Collection Version
------------ -------
cloud.common 2.1.4
$ ansible-galaxy collection list vmware.vmware_rest

# /opt/ansible-playbooks-commit-2/collections/ansible_collections
Collection Version
------------------ -------
vmware.vmware_rest 2.3.1
```

##### CONFIGURATION

```paste below
AGNOSTIC_BECOME_PROMPT(/opt/ansible-playbooks-commit-2/ansible.cfg) = False
CALLBACKS_ENABLED(/opt/ansible-playbooks-commit-2/ansible.cfg) = ['timer', 'ansible.posix.profile_tasks']
COLLECTIONS_PATHS(/opt/ansible-playbooks-commit-2/ansible.cfg) = ['/opt/ansible-playbooks-commit-2/collections', '/home/ansible/.ansible/collections', '/usr/share/ansible/collections']
DEFAULT_FORKS(/opt/ansible-playbooks-commit-2/ansible.cfg) = 50
DEFAULT_GATHERING(/opt/ansible-playbooks-commit-2/ansible.cfg) = explicit
DEFAULT_TIMEOUT(/opt/ansible-playbooks-commit-2/ansible.cfg) = 15
DEFAULT_VAULT_PASSWORD_FILE(/opt/ansible-playbooks-commit-2/ansible.cfg) = /opt/ansible-playbooks-commit-2/inventories/vault_password.sh
DISPLAY_SKIPPED_HOSTS(/opt/ansible-playbooks-commit-2/ansible.cfg) = False
HOST_KEY_CHECKING(/opt/ansible-playbooks-commit-2/ansible.cfg) = False
INVENTORY_ANY_UNPARSED_IS_FAILED(/opt/ansible-playbooks-commit-2/ansible.cfg) = True
INVENTORY_ENABLED(/opt/ansible-playbooks-commit-2/ansible.cfg) = ['host_list', 'ini', 'constructed']
INVENTORY_IGNORE_EXTS(/opt/ansible-playbooks-commit-2/ansible.cfg) = ['~', '.orig', '.bak', '.cfg', '.retry', '.pyc', '.pyo', 'LICENSE', '.md', '.txt', 'secrets.yml', 'vars.yml', 'ssh_private_key']
RETRY_FILES_ENABLED(/opt/ansible-playbooks-commit-2/ansible.cfg) = True
RETRY_FILES_SAVE_PATH(/opt/ansible-playbooks-commit-2/ansible.cfg) = /tmp
TASK_TIMEOUT(/opt/ansible-playbooks-commit-2/ansible.cfg) = 180
VARIABLE_PRECEDENCE(/opt/ansible-playbooks-commit-2/ansible.cfg) = ['all_inventory', 'groups_inventory', 'all_plugins_play', 'groups_plugins_play', 'all_plugins_inventory', 'groups_plugins_inventory']
```

##### OS / ENVIRONMENT

OS: debian 10
Kernel: Linux infra-ansible 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64 GNU/Linux

##### STEPS TO REPRODUCE

Using the `vmware.vmware_rest.vcenter_vm_info` module spawns a `ansible_collections.cloud.common.plugins.module_utils.turbo.server` process.

Wait more than the default TTL (15 seconds) and run `ps -edf | grep ansible_collections.cloud.common.plugins.module_utils.turbo.server` you'll see that the process is never stopped.

##### EXPECTED RESULTS
Processes should be automatically stopped after the default 15 seconds timeout as mentioned in the documentation.

##### ACTUAL RESULTS
Processes are never killed leading to memory leak.
```
$ date
Wed 08 Nov 2023 12:32:47 PM CET
$ ps -edf | grep ansible_collections.cloud.common.plugins.module_utils.turbo.server
ansible 53861 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 53870 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 53873 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 53886 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 54028 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 54032 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 54036 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 54041 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 54046 1 0 12:02 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78132 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78134 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78560 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78570 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78573 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78727 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78731 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78735 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 78928 1 0 12:29 ? 00:00:00 /opt/ansible-playbooks-commit/.venv/bin/python -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 84151 71329 0 12:32 pts/4 00:00:00 grep ansible_collections.cloud.common.plugins.module_utils.turbo.server
ansible 100022 1 0 07:06 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102366 1 0 07:09 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102378 1 0 07:09 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102387 1 0 07:09 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102391 1 0 07:09 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102576 1 0 07:10 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102583 1 0 07:10 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102587 1 0 07:10 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102590 1 0 07:10 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
ansible 102673 1 0 07:10 ? 00:00:00 /opt/ansible-playbooks-commit-2/.venv/bin/python3.8 -m ansible_collections.cloud.common.plugins.module_utils.turbo.server --fork --socket-path /dev/shm/ansible/.ansible/tmp/turbo_mode.vmware.vmware_rest.socket
```

Contributor guide

Open the contributing guide

Research direction

Start in ansible_collections.cloud.common.plugins.module_utils.turbo.server and reproduce the issue with vmware.vmware_rest.vcenter_vm_info. Compare the server process lifetime with the documented 15-second default TTL and inspect the process list afterward. Done means the spawned turbo server processes exit automatically after the timeout without leaving the reported memory leak.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.