fix refts rollback
This commit is contained in:
@ -397,7 +397,7 @@ int ObTenantRoleTransitionService::do_switch_access_mode_to_append(
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("tenant switchover status not valid", KR(ret), K(tenant_info),
|
||||
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));
|
||||
//TODO(yaoying):xianming
|
||||
} 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;
|
||||
}
|
||||
|
||||
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;
|
||||
ObTimeoutCtx ctx;
|
||||
ref_scn.set_min();
|
||||
if (OB_FAIL(check_inner_stat())) {
|
||||
ref_scn = sync_scn;
|
||||
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_));
|
||||
} else if (OB_FAIL(ObShareUtil::set_default_timeout_ctx(ctx, GCONF.internal_sql_execute_timeout))) {
|
||||
LOG_WARN("failed to set default timeout", KR(ret));
|
||||
|
@ -120,7 +120,7 @@ public:
|
||||
int do_switch_access_mode_to_append(const share::ObAllTenantInfo &tenant_info,
|
||||
const share::ObTenantRole &target_tenant_role);
|
||||
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
|
||||
int report_sys_ls_sync_scn_();
|
||||
void set_switchover_epoch(const int64_t switchover_epoch)
|
||||
|
Reference in New Issue
Block a user