From 5764ccdb0ea4e992c9a391b2293115f59cc4baf7 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Sun, 1 Apr 2012 02:35:19 -0400 Subject: [PATCH] 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. --- library/async_wrapper | 5 +++++ library/yum | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/library/async_wrapper b/library/async_wrapper index eea9396ab22..5faa2f9abea 100755 --- a/library/async_wrapper +++ b/library/async_wrapper @@ -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 diff --git a/library/yum b/library/yum index 524b3a0ebd0..d5a757dc59f 100755 --- a/library/yum +++ b/library/yum @@ -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)"