fix refts rollback
This commit is contained in:
@ -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));
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user