From b7d2c5af758be1be43e3e8afaf4fe1ef0c563596 Mon Sep 17 00:00:00 2001 From: LiefB <954800091@qq.com> Date: Mon, 23 Oct 2023 12:09:55 +0000 Subject: [PATCH] fix admin merge about expected_epoch == -1 --- src/rootserver/freeze/ob_major_freeze_helper.cpp | 2 +- src/rootserver/freeze/ob_tenant_major_freeze.cpp | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/rootserver/freeze/ob_major_freeze_helper.cpp b/src/rootserver/freeze/ob_major_freeze_helper.cpp index 9cad265cd..ab56786df 100644 --- a/src/rootserver/freeze/ob_major_freeze_helper.cpp +++ b/src/rootserver/freeze/ob_major_freeze_helper.cpp @@ -449,7 +449,7 @@ int ObMajorFreezeHelper::do_one_tenant_admin_merge( LOG_WARN("tenant_admin_merge rpc failed", KR(ret), K(tenant_id), K(leader), K(admin_type)); } else if (FALSE_IT(ret = resp.err_code_)) { } else if (OB_FAIL(ret)) { - if (OB_LEADER_NOT_EXIST == ret) { + if (OB_LEADER_NOT_EXIST == ret || OB_EAGAIN == ret) { const int64_t RESERVED_TIME_US = 600 * 1000; // 600 ms const int64_t timeout_remain_us = THIS_WORKER.get_timeout_remain(); const int64_t idle_time_us = 200 * 1000 * (i + 1); diff --git a/src/rootserver/freeze/ob_tenant_major_freeze.cpp b/src/rootserver/freeze/ob_tenant_major_freeze.cpp index 26eecf090..bc16c60dc 100644 --- a/src/rootserver/freeze/ob_tenant_major_freeze.cpp +++ b/src/rootserver/freeze/ob_tenant_major_freeze.cpp @@ -249,7 +249,10 @@ int ObTenantMajorFreeze::suspend_merge() LOG_WARN("fail to try reload zone_merge_mgr", KR(ret), K_(tenant_id)); } else { const int64_t expected_epoch = merge_scheduler_.get_epoch(); - if (OB_FAIL(zone_merge_mgr_.suspend_merge(expected_epoch))) { + if (-1 == expected_epoch) { + ret = OB_EAGAIN; + LOG_WARN("epoch has not been updated, will retry", KR(ret), K_(tenant_id)); + } else if (OB_FAIL(zone_merge_mgr_.suspend_merge(expected_epoch))) { LOG_WARN("fail to suspend merge", KR(ret), K_(tenant_id), K(expected_epoch)); } } @@ -269,7 +272,10 @@ int ObTenantMajorFreeze::resume_merge() LOG_WARN("fail to try reload zone_merge_mgr", KR(ret), K_(tenant_id)); } else { const int64_t expected_epoch = merge_scheduler_.get_epoch(); - if (OB_FAIL(zone_merge_mgr_.resume_merge(expected_epoch))) { + if (-1 == expected_epoch) { + ret = OB_EAGAIN; + LOG_WARN("epoch has not been updated, will retry", KR(ret), K_(tenant_id)); + } else if (OB_FAIL(zone_merge_mgr_.resume_merge(expected_epoch))) { LOG_WARN("fail to resume merge", KR(ret), K_(tenant_id), K(expected_epoch)); } } @@ -290,7 +296,10 @@ int ObTenantMajorFreeze::clear_merge_error() LOG_WARN("fail to try reload zone_merge_mgr", KR(ret), K_(tenant_id)); } else { const int64_t expected_epoch = merge_scheduler_.get_epoch(); - if (OB_FAIL(ObTabletMetaTableCompactionOperator::batch_update_status(tenant_id_, + if (-1 == expected_epoch) { + ret = OB_EAGAIN; + LOG_WARN("epoch has not been updated, will retry", KR(ret), K_(tenant_id)); + } else if (OB_FAIL(ObTabletMetaTableCompactionOperator::batch_update_status(tenant_id_, expected_epoch))) { LOG_WARN("fail to batch update status", KR(ret), K_(tenant_id), K(expected_epoch)); } else if (OB_FAIL(zone_merge_mgr_.set_merge_error(error_type, expected_epoch))) {