[scn] fix failure of mittest after refresh feature scn
This commit is contained in:
@ -11,6 +11,10 @@ import config
|
||||
import opts
|
||||
import run_modules
|
||||
import actions
|
||||
import normal_ddl_actions_pre
|
||||
import normal_dml_actions_pre
|
||||
import each_tenant_dml_actions_pre
|
||||
import upgrade_sys_vars
|
||||
import special_upgrade_action_pre
|
||||
|
||||
# 由于用了/*+read_consistency(WEAK) */来查询,因此升级期间不能允许创建或删除租户
|
||||
@ -41,6 +45,7 @@ def dump_sql_to_file(cur, query_cur, dump_filename, tenant_id_list, update_sys_v
|
||||
normal_ddls_str = normal_ddl_actions_pre.get_normal_ddl_actions_sqls_str(query_cur)
|
||||
normal_dmls_str = normal_dml_actions_pre.get_normal_dml_actions_sqls_str()
|
||||
each_tenant_dmls_str = each_tenant_dml_actions_pre.get_each_tenant_dml_actions_sqls_str(tenant_id_list)
|
||||
sys_vars_upgrade_dmls_str = upgrade_sys_vars.get_sys_vars_upgrade_dmls_str(cur, query_cur, tenant_id_list, update_sys_var_list, add_sys_var_list)
|
||||
dump_file = open(dump_filename, 'w')
|
||||
dump_file.write('# 以下是upgrade_pre.py脚本中的步骤\n')
|
||||
dump_file.write('# 仅供upgrade_pre.py脚本运行失败需要人肉的时候参考\n')
|
||||
@ -90,12 +95,77 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, my_module_set, upgrade_para
|
||||
check_before_upgrade(query_cur, upgrade_params)
|
||||
# get min_observer_version
|
||||
version = actions.fetch_observer_version(query_cur)
|
||||
need_check_standby_cluster = cmp(version, '2.2.40') >= 0
|
||||
# 获取租户id列表
|
||||
tenant_id_list = actions.fetch_tenant_ids(query_cur)
|
||||
if len(tenant_id_list) <= 0:
|
||||
logging.error('distinct tenant id count is <= 0, tenant_id_count: %d', len(tenant_id_list))
|
||||
raise MyError('no tenant id')
|
||||
logging.info('there has %s distinct tenant ids: [%s]', len(tenant_id_list), ','.join(str(tenant_id) for tenant_id in tenant_id_list))
|
||||
# 计算需要添加或更新的系统变量
|
||||
conn.commit()
|
||||
|
||||
# 获取standby_cluster_info列表
|
||||
standby_cluster_infos = []
|
||||
if need_check_standby_cluster:
|
||||
standby_cluster_infos = actions.fetch_standby_cluster_infos(conn, query_cur, my_user, my_passwd)
|
||||
# check ddl and dml sync
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
|
||||
conn.autocommit = True
|
||||
(update_sys_var_list, update_sys_var_ori_list, add_sys_var_list) = upgrade_sys_vars.calc_diff_sys_var(cur, tenant_id_list[0])
|
||||
dump_sql_to_file(cur, query_cur, upgrade_params.sql_dump_filename, tenant_id_list, update_sys_var_list, add_sys_var_list)
|
||||
conn.autocommit = False
|
||||
conn.commit()
|
||||
logging.info('update system variables list: [%s]', ', '.join(str(sv) for sv in update_sys_var_list))
|
||||
logging.info('update system variables original list: [%s]', ', '.join(str(sv) for sv in update_sys_var_ori_list))
|
||||
logging.info('add system variables list: [%s]', ', '.join(str(sv) for sv in add_sys_var_list))
|
||||
logging.info('================succeed to dump sql to file: {0}==============='.format(upgrade_params.sql_dump_filename))
|
||||
|
||||
if run_modules.MODULE_DDL in my_module_set:
|
||||
logging.info('================begin to run ddl===============')
|
||||
conn.autocommit = True
|
||||
normal_ddl_actions_pre.do_normal_ddl_actions(cur)
|
||||
logging.info('================succeed to run ddl===============')
|
||||
conn.autocommit = False
|
||||
# check ddl and dml sync
|
||||
if need_check_standby_cluster:
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
|
||||
if run_modules.MODULE_NORMAL_DML in my_module_set:
|
||||
logging.info('================begin to run normal dml===============')
|
||||
normal_dml_actions_pre.do_normal_dml_actions(cur)
|
||||
normal_dml_actions_pre.do_normal_dml_actions_by_standby_cluster(standby_cluster_infos)
|
||||
logging.info('================succeed to run normal dml===============')
|
||||
conn.commit()
|
||||
actions.refresh_commit_sql_list()
|
||||
logging.info('================succeed to commit dml===============')
|
||||
# check ddl and dml sync
|
||||
if need_check_standby_cluster:
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
|
||||
if run_modules.MODULE_EACH_TENANT_DML in my_module_set:
|
||||
logging.info('================begin to run each tenant dml===============')
|
||||
conn.autocommit = True
|
||||
each_tenant_dml_actions_pre.do_each_tenant_dml_actions(cur, tenant_id_list)
|
||||
each_tenant_dml_actions_pre.do_each_tenant_dml_actions_by_standby_cluster(standby_cluster_infos)
|
||||
conn.autocommit = False
|
||||
logging.info('================succeed to run each tenant dml===============')
|
||||
# check ddl and dml sync
|
||||
if need_check_standby_cluster:
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
|
||||
# 更新系统变量
|
||||
if run_modules.MODULE_SYSTEM_VARIABLE_DML in my_module_set:
|
||||
logging.info('================begin to run system variable dml===============')
|
||||
conn.autocommit = True
|
||||
upgrade_sys_vars.exec_sys_vars_upgrade_dml(cur, tenant_id_list)
|
||||
conn.autocommit = False
|
||||
logging.info('================succeed to run system variable dml===============')
|
||||
# check dml sync
|
||||
if need_check_standby_cluster:
|
||||
upgrade_sys_vars.exec_sys_vars_upgrade_dml_in_standby_cluster(standby_cluster_infos)
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
|
||||
if run_modules.MODULE_SPECIAL_ACTION in my_module_set:
|
||||
logging.info('================begin to run special action===============')
|
||||
@ -104,6 +174,10 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, my_module_set, upgrade_para
|
||||
conn.autocommit = False
|
||||
actions.refresh_commit_sql_list()
|
||||
logging.info('================succeed to commit special action===============')
|
||||
# check ddl and dml sync
|
||||
if need_check_standby_cluster:
|
||||
special_upgrade_action_pre.do_special_upgrade_in_standy_cluster(standby_cluster_infos, my_user, my_passwd)
|
||||
actions.check_ddl_and_dml_sync(conn, query_cur, standby_cluster_infos, tenant_id_list)
|
||||
except Exception, e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user