From a07cf2e50c376ce1fdcc9ac77e291595489de3ce Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Tue, 10 Feb 2015 16:25:17 +0000 Subject: bitbake: toaster: properly detect failed server start This patch brings in reading the server log if the server fails to start. This is the first step in displaying the errors in a manner that is actionable by the user. [YOCTO #7285] (Bitbake rev: 7f47b67bccff55673a827dbcccc767af4459c933) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- bitbake/lib/toaster/bldcontrol/localhostbecontroller.py | 5 ++++- .../lib/toaster/bldcontrol/management/commands/runbuilds.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index 005c464314..4814b84afd 100644 --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py @@ -108,7 +108,7 @@ class LocalhostBEController(BuildEnvironmentController): logger.debug("localhostbecontroller: running the listener at %s" % own_bitbake) - cmd = "bash -c \"source %s/oe-init-build-env %s && bitbake --read conf/toaster-pre.conf --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:0 && DATABASE_URL=%s BBSERVER=0.0.0.0:-1 daemon -d -i -D %s -o toaster_ui.log -- %s --observe-only -u toasterui &\"" % (self.pokydirname, self.be.builddir, + cmd = "bash -c \"source %s/oe-init-build-env %s && bitbake --read conf/toaster-pre.conf --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:0 >toaster_server.log && DATABASE_URL=%s BBSERVER=0.0.0.0:-1 daemon -d -i -D %s -o toaster_ui.log -- %s --observe-only -u toasterui &\"" % (self.pokydirname, self.be.builddir, self.dburl, self.be.builddir, own_bitbake) port = "-1" cmdoutput = self._shellcmd(cmd) @@ -290,6 +290,9 @@ class LocalhostBEController(BuildEnvironmentController): self.islayerset = True return True + def readServerLogFile(self): + return open(os.path.join(self.be.builddir, "toaster_server.log"), "r").read() + def release(self): assert self.be.sourcedir and os.path.exists(self.be.builddir) import shutil diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py index c4ab87bdc9..3de582cc86 100644 --- a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py +++ b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py @@ -78,10 +78,16 @@ class Command(NoArgsCommand): except Exception as e: logger.error("runbuilds: Error executing shell command %s" % e) traceback.print_exc(e) + if "[Errno 111] Connection refused" in str(e): + # Connection refused, read toaster_server.out + errmsg = bec.readServerLogFile() + else: + errmsg = str(e) + BRError.objects.create(req = br, - errtype = str(type(e)), - errmsg = str(e), - traceback = traceback.format_exc(e)) + errtype = str(type(e)), + errmsg = errmsg, + traceback = traceback.format_exc(e)) br.state = BuildRequest.REQ_FAILED br.save() bec.be.lock = BuildEnvironment.LOCK_FREE -- cgit v1.2.3-54-g00ecf