[UPGRADE] Make upgrade_post.py reentrant

This commit is contained in:
tino247
2023-02-09 14:10:14 +00:00
committed by ob-robot
parent 7be8e390eb
commit 079e8b9a01
4 changed files with 87 additions and 57 deletions

View File

@ -218,59 +218,70 @@ def wait_parameter_sync(cur, is_tenant_config, key, value, timeout):
time.sleep(5)
def do_begin_upgrade(cur, timeout):
action_sql = "alter system begin upgrade"
rollback_sql = "alter system end upgrade"
if not check_parameter(cur, False, "enable_upgrade_mode", "True"):
action_sql = "alter system begin upgrade"
rollback_sql = "alter system end upgrade"
logging.info(action_sql)
cur.execute(action_sql)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
wait_parameter_sync(cur, False, "enable_upgrade_mode", "True", timeout)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
def do_begin_rolling_upgrade(cur, timeout):
action_sql = "alter system begin rolling upgrade"
rollback_sql = "alter system end upgrade"
if not check_parameter(cur, False, "_upgrade_stage", "DBUPGRADE"):
action_sql = "alter system begin rolling upgrade"
rollback_sql = "alter system end upgrade"
logging.info(action_sql)
cur.execute(action_sql)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
wait_parameter_sync(cur, False, "_upgrade_stage", "DBUPGRADE", timeout)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
def do_end_rolling_upgrade(cur, timeout):
# maybe in upgrade_post_check stage or never run begin upgrade
if check_parameter(cur, False, "enable_upgrade_mode", "False"):
return
current_cluster_version = get_current_cluster_version()
action_sql = "alter system end rolling upgrade"
rollback_sql = "alter system end upgrade"
if not check_parameter(cur, False, "_upgrade_stage", "POSTUPGRADE") or not check_parameter(cur, False, "min_observer_version", current_cluster_version):
action_sql = "alter system end rolling upgrade"
rollback_sql = "alter system end upgrade"
logging.info(action_sql)
cur.execute(action_sql)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
wait_parameter_sync(cur, False, "min_observer_version", current_data_version, timeout)
wait_parameter_sync(cur, False, "_upgrade_stage", "POSTUPGRADE", timeout)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
def do_end_upgrade(cur, timeout):
action_sql = "alter system end upgrade"
rollback_sql = ""
if not check_parameter(cur, False, "enable_upgrade_mode", "False"):
action_sql = "alter system end upgrade"
rollback_sql = ""
logging.info(action_sql)
cur.execute(action_sql)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
wait_parameter_sync(cur, False, "enable_upgrade_mode", "False", timeout)
global g_succ_sql_list
g_succ_sql_list.append(SqlItem(action_sql, rollback_sql))
class Cursor:
__cursor = None