From 8e2bb3baf97751b7a984295737a5f543d2dc3b7d Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 23 Nov 2019 11:48:31 +0000 Subject: bitbake: prserv/serv: Only restart the server if settings change The server is now restarting when running commands which doesn't make sense. Only restart if its configuration has changed. This should potentially fix various memory resident bitbake usages too. (Bitbake rev: 7c847b01c30fc42cc78244f00fdf5eaa7b5df716) Signed-off-by: Richard Purdie --- bitbake/lib/prserv/serv.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 1d9148b817..6d8142fcc4 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py @@ -450,29 +450,35 @@ class PRServiceConfigError(Exception): def auto_start(d): global singleton - # Shutdown any existing PR Server - auto_shutdown() - host_params = list(filter(None, (d.getVar('PRSERV_HOST') or '').split(':'))) if not host_params: + # Shutdown any existing PR Server + auto_shutdown() return None if len(host_params) != 2: + # Shutdown any existing PR Server + auto_shutdown() logger.critical('\n'.join(['PRSERV_HOST: incorrect format', 'Usage: PRSERV_HOST = ":"'])) raise PRServiceConfigError - if is_local_special(host_params[0], int(host_params[1])) and not singleton: + if is_local_special(host_params[0], int(host_params[1])): import bb.utils cachedir = (d.getVar("PERSISTENT_DIR") or d.getVar("CACHE")) if not cachedir: logger.critical("Please set the 'PERSISTENT_DIR' or 'CACHE' variable") raise PRServiceConfigError - bb.utils.mkdirhier(cachedir) dbfile = os.path.join(cachedir, "prserv.sqlite3") logfile = os.path.join(cachedir, "prserv.log") - singleton = PRServSingleton(os.path.abspath(dbfile), os.path.abspath(logfile), ("localhost",0)) - singleton.start() + if singleton: + if singleton.dbfile != dbfile: + # Shutdown any existing PR Server as doesn't match config + auto_shutdown() + if not singleton: + bb.utils.mkdirhier(cachedir) + singleton = PRServSingleton(os.path.abspath(dbfile), os.path.abspath(logfile), ("localhost",0)) + singleton.start() if singleton: host, port = singleton.getinfo() else: -- cgit v1.2.3-54-g00ecf