bitbake: 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]

(Bitbake rev: fec2b85689bba1d26ad6f376bc11cc29bb27cbe5)

Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Stacy Gaikovaia
2020-10-23 10:17:56 -04:00
committed by Richard Purdie
parent 8de1cd3886
commit c0f18b8bf5

View File

@@ -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()