Return error code when freezer is offline

This commit is contained in:
obdev 2022-12-09 10:07:47 +00:00 committed by ob-robot
parent c571414825
commit 6e4074f04b
2 changed files with 15 additions and 0 deletions

View File

@ -330,6 +330,7 @@ int ObFreezer::logstream_freeze(bool is_tenant_freeze)
ret = OB_NOT_INIT;
LOG_WARN("[Freezer] not inited", K(ret), K(ls_id));
} else if (OB_UNLIKELY(!enable_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("freezer is offline, can not freeze now", K(ret), K(ls_id));
} else if (OB_FAIL(decide_max_decided_scn(max_decided_scn))) {
TRANS_LOG(WARN, "[Freezer] decide max decided log ts failure", K(ret), K(ls_id));
@ -469,6 +470,7 @@ int ObFreezer::tablet_freeze(const ObTabletID &tablet_id)
ret = OB_NOT_INIT;
TRANS_LOG(WARN, "[Freezer] not inited", K(ret), K(ls_id), K(tablet_id));
} else if (OB_UNLIKELY(!enable_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("freezer is offline, can not freeze now", K(ret), K(ls_id));
} else if (OB_FAIL(guard.try_set_tablet_freeze_begin())) {
// no need freeze now, a ls freeze is running or will be running
@ -546,6 +548,7 @@ int ObFreezer::force_tablet_freeze(const ObTabletID &tablet_id)
ret = OB_NOT_INIT;
TRANS_LOG(WARN, "[Freezer] not inited", K(ret), K(ls_id), K(tablet_id));
} else if (OB_UNLIKELY(!enable_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("freezer is offline, can not freeze now", K(ret), K(ls_id));
} else if (OB_FAIL(loop_set_freeze_flag())) {
TRANS_LOG(WARN, "[Freezer] failed to set freeze_flag", K(ret), K(ls_id), K(tablet_id));
@ -689,6 +692,9 @@ int ObFreezer::tablet_freeze_for_replace_tablet_meta(const ObTabletID &tablet_id
if (IS_NOT_INIT) {
ret = OB_NOT_INIT;
TRANS_LOG(WARN, "[Freezer] not inited", K(ret), K(ls_id), K(tablet_id));
} else if (OB_UNLIKELY(!enable_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("freezer is offline, can not freeze now", K(ret), K(ls_id));
} else if (OB_FAIL(guard.try_set_tablet_freeze_begin())) {
// no need freeze now, a ls freeze is running or will be running
ret = OB_SUCCESS;

View File

@ -207,9 +207,18 @@ int ObTenantFreezer::ls_freeze_(ObLS *ls)
}
} while (ret == OB_ENTRY_EXIST);
if (OB_SUCC(ret)) {
const int64_t start = ObTimeUtility::current_time();
while (!ls->get_freezer()->is_ready_for_flush()) {
const int64_t cost_time = ObTimeUtility::current_time() - start;
if (cost_time > 5 * 1000 * 1000) {
if (TC_REACH_TIME_INTERVAL(5 * 1000 * 1000)) {
TRANS_LOG(WARN, "[TenantFreezer] cost too much time to wait ls ready_for_flush", K(ls->get_ls_id()), K(cost_time));
}
}
ob_usleep(100);
}
} else if (OB_NOT_RUNNING == ret) {
ret = OB_SUCCESS;
}
return ret;
}