From 729e802a22d55ed2804cd45ecb169a742b004e02 Mon Sep 17 00:00:00 2001 From: obdev Date: Thu, 2 Mar 2023 19:23:38 +0000 Subject: [PATCH] fix generate_frozen_scn about guarantee data_version of freeze_info would not rollback --- src/rootserver/freeze/ob_freeze_info_manager.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/rootserver/freeze/ob_freeze_info_manager.cpp b/src/rootserver/freeze/ob_freeze_info_manager.cpp index a5d9ac704..282ebcb69 100644 --- a/src/rootserver/freeze/ob_freeze_info_manager.cpp +++ b/src/rootserver/freeze/ob_freeze_info_manager.cpp @@ -416,6 +416,7 @@ int ObFreezeInfoManager::generate_frozen_scn( SCN tmp_frozen_scn; SCN local_max_frozen_scn; + uint64_t cur_min_data_version = 0; ObSimpleFrozenStatus max_frozen_status; ObFreezeInfoProxy freeze_info_proxy(tenant_id_); @@ -436,6 +437,14 @@ int ObFreezeInfoManager::generate_frozen_scn( LOG_WARN("max frozen_scn in cache is larger than max frozen_scn in table", KR(ret), K(local_max_frozen_scn), K(max_frozen_status)); } + } else if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id_, cur_min_data_version))) { + LOG_WARN("fail to get min data version", KR(ret), K_(tenant_id)); + } else if (cur_min_data_version < max_frozen_status.data_version_) { + // do not allow data_version of freeze_info rollback + ret = OB_MAJOR_FREEZE_NOT_ALLOW; + LOG_WARN("major freeze is not allowed now, please check and upgrade observer", KR(ret), + K_(tenant_id), K(cur_min_data_version), "last_min_data_version", + max_frozen_status.data_version_); } else if (OB_FAIL(get_gts(tmp_frozen_scn))) { LOG_WARN("fail to get gts", KR(ret)); } else if ((tmp_frozen_scn <= snapshot_gc_scn) -- GitLab