fix scn shortage about major_freeze
This commit is contained in:
@ -405,7 +405,6 @@ int ObFreezeInfoManager::generate_frozen_scn(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t new_gts = 0;
|
|
||||||
SCN tmp_frozen_scn;
|
SCN tmp_frozen_scn;
|
||||||
SCN local_max_frozen_scn;
|
SCN local_max_frozen_scn;
|
||||||
|
|
||||||
@ -418,17 +417,15 @@ int ObFreezeInfoManager::generate_frozen_scn(
|
|||||||
} else if (max_frozen_status.frozen_scn_ != local_max_frozen_scn) {
|
} else if (max_frozen_status.frozen_scn_ != local_max_frozen_scn) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("max frozen_scn not same in cache and table", KR(ret), K(max_frozen_status), K(local_max_frozen_scn));
|
LOG_WARN("max frozen_scn not same in cache and table", KR(ret), K(max_frozen_status), K(local_max_frozen_scn));
|
||||||
} else if (OB_FAIL(get_gts(new_gts))) {
|
} else if (OB_FAIL(get_gts(tmp_frozen_scn))) {
|
||||||
LOG_WARN("fail to get gts", KR(ret));
|
LOG_WARN("fail to get gts", KR(ret));
|
||||||
} else if (OB_FAIL(tmp_frozen_scn.convert_for_gts(new_gts))) {
|
|
||||||
LOG_WARN("fail to convert for gts", KR(ret), K(new_gts));
|
|
||||||
} else if ((tmp_frozen_scn <= snapshot_gc_scn)
|
} else if ((tmp_frozen_scn <= snapshot_gc_scn)
|
||||||
|| (tmp_frozen_scn <= local_max_frozen_scn)
|
|| (tmp_frozen_scn <= local_max_frozen_scn)
|
||||||
|| (tmp_frozen_scn <= snapshot_info.snapshot_scn_)) {
|
|| (tmp_frozen_scn <= snapshot_info.snapshot_scn_)) {
|
||||||
// current time from gts must be greater than old ts
|
// current time from gts must be greater than old ts
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_ERROR("get invalid frozen_timestmap", KR(ret), K(snapshot_gc_scn),
|
LOG_ERROR("get invalid frozen_timestmap", KR(ret), K(snapshot_gc_scn),
|
||||||
K(new_gts), K(tmp_frozen_scn), K(local_max_frozen_scn), K(snapshot_info));
|
K(tmp_frozen_scn), K(local_max_frozen_scn), K(snapshot_info));
|
||||||
} else {
|
} else {
|
||||||
new_frozen_scn = tmp_frozen_scn;
|
new_frozen_scn = tmp_frozen_scn;
|
||||||
}
|
}
|
||||||
@ -472,8 +469,9 @@ int ObFreezeInfoManager::renew_snapshot_gc_scn()
|
|||||||
|
|
||||||
SCN cur_snapshot_gc_scn;
|
SCN cur_snapshot_gc_scn;
|
||||||
SCN new_snapshot_gc_scn;
|
SCN new_snapshot_gc_scn;
|
||||||
uint64_t new_snapshot_gc_ts = 0;
|
SCN cur_gts_scn;
|
||||||
int64_t cur_gts = 0;
|
const int64_t default_weak_ts = transaction::ObWeakReadUtil::default_max_stale_time_for_weak_consistency();
|
||||||
|
const uint64_t WEAK_TS_NS = (uint64_t)(default_weak_ts * 1000L);
|
||||||
int64_t affected_rows = 0;
|
int64_t affected_rows = 0;
|
||||||
ObMySQLTransaction trans;
|
ObMySQLTransaction trans;
|
||||||
ObRecursiveMutexGuard guard(lock_);
|
ObRecursiveMutexGuard guard(lock_);
|
||||||
@ -485,13 +483,9 @@ int ObFreezeInfoManager::renew_snapshot_gc_scn()
|
|||||||
} else if (OB_FAIL(ObGlobalStatProxy::select_snapshot_gc_scn_for_update(trans, tenant_id_,
|
} else if (OB_FAIL(ObGlobalStatProxy::select_snapshot_gc_scn_for_update(trans, tenant_id_,
|
||||||
cur_snapshot_gc_scn))) {
|
cur_snapshot_gc_scn))) {
|
||||||
LOG_WARN("fail to select snapshot_gc_scn for update", KR(ret), K_(tenant_id));
|
LOG_WARN("fail to select snapshot_gc_scn for update", KR(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(get_gts(cur_gts))) {
|
} else if (OB_FAIL(get_gts(cur_gts_scn))) {
|
||||||
LOG_WARN("fail to get_gts", KR(ret));
|
LOG_WARN("fail to get_gts", KR(ret));
|
||||||
} else if (FALSE_IT(new_snapshot_gc_ts =
|
} else if (FALSE_IT(new_snapshot_gc_scn = SCN::minus(cur_gts_scn, WEAK_TS_NS))) {
|
||||||
(cur_gts - transaction::ObWeakReadUtil::default_max_stale_time_for_weak_consistency()))) {
|
|
||||||
LOG_WARN("fail to calc new snapshot_gc_scn", KR(ret), K(cur_gts));
|
|
||||||
} else if (OB_FAIL(new_snapshot_gc_scn.convert_for_inner_table_field(new_snapshot_gc_ts))) {
|
|
||||||
LOG_WARN("fail to convert val to SCN", KR(ret), K(new_snapshot_gc_ts));
|
|
||||||
} else if ((new_snapshot_gc_scn <= freeze_info_.latest_snapshot_gc_scn_)
|
} else if ((new_snapshot_gc_scn <= freeze_info_.latest_snapshot_gc_scn_)
|
||||||
|| (cur_snapshot_gc_scn >= new_snapshot_gc_scn)) {
|
|| (cur_snapshot_gc_scn >= new_snapshot_gc_scn)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
@ -524,19 +518,16 @@ int ObFreezeInfoManager::renew_snapshot_gc_scn()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObFreezeInfoManager::get_gts(int64_t &ts) const
|
int ObFreezeInfoManager::get_gts(palf::SCN >s_scn) const
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
bool is_external_consistent = true;
|
bool is_external_consistent = true;
|
||||||
const int64_t timeout_us = 10 * 1000 * 1000;
|
const int64_t timeout_us = 10 * 1000 * 1000;
|
||||||
palf::SCN tmp_scn;
|
if (OB_FAIL(OB_TS_MGR.get_ts_sync(tenant_id_, timeout_us, gts_scn, is_external_consistent))) {
|
||||||
if (OB_FAIL(OB_TS_MGR.get_ts_sync(tenant_id_, timeout_us, tmp_scn, is_external_consistent))) {
|
|
||||||
LOG_WARN("fail to get ts sync", K(ret), K_(tenant_id), K(timeout_us));
|
LOG_WARN("fail to get ts sync", K(ret), K_(tenant_id), K(timeout_us));
|
||||||
} else if (!is_external_consistent) { // only suppport gts in 4.0
|
} else if (!is_external_consistent) { // only suppport gts in 4.0
|
||||||
ret = OB_NOT_SUPPORTED;
|
ret = OB_NOT_SUPPORTED;
|
||||||
LOG_ERROR("cannot freeze without gts", KR(ret), K_(tenant_id));
|
LOG_ERROR("cannot freeze without gts", KR(ret), K_(tenant_id));
|
||||||
} else {
|
|
||||||
ts = tmp_scn.get_val_for_lsn_allocator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -560,11 +551,10 @@ int ObFreezeInfoManager::try_gc_freeze_info()
|
|||||||
ObRecursiveMutexGuard guard(lock_);
|
ObRecursiveMutexGuard guard(lock_);
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
|
|
||||||
const int64_t MAX_KEEP_INTERVAL_US = 30 * 24 * 60 * 60 * 1000L * 1000L; // 30 day
|
const uint64_t MAX_KEEP_INTERVAL_NS = 30 * 24 * 60 * 60 * 1000L * 1000L * 1000L; // 30 day
|
||||||
const int64_t MIN_REMAINED_VERSION_COUNT = 32;
|
const int64_t MIN_REMAINED_VERSION_COUNT = 32;
|
||||||
const int64_t now = ObTimeUtility::current_time();
|
|
||||||
const uint64_t min_frozen_ts = (now - MAX_KEEP_INTERVAL_US) * 1000L; // frozen_scn is nano_second
|
|
||||||
SCN min_frozen_scn;
|
SCN min_frozen_scn;
|
||||||
|
SCN cur_gts_scn;
|
||||||
SCN cur_snapshot_gc_scn;
|
SCN cur_snapshot_gc_scn;
|
||||||
|
|
||||||
ObFreezeInfoProxy freeze_info_proxy(tenant_id_);
|
ObFreezeInfoProxy freeze_info_proxy(tenant_id_);
|
||||||
@ -579,8 +569,9 @@ int ObFreezeInfoManager::try_gc_freeze_info()
|
|||||||
LOG_WARN("fail to select snapshot_gc_scn for update", KR(ret), K_(tenant_id));
|
LOG_WARN("fail to select snapshot_gc_scn for update", KR(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(freeze_info_proxy.get_all_freeze_info(trans, all_frozen_status))) {
|
} else if (OB_FAIL(freeze_info_proxy.get_all_freeze_info(trans, all_frozen_status))) {
|
||||||
LOG_WARN("fail to get all freeze info", KR(ret), K_(tenant_id));
|
LOG_WARN("fail to get all freeze info", KR(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(min_frozen_scn.convert_for_inner_table_field(min_frozen_ts))) {
|
} else if (OB_FAIL(get_gts(cur_gts_scn))) {
|
||||||
LOG_WARN("fail to convert val to SCN", KR(ret), K(min_frozen_ts));
|
LOG_WARN("fail to get gts", KR(ret));
|
||||||
|
} else if (FALSE_IT(min_frozen_scn = SCN::minus(cur_gts_scn, MAX_KEEP_INTERVAL_NS))) {
|
||||||
} else {
|
} else {
|
||||||
const int64_t frozen_status_cnt = all_frozen_status.count();
|
const int64_t frozen_status_cnt = all_frozen_status.count();
|
||||||
if (frozen_status_cnt > MIN_REMAINED_VERSION_COUNT) {
|
if (frozen_status_cnt > MIN_REMAINED_VERSION_COUNT) {
|
||||||
|
|||||||
@ -118,7 +118,7 @@ private:
|
|||||||
|
|
||||||
int set_local_snapshot_gc_scn(const palf::SCN &new_scn);
|
int set_local_snapshot_gc_scn(const palf::SCN &new_scn);
|
||||||
|
|
||||||
int get_gts(int64_t &ts) const;
|
int get_gts(palf::SCN >s_scn) const;
|
||||||
int get_schema_version(const palf::SCN &frozen_scn, int64_t &schema_version) const;
|
int get_schema_version(const palf::SCN &frozen_scn, int64_t &schema_version) const;
|
||||||
|
|
||||||
int get_min_freeze_info(share::ObSimpleFrozenStatus &frozen_status);
|
int get_min_freeze_info(share::ObSimpleFrozenStatus &frozen_status);
|
||||||
|
|||||||
@ -231,7 +231,7 @@ int ObMajorMergeProgressChecker::check_tablet_data_version(
|
|||||||
// logonly replica no need check
|
// logonly replica no need check
|
||||||
} else {
|
} else {
|
||||||
palf::SCN rep_snapshot_scn;
|
palf::SCN rep_snapshot_scn;
|
||||||
if (OB_FAIL(rep_snapshot_scn.convert_for_inner_table_field((uint64_t)(r->get_snapshot_version())))) {
|
if (OB_FAIL(rep_snapshot_scn.convert_for_tx(r->get_snapshot_version()))) {
|
||||||
LOG_WARN("fail to convert val to SCN", KR(ret), "snapshot_version", r->get_snapshot_version());
|
LOG_WARN("fail to convert val to SCN", KR(ret), "snapshot_version", r->get_snapshot_version());
|
||||||
} else {
|
} else {
|
||||||
if ((p->smallest_snapshot_scn_ <= palf::SCN::min_scn())
|
if ((p->smallest_snapshot_scn_ <= palf::SCN::min_scn())
|
||||||
|
|||||||
@ -669,7 +669,7 @@ int ObMajorMergeScheduler::try_update_global_merged_scn(const int64_t expected_e
|
|||||||
LOG_WARN("try update global last_merged_scn failed", KR(ret), K(expected_epoch));
|
LOG_WARN("try update global last_merged_scn failed", KR(ret), K(expected_epoch));
|
||||||
} else {
|
} else {
|
||||||
ROOTSERVICE_EVENT_ADD("daily_merge", "global_merged", K_(tenant_id),
|
ROOTSERVICE_EVENT_ADD("daily_merge", "global_merged", K_(tenant_id),
|
||||||
"global_broadcast_scn", global_info.global_broadcast_scn_.get_scn_val());
|
"global_broadcast_scn", global_info.global_broadcast_scn_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -532,7 +532,7 @@ int ObSchemaHistoryRecycler::get_recycle_schema_version_by_global_stat(
|
|||||||
if (OB_FAIL(check_inner_stat())) {
|
if (OB_FAIL(check_inner_stat())) {
|
||||||
LOG_WARN("schema history recycler is stopped", KR(ret));
|
LOG_WARN("schema history recycler is stopped", KR(ret));
|
||||||
} else {
|
} else {
|
||||||
int64_t specific_merged_version = -1;
|
palf::SCN spec_frozen_scn;
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < tenant_ids.count(); i++) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < tenant_ids.count(); i++) {
|
||||||
const uint64_t tenant_id = tenant_ids.at(i);
|
const uint64_t tenant_id = tenant_ids.at(i);
|
||||||
ObFreezeInfoProxy freeze_info_proxy(tenant_id);
|
ObFreezeInfoProxy freeze_info_proxy(tenant_id);
|
||||||
@ -551,13 +551,13 @@ int ObSchemaHistoryRecycler::get_recycle_schema_version_by_global_stat(
|
|||||||
} else if (frozen_status_arr.count() < reserved_num + 1) {
|
} else if (frozen_status_arr.count() < reserved_num + 1) {
|
||||||
ret = OB_EAGAIN;
|
ret = OB_EAGAIN;
|
||||||
LOG_WARN("not exist enough frozen_scn to reserve", KR(ret), K(reserved_num), K(frozen_status_arr));
|
LOG_WARN("not exist enough frozen_scn to reserve", KR(ret), K(reserved_num), K(frozen_status_arr));
|
||||||
} else if (FALSE_IT(specific_merged_version = frozen_status_arr.at(reserved_num).frozen_scn_.get_val_for_inner_table_field())) {
|
} else if (FALSE_IT(spec_frozen_scn = frozen_status_arr.at(reserved_num).frozen_scn_)) {
|
||||||
} else if (OB_FAIL(freeze_info_proxy.get_freeze_schema_info(*sql_proxy_, tenant_id,
|
} else if (OB_FAIL(freeze_info_proxy.get_freeze_schema_info(*sql_proxy_, tenant_id,
|
||||||
specific_merged_version, schema_version))) {
|
spec_frozen_scn, schema_version))) {
|
||||||
LOG_WARN("fail to get specific_merged_version", KR(ret), K(tenant_id), K(specific_merged_version));
|
LOG_WARN("fail to get freeze schema info", KR(ret), K(tenant_id), K(spec_frozen_scn));
|
||||||
} else if (!schema_version.is_valid()) {
|
} else if (!schema_version.is_valid()) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("schema version is invalid", KR(ret), K(tenant_id), K(specific_merged_version));
|
LOG_WARN("schema version is invalid", KR(ret), K(tenant_id), K(spec_frozen_scn));
|
||||||
} else {
|
} else {
|
||||||
int64_t specific_schema_version = schema_version.schema_version_;
|
int64_t specific_schema_version = schema_version.schema_version_;
|
||||||
if (OB_FAIL(fill_recycle_schema_versions(
|
if (OB_FAIL(fill_recycle_schema_versions(
|
||||||
@ -566,7 +566,7 @@ int ObSchemaHistoryRecycler::get_recycle_schema_version_by_global_stat(
|
|||||||
KR(ret), K(tenant_id), K(specific_schema_version));
|
KR(ret), K(tenant_id), K(specific_schema_version));
|
||||||
}
|
}
|
||||||
LOG_INFO("[SCHEMA_RECYCLE] get recycle schema version by major version",
|
LOG_INFO("[SCHEMA_RECYCLE] get recycle schema version by major version",
|
||||||
KR(ret), K(tenant_id), K(specific_merged_version), K(specific_schema_version));
|
KR(ret), K(tenant_id), K(spec_frozen_scn), K(specific_schema_version));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -401,21 +401,21 @@ int ObFreezeInfoProxy::construct_frozen_status_(
|
|||||||
int ObFreezeInfoProxy::get_freeze_schema_info(
|
int ObFreezeInfoProxy::get_freeze_schema_info(
|
||||||
ObISQLClient &sql_proxy,
|
ObISQLClient &sql_proxy,
|
||||||
const uint64_t tenant_id,
|
const uint64_t tenant_id,
|
||||||
const int64_t major_version,
|
const palf::SCN &frozen_scn,
|
||||||
TenantIdAndSchemaVersion &schema_version_info)
|
TenantIdAndSchemaVersion &schema_version_info)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObSqlString sql;
|
ObSqlString sql;
|
||||||
ObTimeoutCtx ctx;
|
ObTimeoutCtx ctx;
|
||||||
if (OB_UNLIKELY(OB_INVALID_TENANT_ID == tenant_id
|
if (OB_UNLIKELY(OB_INVALID_TENANT_ID == tenant_id
|
||||||
|| major_version <= 0)) {
|
|| (!frozen_scn.is_valid()))) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid arg", KR(ret), K(tenant_id), K(major_version));
|
LOG_WARN("invalid arg", KR(ret), K(tenant_id), K(frozen_scn));
|
||||||
} else if (OB_FAIL(rootserver::ObRootUtils::get_rs_default_timeout_ctx(ctx))) {
|
} else if (OB_FAIL(rootserver::ObRootUtils::get_rs_default_timeout_ctx(ctx))) {
|
||||||
LOG_WARN("fail to get timeout ctx", KR(ret), K(tenant_id), K(ctx));
|
LOG_WARN("fail to get timeout ctx", KR(ret), K(tenant_id), K(ctx));
|
||||||
} else if (OB_FAIL(sql.assign_fmt("SELECT * FROM %s WHERE frozen_scn = %ld",
|
} else if (OB_FAIL(sql.assign_fmt("SELECT * FROM %s WHERE frozen_scn = %ld",
|
||||||
OB_ALL_FREEZE_INFO_TNAME, major_version))) {
|
OB_ALL_FREEZE_INFO_TNAME, frozen_scn.get_val_for_inner_table_field()))) {
|
||||||
LOG_WARN("fail to assign fmt", KR(ret), K(tenant_id), K(major_version));
|
LOG_WARN("fail to assign fmt", KR(ret), K(tenant_id), K(frozen_scn));
|
||||||
}
|
}
|
||||||
|
|
||||||
SMART_VAR(ObMySQLProxy::MySQLResult, res) {
|
SMART_VAR(ObMySQLProxy::MySQLResult, res) {
|
||||||
@ -430,7 +430,7 @@ int ObFreezeInfoProxy::get_freeze_schema_info(
|
|||||||
if (OB_ITER_END == ret) {
|
if (OB_ITER_END == ret) {
|
||||||
ret = OB_ENTRY_NOT_EXIST;
|
ret = OB_ENTRY_NOT_EXIST;
|
||||||
}
|
}
|
||||||
LOG_WARN("fail to get result", KR(ret), K(tenant_id), K(major_version));
|
LOG_WARN("fail to get result", KR(ret), K(tenant_id), K(frozen_scn));
|
||||||
} else {
|
} else {
|
||||||
schema_version_info.tenant_id_ = tenant_id;
|
schema_version_info.tenant_id_ = tenant_id;
|
||||||
EXTRACT_INT_FIELD_MYSQL(*result, "schema_version", schema_version_info.schema_version_, int64_t);
|
EXTRACT_INT_FIELD_MYSQL(*result, "schema_version", schema_version_info.schema_version_, int64_t);
|
||||||
|
|||||||
@ -167,7 +167,7 @@ public:
|
|||||||
|
|
||||||
int get_freeze_schema_info(common::ObISQLClient &sql_proxy,
|
int get_freeze_schema_info(common::ObISQLClient &sql_proxy,
|
||||||
const uint64_t tenant_id,
|
const uint64_t tenant_id,
|
||||||
const int64_t major_version,
|
const palf::SCN &frozen_scn,
|
||||||
TenantIdAndSchemaVersion &schema_version_info);
|
TenantIdAndSchemaVersion &schema_version_info);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -229,12 +229,6 @@ ObZoneMergeInfo::MergeStatus ObZoneMergeInfo::get_merge_status(const char* merge
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ObZoneMergeInfo::is_merged(const int64_t broadcast_version) const
|
|
||||||
{
|
|
||||||
return (broadcast_version == broadcast_scn_.get_scn_val())
|
|
||||||
&& (broadcast_scn_.get_scn_val() == last_merged_scn_.get_scn_val());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ObZoneMergeInfo::is_valid() const
|
bool ObZoneMergeInfo::is_valid() const
|
||||||
{
|
{
|
||||||
bool is_valid = true;
|
bool is_valid = true;
|
||||||
|
|||||||
@ -86,7 +86,6 @@ public:
|
|||||||
static const char *get_merge_status_str(const MergeStatus status);
|
static const char *get_merge_status_str(const MergeStatus status);
|
||||||
static MergeStatus get_merge_status(const char* merge_status_str);
|
static MergeStatus get_merge_status(const char* merge_status_str);
|
||||||
|
|
||||||
bool is_merged(const int64_t broadcast_version) const;
|
|
||||||
bool is_in_merge() const;
|
bool is_in_merge() const;
|
||||||
bool need_merge(const int64_t broadcast_version) const;
|
bool need_merge(const int64_t broadcast_version) const;
|
||||||
|
|
||||||
|
|||||||
@ -1085,7 +1085,7 @@ int ObTenantFreezer::get_global_frozen_scn_(int64_t &frozen_scn)
|
|||||||
if (OB_FAIL(rootserver::ObMajorFreezeHelper::get_frozen_scn(tenant_id, tmp_frozen_scn))) {
|
if (OB_FAIL(rootserver::ObMajorFreezeHelper::get_frozen_scn(tenant_id, tmp_frozen_scn))) {
|
||||||
LOG_WARN("get_frozen_scn failed", KR(ret), K(tenant_id));
|
LOG_WARN("get_frozen_scn failed", KR(ret), K(tenant_id));
|
||||||
} else {
|
} else {
|
||||||
frozen_scn = tmp_frozen_scn.get_val_for_inner_table_field();
|
frozen_scn = tmp_frozen_scn.get_val_for_tx();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@ -126,7 +126,7 @@ int ObTenantFreezerP::do_major_freeze_()
|
|||||||
if (OB_FAIL(ObMajorFreezeHelper::get_frozen_scn(tenant_id, frozen_scn))) {
|
if (OB_FAIL(ObMajorFreezeHelper::get_frozen_scn(tenant_id, frozen_scn))) {
|
||||||
LOG_WARN("get_frozen_scn failed", KR(ret));
|
LOG_WARN("get_frozen_scn failed", KR(ret));
|
||||||
} else {
|
} else {
|
||||||
int64_t frozen_scn_val = frozen_scn.get_val_for_inner_table_field();
|
int64_t frozen_scn_val = frozen_scn.get_val_for_tx();
|
||||||
bool need_major = true;
|
bool need_major = true;
|
||||||
ObTenantFreezer *freezer = MTL(ObTenantFreezer *);
|
ObTenantFreezer *freezer = MTL(ObTenantFreezer *);
|
||||||
ObRetryMajorInfo retry_major_info = freezer->get_retry_major_info();
|
ObRetryMajorInfo retry_major_info = freezer->get_retry_major_info();
|
||||||
|
|||||||
Reference in New Issue
Block a user