wait user ls end scn when switchover

This commit is contained in:
obdev
2023-08-18 12:09:45 +08:00
committed by ob-robot
parent 5d4d4e3de5
commit 3c3b68a7f1
13 changed files with 315 additions and 96 deletions

View File

@ -7409,16 +7409,18 @@ OB_SERIALIZE_MEMBER(ObGetLSAccessModeInfoArg, tenant_id_, ls_id_);
bool ObLSAccessModeInfo::is_valid() const
{
return OB_INVALID_TENANT_ID != tenant_id_
&& ls_id_.is_valid()
&& palf::INVALID_PROPOSAL_ID != mode_version_
&& palf::AccessMode::INVALID_ACCESS_MODE != access_mode_
&& ref_scn_.is_valid();
&& ls_id_.is_valid()
&& palf::INVALID_PROPOSAL_ID != mode_version_
&& palf::AccessMode::INVALID_ACCESS_MODE != access_mode_
&& ref_scn_.is_valid();
// only check sys_ls_end_scn when it's needed
}
int ObLSAccessModeInfo::init(
uint64_t tenant_id, const ObLSID &ls_id,
const int64_t mode_version,
const palf::AccessMode &access_mode,
const SCN &ref_scn)
const SCN &ref_scn,
const share::SCN &sys_ls_end_scn)
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(OB_INVALID_TENANT_ID == tenant_id
@ -7426,15 +7428,18 @@ int ObLSAccessModeInfo::init(
|| palf::AccessMode::INVALID_ACCESS_MODE == access_mode
|| palf::INVALID_PROPOSAL_ID == mode_version
|| !ref_scn.is_valid())) {
// only check sys_ls_end_scn when it's needed
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument", KR(ret), K(tenant_id), K(ls_id),
K(mode_version), K(access_mode), K(ref_scn));
K(mode_version), K(access_mode), K(ref_scn), K(sys_ls_end_scn));
} else {
tenant_id_ = tenant_id;
ls_id_ = ls_id;
mode_version_ = mode_version;
access_mode_ = access_mode;
ref_scn_ = ref_scn;
sys_ls_end_scn_ = sys_ls_end_scn;
}
return ret;
}
@ -7447,10 +7452,11 @@ int ObLSAccessModeInfo::assign(const ObLSAccessModeInfo &other)
mode_version_ = other.mode_version_;
access_mode_ = other.access_mode_;
ref_scn_ = other.ref_scn_;
sys_ls_end_scn_ = other.sys_ls_end_scn_;
}
return ret;
}
OB_SERIALIZE_MEMBER(ObLSAccessModeInfo, tenant_id_, ls_id_, mode_version_, access_mode_, ref_scn_, addr_);
OB_SERIALIZE_MEMBER(ObLSAccessModeInfo, tenant_id_, ls_id_, mode_version_, access_mode_, ref_scn_, addr_, sys_ls_end_scn_);
bool ObChangeLSAccessModeRes::is_valid() const
{