This PR simply makes venv-salt-minion-postinstall.service to pass WAIT_IF_SALT_JOBS=1 as environment variable when calling post_start_cleanup.sh script after a Salt Bundle upgrade.
The idea here is that, when post_start_cleanup.sh is executed by venv-salt-minion-postinstall.service, then it waits until there are no active Salt jobs to perform the cleanup. This way we can prevent cleaning up the environment too early while there is an active Salt job which is still making use of it.
Since post_start_cleanup.sh is also executed as part of a Salt highstate, and also triggered via the RPM scriptlets of venv-salt-minion package, we cannot make this script wait all the times until no Salt job running, as it would cause a deadlock.
This new behavior helps to prevent the following exception we have seen on long running upgrades:
The minion function caused an exception: Traceback (most recent call last):
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/minion.py", line 1917, in _thread_return
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/minion.py", line 1876, in _execute_job_function
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1234, in run
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1249, in _run_as
File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/executors/venv.py", line 24, in execute
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1234, in run
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1249, in _run_as
File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/executors/direct_call.py", line 10, in execute
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1234, in run
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1249, in _run_as
File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/modules/state.py", line 833, in apply_
File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/modules/state.py", line 1479, in sls
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 3555, in call_high
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 2723, in call_chunks
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 3245, in call_chunk
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/utils/decorators/state.py", line 45, in _func
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 2463, in call
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 1368, in check_refresh
File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 1316, in module_refresh
File "/usr/lib/venv-salt-minion/lib64/python3.10/importlib/__init__.py", line 168, in reload
ModuleNotFoundError: spec not found for the module 'site'
What does this PR do?
This PR simply makes
venv-salt-minion-postinstall.service
to passWAIT_IF_SALT_JOBS=1
as environment variable when callingpost_start_cleanup.sh
script after a Salt Bundle upgrade.This PR makes sense together with some other changes to
post_start_cleanup.sh
that are done here: https://build.opensuse.org/request/show/1206552The idea here is that, when
post_start_cleanup.sh
is executed byvenv-salt-minion-postinstall.service
, then it waits until there are no active Salt jobs to perform the cleanup. This way we can prevent cleaning up the environment too early while there is an active Salt job which is still making use of it.Since
post_start_cleanup.sh
is also executed as part of a Salt highstate, and also triggered via the RPM scriptlets ofvenv-salt-minion
package, we cannot make this script wait all the times until no Salt job running, as it would cause a deadlock.This new behavior helps to prevent the following exception we have seen on long running upgrades:
What issues does this PR fix or reference?
Fixes: https://github.com/SUSE/spacewalk/issues/24978
Merge requirements satisfied?
[NOTICE] Bug fixes or features added to Salt require tests.
Commits signed with GPG?
Yes
Please review Salt's Contributing Guide for best practices.
See GitHub's page on GPG signing for more information about signing commits with GPG.