cooker: ensure that the cache sync completes
Without explicitly joining the thread, it's possible for the process to end (e.g. after a bitbake -p) and kill off the thread without waiting for it to exit cleanly. So, register the thread join with atexit. (Bitbake rev: 97ce57e6f860d3e6f34cc7a603ed1eeac4f423d3) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
parent
f4a06aac98
commit
7a7e2f4e59
|
@ -28,6 +28,7 @@ import sre_constants
|
||||||
import threading
|
import threading
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import signal
|
import signal
|
||||||
|
import atexit
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
import bb
|
import bb
|
||||||
|
@ -1038,8 +1039,12 @@ class CookerParser(object):
|
||||||
self.task_queue.close()
|
self.task_queue.close()
|
||||||
for process in self.processes:
|
for process in self.processes:
|
||||||
process.join()
|
process.join()
|
||||||
threading.Thread(target=self.bb_cache.sync).start()
|
sync = threading.Thread(target=self.bb_cache.sync)
|
||||||
threading.Thread(target=bb.codeparser.parser_cache_save(self.cooker.configuration.data)).start()
|
sync.start()
|
||||||
|
atexit.register(lambda: sync.join())
|
||||||
|
codesync = threading.Thread(target=bb.codeparser.parser_cache_save(self.cooker.configuration.data))
|
||||||
|
codesync.start()
|
||||||
|
atexit.register(lambda: codesync.join())
|
||||||
if self.error > 0:
|
if self.error > 0:
|
||||||
raise ParsingErrorsFound()
|
raise ParsingErrorsFound()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue