Openembedded Bitbake Development
 help / color / mirror / Atom feed
* [1.52][PATCH 0/4] Review request
@ 2021-11-16 16:26 Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 1/4] cooker: Handle parse threads disappearing to avoid hangs Anuj Mittal
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-11-16 16:26 UTC (permalink / raw)
  To: bitbake-devel

Please review these changes for 1.52. No problems seen while testing on
autobuilder.

Thanks,

Anuj

The following changes since commit 693eec8edf8d3b2b01c53be6776213cccd797485:

  runqueue: Fix runall option handling (2021-11-12 14:16:48 +0800)

are available in the Git repository at:

  git://push.openembedded.org/bitbake-contrib stable/1.52-next

Richard Purdie (4):
  cooker: Handle parse threads disappearing to avoid hangs
  cooker: Remove debug code, oops :(
  cooker: Handle parsing results queue race
  cooker: Fix task-depends.dot for multiconfig targets

 lib/bb/cooker.py | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

-- 
2.33.1



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

* [1.52][PATCH 1/4] cooker: Handle parse threads disappearing to avoid hangs
  2021-11-16 16:26 [1.52][PATCH 0/4] Review request Anuj Mittal
@ 2021-11-16 16:26 ` Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 2/4] cooker: Remove debug code, oops :( Anuj Mittal
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-11-16 16:26 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

If one of the parse threads disappears during parsing for some reason, bitbake
currently hangs. Avoid this (and zombie threads hanging around) by joining()
threads which have exited.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dc86a533d951d13643ce446533370da804782afc)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 lib/bb/cooker.py | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 06b40c13..8ae8e4ec 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -2040,6 +2040,7 @@ class Parser(multiprocessing.Process):
                 result = pending.pop()
             else:
                 try:
+                    time.sleep(0.25)
                     job = self.jobs.pop()
                 except IndexError:
                     self.results.close()
@@ -2218,7 +2219,7 @@ class CookerParser(object):
             yield not cached, mc, infos
 
     def parse_generator(self):
-        while True:
+        while self.processes:
             if self.parsed >= self.toparse:
                 break
 
@@ -2232,6 +2233,14 @@ class CookerParser(object):
                     raise value
                 else:
                     yield result
+            for process in self.processes.copy():
+                if not process.is_alive():
+                    process.join()
+                    self.processes.remove(process)
+
+        if not (self.parsed >= self.toparse):
+            raise bb.parse.ParseError("Not all recipes parsed, parser thread killed/died? Exiting.", None)
+
 
     def parse_next(self):
         result = []
-- 
2.33.1



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

* [1.52][PATCH 2/4] cooker: Remove debug code, oops :(
  2021-11-16 16:26 [1.52][PATCH 0/4] Review request Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 1/4] cooker: Handle parse threads disappearing to avoid hangs Anuj Mittal
@ 2021-11-16 16:26 ` Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 3/4] cooker: Handle parsing results queue race Anuj Mittal
  2021-11-16 16:27 ` [1.52][PATCH 4/4] cooker: Fix task-depends.dot for multiconfig targets Anuj Mittal
  3 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-11-16 16:26 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 19291665fa8b6cc331290f2542af3e8e653203f1)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 lib/bb/cooker.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 8ae8e4ec..9be6603f 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -2040,7 +2040,6 @@ class Parser(multiprocessing.Process):
                 result = pending.pop()
             else:
                 try:
-                    time.sleep(0.25)
                     job = self.jobs.pop()
                 except IndexError:
                     self.results.close()
-- 
2.33.1



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

* [1.52][PATCH 3/4] cooker: Handle parsing results queue race
  2021-11-16 16:26 [1.52][PATCH 0/4] Review request Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 1/4] cooker: Handle parse threads disappearing to avoid hangs Anuj Mittal
  2021-11-16 16:26 ` [1.52][PATCH 2/4] cooker: Remove debug code, oops :( Anuj Mittal
@ 2021-11-16 16:26 ` Anuj Mittal
  2021-11-16 16:27 ` [1.52][PATCH 4/4] cooker: Fix task-depends.dot for multiconfig targets Anuj Mittal
  3 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-11-16 16:26 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

The previous fix introduced a race where the queue might not be empty
but all the parser processes have exited. Handle this correctly to avoid
occasional errors.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8e7f2b6500e26610f52d128b48ca0a09bf6fb2cb)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 lib/bb/cooker.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 9be6603f..c032762f 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -2218,24 +2218,28 @@ class CookerParser(object):
             yield not cached, mc, infos
 
     def parse_generator(self):
-        while self.processes:
+        empty = False
+        while self.processes or not empty:
+            for process in self.processes.copy():
+                if not process.is_alive():
+                    process.join()
+                    self.processes.remove(process)
+
             if self.parsed >= self.toparse:
                 break
 
             try:
                 result = self.result_queue.get(timeout=0.25)
             except queue.Empty:
+                empty = True
                 pass
             else:
+                empty = False
                 value = result[1]
                 if isinstance(value, BaseException):
                     raise value
                 else:
                     yield result
-            for process in self.processes.copy():
-                if not process.is_alive():
-                    process.join()
-                    self.processes.remove(process)
 
         if not (self.parsed >= self.toparse):
             raise bb.parse.ParseError("Not all recipes parsed, parser thread killed/died? Exiting.", None)
-- 
2.33.1



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

* [1.52][PATCH 4/4] cooker: Fix task-depends.dot for multiconfig targets
  2021-11-16 16:26 [1.52][PATCH 0/4] Review request Anuj Mittal
                   ` (2 preceding siblings ...)
  2021-11-16 16:26 ` [1.52][PATCH 3/4] cooker: Handle parsing results queue race Anuj Mittal
@ 2021-11-16 16:27 ` Anuj Mittal
  3 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-11-16 16:27 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

The right hand side of dependencies in the task dependency file generated
by bitbake -g was missing multiconfig prefixes, corrupting the data. Fix
this.

[YOCTO #14621]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1d5ca721040c5e39aefa11219f62710de6587701)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
 lib/bb/cooker.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index c032762f..3688aa08 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -814,7 +814,9 @@ class BBCooker:
             for dep in rq.rqdata.runtaskentries[tid].depends:
                 (depmc, depfn, _, deptaskfn) = bb.runqueue.split_tid_mcfn(dep)
                 deppn = self.recipecaches[depmc].pkg_fn[deptaskfn]
-                depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, bb.runqueue.taskname_from_tid(dep)))
+                if depmc:
+                    depmc = "mc:" + depmc + ":"
+                depend_tree["tdepends"][dotname].append("%s%s.%s" % (depmc, deppn, bb.runqueue.taskname_from_tid(dep)))
             if taskfn not in seen_fns:
                 seen_fns.append(taskfn)
                 packages = []
-- 
2.33.1



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

* [1.52][PATCH 0/4] Review request
@ 2021-12-31  0:21 Anuj Mittal
  0 siblings, 0 replies; 6+ messages in thread
From: Anuj Mittal @ 2021-12-31  0:21 UTC (permalink / raw)
  To: bitbake-devel

Please review and merge these changes for 1.52. No issues seen while
testing on autobuilder.

Thanks,

Anuj

The following changes since commit 6bfb02f845001bf4f05d9b68695bb616b1642b2a:

  lib/pyinotify.py: Remove deprecated module asyncore (2021-12-14 22:59:46 +0000)

are available in the Git repository at:

  git://push.openembedded.org/bitbake-contrib stable/1.52-next

Anton Mikanovich (1):
  process: Do not mix stderr with stdout

Richard Purdie (1):
  tests/fetch: Drop gnu urls from wget connectivity test

Stefan Herbrechtsmeier (2):
  fetch: npm: Quote destdir in run chmod command
  fetch: npm: Use temporary file for empty user config

 lib/bb/fetch2/npm.py  | 16 ++++++----------
 lib/bb/process.py     |  2 +-
 lib/bb/tests/fetch.py |  3 ---
 3 files changed, 7 insertions(+), 14 deletions(-)

-- 
2.33.1



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

end of thread, other threads:[~2021-12-31  0:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-16 16:26 [1.52][PATCH 0/4] Review request Anuj Mittal
2021-11-16 16:26 ` [1.52][PATCH 1/4] cooker: Handle parse threads disappearing to avoid hangs Anuj Mittal
2021-11-16 16:26 ` [1.52][PATCH 2/4] cooker: Remove debug code, oops :( Anuj Mittal
2021-11-16 16:26 ` [1.52][PATCH 3/4] cooker: Handle parsing results queue race Anuj Mittal
2021-11-16 16:27 ` [1.52][PATCH 4/4] cooker: Fix task-depends.dot for multiconfig targets Anuj Mittal
  -- strict thread matches above, loose matches on Subject: below --
2021-12-31  0:21 [1.52][PATCH 0/4] Review request Anuj Mittal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox