Browse Source

main: Handle cooker daemon startup error

On startup, bitbake spawns a cooker daemon and waits for
it's acknowledgement signal.  If the acknowledgement
doesn't happen in time,the bitbake object will fail to
initialize and exit.

The error that occurs in this case isn't handled by
the existing try - catch block because SystemExit inherits
from a different base Exception class.

This commit adds SystemExit to the list of expected bitbake
server startup errors.

[YOCTO #13993]

Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Stacy Gaikovaia 3 years ago
parent
commit
fec2b85689
1 changed files with 4 additions and 2 deletions
  1. 4 2
      lib/bb/main.py

+ 4 - 2
lib/bb/main.py

@@ -456,15 +456,17 @@ def setup_bitbake(configParams, extrafeatures=None):
                     break
             except BBMainFatal:
                 raise
-            except (Exception, bb.server.process.ProcessTimeout) as e:
+            except (Exception, bb.server.process.ProcessTimeout, SystemExit) as e:
+                # SystemExit does not inherit from the Exception class, needs to be included explicitly
                 if not retries:
                     raise
                 retries -= 1
                 tryno = 8 - retries
-                if isinstance(e, (bb.server.process.ProcessTimeout, BrokenPipeError, EOFError)):
+                if isinstance(e, (bb.server.process.ProcessTimeout, BrokenPipeError, EOFError, SystemExit)):
                     logger.info("Retrying server connection (#%d)..." % tryno)
                 else:
                     logger.info("Retrying server connection (#%d)... (%s)" % (tryno, traceback.format_exc()))
+                
             if not retries:
                 bb.fatal("Unable to connect to bitbake server, or start one (server startup failures would be in bitbake-cookerdaemon.log).")
             bb.event.print_ui_queue()