fix refts rollback

This commit is contained in:
obdev
2023-06-28 09:42:13 +00:00
committed by ob-robot
parent ffa0b12f34
commit a466529923
2 changed files with 8 additions and 5 deletions

View File

@ -397,7 +397,7 @@ int ObTenantRoleTransitionService::do_switch_access_mode_to_append(
ret = OB_INVALID_ARGUMENT; ret = OB_INVALID_ARGUMENT;
LOG_WARN("tenant switchover status not valid", KR(ret), K(tenant_info), LOG_WARN("tenant switchover status not valid", KR(ret), K(tenant_info),
K(target_tenant_role), K(switchover_epoch_)); K(target_tenant_role), K(switchover_epoch_));
} else if (OB_FAIL(get_tenant_ref_scn_(ref_scn))) { } else if (OB_FAIL(get_tenant_ref_scn_(tenant_info.get_sync_scn(), ref_scn))) {
LOG_WARN("failed to get tenant ref_scn", KR(ret)); LOG_WARN("failed to get tenant ref_scn", KR(ret));
//TODO(yaoying):xianming //TODO(yaoying):xianming
} else if (OB_FAIL(change_ls_access_mode_(access_mode, ref_scn))) { } else if (OB_FAIL(change_ls_access_mode_(access_mode, ref_scn))) {
@ -438,12 +438,15 @@ int ObTenantRoleTransitionService::do_switch_access_mode_to_append(
return ret; return ret;
} }
int ObTenantRoleTransitionService::get_tenant_ref_scn_(share::SCN &ref_scn) int ObTenantRoleTransitionService::get_tenant_ref_scn_(const share::SCN &sync_scn, share::SCN &ref_scn)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObTimeoutCtx ctx; ObTimeoutCtx ctx;
ref_scn.set_min(); ref_scn = sync_scn;
if (OB_FAIL(check_inner_stat())) { if (!sync_scn.is_valid_and_not_min()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument", KR(ret), K(sync_scn));
} else if (OB_FAIL(check_inner_stat())) {
LOG_WARN("error unexpected", KR(ret), K(tenant_id_), KP(sql_proxy_), KP(rpc_proxy_)); LOG_WARN("error unexpected", KR(ret), K(tenant_id_), KP(sql_proxy_), KP(rpc_proxy_));
} else if (OB_FAIL(ObShareUtil::set_default_timeout_ctx(ctx, GCONF.internal_sql_execute_timeout))) { } else if (OB_FAIL(ObShareUtil::set_default_timeout_ctx(ctx, GCONF.internal_sql_execute_timeout))) {
LOG_WARN("failed to set default timeout", KR(ret)); LOG_WARN("failed to set default timeout", KR(ret));

View File

@ -120,7 +120,7 @@ public:
int do_switch_access_mode_to_append(const share::ObAllTenantInfo &tenant_info, int do_switch_access_mode_to_append(const share::ObAllTenantInfo &tenant_info,
const share::ObTenantRole &target_tenant_role); const share::ObTenantRole &target_tenant_role);
int do_switch_access_mode_to_raw_rw(const share::ObAllTenantInfo &tenant_info); int do_switch_access_mode_to_raw_rw(const share::ObAllTenantInfo &tenant_info);
int get_tenant_ref_scn_(share::SCN &ref_scn); int get_tenant_ref_scn_(const share::SCN &sync_scn, share::SCN &ref_scn);
//before primary tenant switchover to standby, must set sys LS's sync_scn to lastest //before primary tenant switchover to standby, must set sys LS's sync_scn to lastest
int report_sys_ls_sync_scn_(); int report_sys_ls_sync_scn_();
void set_switchover_epoch(const int64_t switchover_epoch) void set_switchover_epoch(const int64_t switchover_epoch)