From 77a9c9b66b26563729d35f8f7ee957d623659fe8 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 13 Dec 2022 23:16:02 +0000 Subject: bitbake: main/process: Add extra sockname debugging We're struggling to understand how bitbake.sock can sometimes disappear in live builds when we can't see where it could have been deleted. This causes connection failures to the server and failed builds. Add some extra debugging around the server log and client retry log messages to give more information for the next time this issue occurs. (Bitbake rev: 376a516dc8c96727fd042ada65f803013601ee2d) Signed-off-by: Richard Purdie --- bitbake/lib/bb/main.py | 3 ++- bitbake/lib/bb/server/process.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py index 1e38d04bcf..f1ea7859da 100755 --- a/bitbake/lib/bb/main.py +++ b/bitbake/lib/bb/main.py @@ -441,7 +441,8 @@ def setup_bitbake(configParams, extrafeatures=None): logger.info("Previous bitbake instance shutting down?, waiting to retry... (%s)" % timestamp()) procs = bb.server.process.get_lockfile_process_msg(lockfile) if procs: - logger.info("Processes holding bitbake.lock:\n%s" % procs) + logger.info("Processes holding bitbake.lock (missing socket %s):\n%s" % (sockname, procs)) + logger.info("Directory listing: %s" % (str(os.listdir(topdir)))) i = 0 lock = None # Wait for 5s or until we can get the lock diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index f4ab80ba67..44c65451fc 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py @@ -154,9 +154,10 @@ class ProcessServer(): fds.append(self.xmlrpc) seendata = False serverlog("Entering server connection loop") + serverlog("Lockfile is: %s\nSocket is %s (%s)" % (self.bitbake_lock_name, self.sockname, os.path.exists(self.sockname))) def disconnect_client(self, fds): - serverlog("Disconnecting Client") + serverlog("Disconnecting Client (socket: %s)" % os.path.exists(self.sockname)) if self.controllersock: fds.remove(self.controllersock) self.controllersock.close() @@ -246,7 +247,7 @@ class ProcessServer(): try: serverlog("Running command %s" % command) self.command_channel_reply.send(self.cooker.command.runCommand(command)) - serverlog("Command Completed") + serverlog("Command Completed (socket: %s)" % os.path.exists(self.sockname)) except Exception as e: stack = traceback.format_exc() serverlog('Exception in server main event loop running command %s (%s)' % (command, stack)) @@ -273,7 +274,7 @@ class ProcessServer(): ready = self.idle_commands(.1, fds) - serverlog("Exiting") + serverlog("Exiting (socket: %s)" % os.path.exists(self.sockname)) # Remove the socket file so we don't get any more connections to avoid races try: os.unlink(self.sockname) -- cgit v1.2.3-54-g00ecf