All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] classes/sstate.bbclass: Enable thread lock when checkstatus
@ 2016-10-04 16:45 Aníbal Limón
  2016-10-04 16:46 ` Aníbal Limón
  0 siblings, 1 reply; 2+ messages in thread
From: Aníbal Limón @ 2016-10-04 16:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: joshua.g.lock, clarson

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@linux.intel.com>
---
 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')
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] classes/sstate.bbclass: Enable thread lock when checkstatus
  2016-10-04 16:45 [PATCH] classes/sstate.bbclass: Enable thread lock when checkstatus Aníbal Limón
@ 2016-10-04 16:46 ` Aníbal Limón
  0 siblings, 0 replies; 2+ messages in thread
From: Aníbal Limón @ 2016-10-04 16:46 UTC (permalink / raw)
  To: openembedded-core; +Cc: joshua.g.lock, clarson

[-- Attachment #1: Type: text/plain, Size: 1795 bytes --]

This patch depends on bitbake one,

http://lists.openembedded.org/pipermail/bitbake-devel/2016-October/008129.html

Cheers,
	alimon

On 10/04/2016 11:45 AM, Aníbal Limón wrote:
> 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@linux.intel.com>
> ---
>  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')
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-10-04 16:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-04 16:45 [PATCH] classes/sstate.bbclass: Enable thread lock when checkstatus Aníbal Limón
2016-10-04 16:46 ` Aníbal Limón

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.