bitbake: cooker: Ensure parse_quit thread is closed down

Each run through the parser would leak a thread from the queue created to
shut the parser down. Close this down correctly and clean up the code flow
slightly whilst in the area, making sure this thread does shut down correctly
(we don't care if it loses data).

(Bitbake rev: 1dcc4e29dee3fd0dd4d6dc2fc9ccdc5888fcfcf3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2021-06-15 12:00:30 -10:00
parent f8c304e07a
commit b31affa946

View File

@@ -2056,12 +2056,11 @@ class CookerParser(object):
self.total)
bb.event.fire(event, self.cfgdata)
for process in self.processes:
self.parser_quit.put(None)
else:
self.parser_quit.cancel_join_thread()
for process in self.processes:
self.parser_quit.put(None)
# Allow data left in the cancel queue to be discarded
self.parser_quit.cancel_join_thread()
for process in self.processes:
self.parser_quit.put(None)
# Cleanup the queue before call process.join(), otherwise there might be
# deadlocks.
@@ -2078,6 +2077,9 @@ class CookerParser(object):
else:
process.join()
self.parser_quit.close()
self.parser_quit.join_thread()
sync = threading.Thread(target=self.bb_cache.sync)
sync.start()
multiprocessing.util.Finalize(None, sync.join, exitpriority=-100)