Eliminate possible race condition in async_wrapper where ansible deletes the argsfile while the module

is still kicking off.  Should not happen except in modules that are somewhat slow to load and probably
can be fixed better than the included sleep, i.e. some IPC communication that the process has
launched and is ok to exit.  This works pretty well for now though.
This commit is contained in:
Michael DeHaan 2012-04-01 02:35:19 -04:00
parent dca511fa35
commit a3bd951bfb
2 changed files with 12 additions and 6 deletions

View file

@ -134,6 +134,11 @@ if pid != 0:
# print "RETURNING SUCCESS IN PARENT"
print json.dumps({ "started" : 1, "ansible_job_id" : jid, "results_file" : log_path })
sys.stdout.flush()
# we need to not return immmediately such that the launched command has an attempt
# to initialize PRIOR to ansible trying to clean up the launch directory (and argsfile)
# this probably could be done with some IPC later. Modules should always read
# the argsfile at the very first start of their execution anyway
time.sleep(1)
sys.exit(0)
else:
# the kid manages the job

13
yum
View file

@ -265,13 +265,14 @@ def remove_only(pkgspec):
def main():
# state=installed pkg=pkgspec
# state=removed pkg=pkgspec
# list=installed
# list=updates
# list=available
# list=repos
# list=pkgspec
# update="args"?
# state=latest pkg=pkgspec
#
# informational commands:
# list=installed
# list=updates
# list=available
# list=repos
# list=pkgspec
if len(sys.argv) == 1:
msg = "the yum module requires arguments (-a)"