[oe-commits] [openembedded-core] 13/17: classes/sstate.bbclass: Enable thread lock when checkstatus

git at git.openembedded.org git at git.openembedded.org
Tue Oct 4 23:19:20 UTC 2016


rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 6e0bb9d141438c0051c32b0d3a247915b71ccb82
Author: Aníbal Limón <anibal.limon at linux.intel.com>
AuthorDate: Tue Oct 4 11:45:53 2016 -0500

    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]
    
    Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/sstate.bbclass | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 6f0c791..172384b 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -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')

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list