From 3de833a9553c123fa269b18d7ae1b8e436c31619 Mon Sep 17 00:00:00 2001 From: chentingting <2393940156@qq.com> Date: Sat, 10 Jun 2023 15:13:46 +0800 Subject: [PATCH] check dssserver available --- script/gspylib/component/DSS/dss_checker.py | 29 +++++++++++++++++-- script/gspylib/component/DSS/dss_comp.py | 3 ++ .../component/Kernel/DN_OLAP/DN_OLAP.py | 2 -- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/script/gspylib/component/DSS/dss_checker.py b/script/gspylib/component/DSS/dss_checker.py index 4f327f55..cfb81b4b 100644 --- a/script/gspylib/component/DSS/dss_checker.py +++ b/script/gspylib/component/DSS/dss_checker.py @@ -168,6 +168,29 @@ class DssConfig(): else: return False + @staticmethod + def check_process_available(logger, process, retry=5, interval=1): + ''' + The dssserver process is not available when running. + Then check if it is available. + ''' + logger.debug(f'Start to check {process} available.' ) + if process.find('dssserver') > -1: + cmd = 'dsscmd lsvg' + for cur in range(retry): + sts, out = CmdUtil.exec_by_popen(cmd) + if not sts: + # There is '.' in the out. + logger.debug(f'The dssserver is not available. Message: {out}') + if cur >= retry - 1: + return False + else: + time.sleep(interval) + else: + logger.debug(f'The dssserver is available. The result of the lsvg: {out}') + break + return True + @staticmethod def set_cm_manual_flag(inst_id, flag, logger): gauss_home = ClusterDir.get_gauss_home() @@ -200,9 +223,11 @@ class DssConfig(): check_flag = flag logger.log(f"Start to wait for {flag} to be started.") while timeout > 0: - if not DssConfig.check_process_exist(check_flag=check_flag): + if not (DssConfig.check_process_exist(check_flag=check_flag) and + DssConfig.check_process_available(logger, flag, retry=1)): if timeout % 5 == 0: - logger.debug(f'The process {flag} if not running.') + logger.debug( + f'The process {flag} if not running or not available.') timeout -= 1 time.sleep(1) continue diff --git a/script/gspylib/component/DSS/dss_comp.py b/script/gspylib/component/DSS/dss_comp.py index 75102a7b..552d71e1 100644 --- a/script/gspylib/component/DSS/dss_comp.py +++ b/script/gspylib/component/DSS/dss_comp.py @@ -251,6 +251,9 @@ class Dss(BaseComponent): om init dss server ''' Dss.start_dss_server(self.logger, self.binPath) + if not DssConfig.check_process_available( + self.logger, 'dssserver'): + raise Exception(ErrorCode.GAUSS_512["GAUSS_51252"]) @staticmethod def catch_err(exist_so=True): diff --git a/script/gspylib/component/Kernel/DN_OLAP/DN_OLAP.py b/script/gspylib/component/Kernel/DN_OLAP/DN_OLAP.py index d3897eca..3f5f5ec3 100644 --- a/script/gspylib/component/Kernel/DN_OLAP/DN_OLAP.py +++ b/script/gspylib/component/Kernel/DN_OLAP/DN_OLAP.py @@ -144,8 +144,6 @@ class DN_OLAP(Kernel): if self.paxos_mode: cmd += " -c" elif self.dss_mode: - if not DssConfig.check_process_exist('dssserver'): - raise Exception('The dssserver process does not exist.') vgname = EnvUtil.getEnv('VGNAME') dss_home = EnvUtil.getEnv('DSS_HOME') inst_id = DssInst.get_dss_id_from_key(dss_home) -- Gitee