From 2e1811861b250cc43c57c5b2e0c59d568efb5dc4 Mon Sep 17 00:00:00 2001 From: Bharat Kunwar Date: Fri, 15 May 2020 07:03:10 +0000 Subject: [PATCH] [hca] Join threads before closing file descriptor In some environments, heat container agent is erroring because of file descriptor closing before threads have joined. Change-Id: I1de5042ea5f4229518e96b985b1832dcacb052db Story: 2007264 Task: 39788 --- dockerfiles/heat-container-agent/scripts/hooks/script | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dockerfiles/heat-container-agent/scripts/hooks/script b/dockerfiles/heat-container-agent/scripts/hooks/script index 3205d3fc3c..dd24c68386 100755 --- a/dockerfiles/heat-container-agent/scripts/hooks/script +++ b/dockerfiles/heat-container-agent/scripts/hooks/script @@ -87,9 +87,14 @@ def main(argv=sys.argv): logger = dict(stdout=lambda line: log.info(line), stderr=lambda line: log.debug(line)) with open(lp, 'w') as fd: - for label in ['stdout', 'stderr']: - threading.Thread(target=consumer, args=[label, fd]).start() + threads = [] + for lb in ['stdout', 'stderr']: + t = threading.Thread(target=consumer, args=[lb, fd]) + threads.append(t) + t.start() deploy_status_code = subproc.wait() + for t in threads: + t.join() if deploy_status_code: log.error("Error running %s. [%s]\n" % (fn, deploy_status_code))