mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 17:39:31 +00:00
classes/sstate.bbclass: Enable thread lock when checkstatus
The checkstatus function fires an event to notify bitbake UI about the progress of the task, this function is implemented using ThreadPool and is causing event lose when multiple threads tries to fire an event (writes over socket/fd). [YOCTO #10330] (From OE-Core rev: 6e0bb9d141438c0051c32b0d3a247915b71ccb82) Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
f1f6993c72
commit
f205384495
@@ -851,15 +851,19 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=False):
|
||||
|
||||
if tasklist:
|
||||
bb.event.fire(bb.event.ProcessStarted("Checking sstate mirror object availability", len(tasklist)), d)
|
||||
|
||||
import multiprocessing
|
||||
nproc = min(multiprocessing.cpu_count(), len(tasklist))
|
||||
|
||||
bb.event.enable_threadlock()
|
||||
pool = oe.utils.ThreadedPool(nproc, len(tasklist),
|
||||
worker_init=checkstatus_init, worker_end=checkstatus_end)
|
||||
for t in tasklist:
|
||||
pool.add_task(checkstatus, t)
|
||||
pool.start()
|
||||
pool.wait_completion()
|
||||
bb.event.disable_threadlock()
|
||||
|
||||
bb.event.fire(bb.event.ProcessFinished("Checking sstate mirror object availability"), d)
|
||||
if whitelist and missing:
|
||||
bb.fatal('Required artifacts were unavailable - exiting')
|
||||
|
||||
Reference in New Issue
Block a user