ansible-collections / ansible-collections/cloud.common
Turbo server processes are not stopped
- 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
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