[FIX] unblock ls replay failed because of allocating memory failed
This commit is contained in:
parent
296e3d64ae
commit
a238c1fbea
@ -1794,10 +1794,17 @@ ObFreezer::PendTenantReplayGuard::PendTenantReplayGuard()
|
|||||||
STORAGE_LOG(WARN, "[ObFreezer] fail to get ls iterator", KR(ret));
|
STORAGE_LOG(WARN, "[ObFreezer] fail to get ls iterator", KR(ret));
|
||||||
} else {
|
} else {
|
||||||
ObLS *ls = nullptr;
|
ObLS *ls = nullptr;
|
||||||
|
ls_handle_array_.reuse();
|
||||||
while (OB_SUCC(iter->get_next(ls))) {
|
while (OB_SUCC(iter->get_next(ls))) {
|
||||||
int tmp_ret = OB_SUCCESS;
|
int tmp_ret = OB_SUCCESS;
|
||||||
if (OB_TMP_FAIL(ls->get_freezer()->pend_ls_replay())) {
|
ObLSHandle ls_handle;
|
||||||
STORAGE_LOG(WARN, "[ObFreezer] pend replay failed", KR(ret), KPC(ls));
|
if (OB_TMP_FAIL(ls_srv->get_ls(ls->get_ls_id(), ls_handle, ObLSGetMod::STORAGE_MOD))) {
|
||||||
|
STORAGE_LOG(WARN, "[ObFreezer] get ls handle failed", KR(tmp_ret), KP(ls));
|
||||||
|
} else if (OB_TMP_FAIL(ls_handle_array_.push_back(ls_handle))) {
|
||||||
|
STORAGE_LOG(WARN, "[ObFreezer] push back ls handle failed", KR(tmp_ret), KP(ls));
|
||||||
|
} else if (OB_TMP_FAIL(ls->get_freezer()->pend_ls_replay())) {
|
||||||
|
STORAGE_LOG(WARN, "[ObFreezer] pend replay failed", KR(tmp_ret), KPC(ls));
|
||||||
|
(void)ls_handle_array_.pop_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1806,17 +1813,14 @@ ObFreezer::PendTenantReplayGuard::PendTenantReplayGuard()
|
|||||||
ObFreezer::PendTenantReplayGuard::~PendTenantReplayGuard()
|
ObFreezer::PendTenantReplayGuard::~PendTenantReplayGuard()
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
common::ObSharedGuard<ObLSIterator> iter;
|
for (int64_t i = 0; i < ls_handle_array_.count(); i++) {
|
||||||
ObLSService *ls_srv = MTL(ObLSService *);
|
int tmp_ret = OB_SUCCESS;
|
||||||
if (OB_FAIL(ls_srv->get_ls_iter(iter, ObLSGetMod::STORAGE_MOD))) {
|
|
||||||
STORAGE_LOG(WARN, "[ObFreezer] fail to get ls iterator", KR(ret));
|
|
||||||
} else {
|
|
||||||
ObLS *ls = nullptr;
|
ObLS *ls = nullptr;
|
||||||
while (OB_SUCC(iter->get_next(ls))) {
|
if (OB_ISNULL(ls = ls_handle_array_.at(i).get_ls())) {
|
||||||
int tmp_ret = OB_SUCCESS;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
if (OB_TMP_FAIL(ls->get_freezer()->restore_ls_replay())) {
|
STORAGE_LOG(ERROR, "[ObFreezer] invalid ls handle", KR(ret), KPC(ls));
|
||||||
STORAGE_LOG(WARN, "[ObFreezer] restore replay failed", KR(ret), KPC(ls));
|
} else if (OB_TMP_FAIL(ls->get_freezer()->restore_ls_replay())) {
|
||||||
}
|
STORAGE_LOG(WARN, "[ObFreezer] restore replay failed", KR(ret), KPC(ls));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,12 +282,14 @@ private:
|
|||||||
bool need_release_;
|
bool need_release_;
|
||||||
ObFreezer &parent_;
|
ObFreezer &parent_;
|
||||||
};
|
};
|
||||||
class PendTenantReplayGuard
|
class PendTenantReplayGuard {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
PendTenantReplayGuard();
|
PendTenantReplayGuard();
|
||||||
~PendTenantReplayGuard();
|
~PendTenantReplayGuard();
|
||||||
|
public:
|
||||||
|
ObSEArray<ObLSHandle, 16> ls_handle_array_;
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/* freeze_flag */
|
/* freeze_flag */
|
||||||
int set_freeze_flag();
|
int set_freeze_flag();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user