report lsn while restore
This commit is contained in:
@ -689,7 +689,8 @@ ObILSRestoreState::ObILSRestoreState(const share::ObLSRestoreStatus::Status &sta
|
|||||||
svr_rpc_proxy_(nullptr),
|
svr_rpc_proxy_(nullptr),
|
||||||
storage_rpc_(nullptr),
|
storage_rpc_(nullptr),
|
||||||
proxy_(nullptr),
|
proxy_(nullptr),
|
||||||
self_addr_()
|
self_addr_(),
|
||||||
|
need_report_clog_lsn_(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1447,6 +1448,44 @@ int ObILSRestoreState::check_replay_to_target_scn_(
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ObILSRestoreState::report_start_replay_clog_lsn_()
|
||||||
|
{
|
||||||
|
int ret = OB_SUCCESS;
|
||||||
|
LSN lsn;
|
||||||
|
if (need_report_clog_lsn_) {
|
||||||
|
if (OB_FAIL(ls_->get_log_handler()->get_end_lsn(lsn))) {
|
||||||
|
LOG_WARN("failed to get end lsn", K(ret), KPC_(ls));
|
||||||
|
} else {
|
||||||
|
SERVER_EVENT_ADD("storage_ha", "log_restore_start_lsn",
|
||||||
|
"tenant_id", MTL_ID(),
|
||||||
|
"ls_id", ls_->get_ls_id().id(),
|
||||||
|
"lsn", lsn.val_,
|
||||||
|
"curr_status_str", ObLSRestoreStatus::get_restore_status_str(ls_restore_status_));
|
||||||
|
ATOMIC_SET(&need_report_clog_lsn_, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ObILSRestoreState::report_finish_replay_clog_lsn_()
|
||||||
|
{
|
||||||
|
int ret = OB_SUCCESS;
|
||||||
|
LSN lsn;
|
||||||
|
if (need_report_clog_lsn_) {
|
||||||
|
if (OB_FAIL(ls_->get_log_handler()->get_end_lsn(lsn))) {
|
||||||
|
LOG_WARN("failed to get end lsn", K(ret), KPC_(ls));
|
||||||
|
} else {
|
||||||
|
SERVER_EVENT_ADD("storage_ha", "log_restore_finish_lsn",
|
||||||
|
"tenant_id", MTL_ID(),
|
||||||
|
"ls_id", ls_->get_ls_id().id(),
|
||||||
|
"lsn", lsn.val_,
|
||||||
|
"curr_status_str", ObLSRestoreStatus::get_restore_status_str(ls_restore_status_));
|
||||||
|
ATOMIC_SET(&need_report_clog_lsn_, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
//================================ObLSRestoreStartState=======================================
|
//================================ObLSRestoreStartState=======================================
|
||||||
ObLSRestoreStartState::ObLSRestoreStartState()
|
ObLSRestoreStartState::ObLSRestoreStartState()
|
||||||
: ObILSRestoreState(ObLSRestoreStatus::Status::RESTORE_START)
|
: ObILSRestoreState(ObLSRestoreStatus::Status::RESTORE_START)
|
||||||
@ -1538,6 +1577,8 @@ int ObLSRestoreStartState::do_with_no_ls_meta_()
|
|||||||
ObLSRestoreStatus next_status(ObLSRestoreStatus::Status::RESTORE_TO_CONSISTENT_SCN);
|
ObLSRestoreStatus next_status(ObLSRestoreStatus::Status::RESTORE_TO_CONSISTENT_SCN);
|
||||||
if (OB_FAIL(online_())) {
|
if (OB_FAIL(online_())) {
|
||||||
LOG_WARN("fail to enable log", K(ret));
|
LOG_WARN("fail to enable log", K(ret));
|
||||||
|
} else if (OB_FAIL(report_start_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report start replay clog lsn", K(ret));
|
||||||
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
||||||
LOG_WARN("fail to advance status", K(ret), K(*ls_), K(next_status));
|
LOG_WARN("fail to advance status", K(ret), K(*ls_), K(next_status));
|
||||||
}
|
}
|
||||||
@ -2057,6 +2098,8 @@ int ObLSRestoreConsistentScnState::do_restore()
|
|||||||
}
|
}
|
||||||
} else if (OB_FAIL(set_empty_for_transfer_tablets_())) {
|
} else if (OB_FAIL(set_empty_for_transfer_tablets_())) {
|
||||||
LOG_WARN("fail to set empty for transfer tablets", K(ret), KPC_(ls));
|
LOG_WARN("fail to set empty for transfer tablets", K(ret), KPC_(ls));
|
||||||
|
} else if (OB_FAIL(report_finish_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report finish replay clog lsn", K(ret));
|
||||||
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
||||||
LOG_WARN("fail to advance status", K(ret), KPC_(ls), K(next_status));
|
LOG_WARN("fail to advance status", K(ret), KPC_(ls), K(next_status));
|
||||||
} else {
|
} else {
|
||||||
@ -2196,6 +2239,8 @@ int ObLSQuickRestoreState::leader_quick_restore_()
|
|||||||
if (REACH_TIME_INTERVAL(10 * 1000 * 1000L)) {
|
if (REACH_TIME_INTERVAL(10 * 1000 * 1000L)) {
|
||||||
LOG_INFO("clog replay not finish, wait later", KPC(ls_));
|
LOG_INFO("clog replay not finish, wait later", KPC(ls_));
|
||||||
}
|
}
|
||||||
|
} else if (OB_FAIL(report_finish_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report finish replay clog lsn", K(ret));
|
||||||
} else if (!tablet_mgr_.is_restore_completed()) {
|
} else if (!tablet_mgr_.is_restore_completed()) {
|
||||||
} else if (!has_rechecked_after_clog_recovered_) {
|
} else if (!has_rechecked_after_clog_recovered_) {
|
||||||
// Force reload all tablets, ensure all transfer tablets has no transfer table.
|
// Force reload all tablets, ensure all transfer tablets has no transfer table.
|
||||||
@ -2261,6 +2306,8 @@ int ObLSQuickRestoreState::follower_quick_restore_()
|
|||||||
if (REACH_TIME_INTERVAL(10 * 1000 * 1000L)) {
|
if (REACH_TIME_INTERVAL(10 * 1000 * 1000L)) {
|
||||||
LOG_INFO("clog replay not finish, wait later", KPC(ls_));
|
LOG_INFO("clog replay not finish, wait later", KPC(ls_));
|
||||||
}
|
}
|
||||||
|
} else if (OB_FAIL(report_finish_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report finish replay clog lsn", K(ret));
|
||||||
} else if (!tablet_mgr_.is_restore_completed()) {
|
} else if (!tablet_mgr_.is_restore_completed()) {
|
||||||
} else if (!has_rechecked_after_clog_recovered_) {
|
} else if (!has_rechecked_after_clog_recovered_) {
|
||||||
// Force reload all tablets, ensure all transfer tablets has no transfer table.
|
// Force reload all tablets, ensure all transfer tablets has no transfer table.
|
||||||
@ -2725,6 +2772,8 @@ int ObLSRestoreWaitState::leader_wait_follower_()
|
|||||||
LOG_WARN("fail to check can advance status", K(ret), KPC(ls_));
|
LOG_WARN("fail to check can advance status", K(ret), KPC(ls_));
|
||||||
} else if (!can_advance) {
|
} else if (!can_advance) {
|
||||||
// do nothing
|
// do nothing
|
||||||
|
} else if ((next_status.is_quick_restore() || next_status.is_restore_to_consistent_scn()) && OB_FAIL(report_start_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report start replay clog lsn", K(ret));
|
||||||
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
||||||
LOG_WARN("fail to advance status", K(ret), K(next_status), KPC(ls_));
|
LOG_WARN("fail to advance status", K(ret), K(next_status), KPC(ls_));
|
||||||
}
|
}
|
||||||
@ -2757,6 +2806,8 @@ int ObLSRestoreWaitState::follower_wait_leader_()
|
|||||||
LOG_WARN("fail to check can advance status", K(ret), KPC(ls_));
|
LOG_WARN("fail to check can advance status", K(ret), KPC(ls_));
|
||||||
} else if (!can_advance) {
|
} else if (!can_advance) {
|
||||||
// do nothing
|
// do nothing
|
||||||
|
} else if ((next_status.is_quick_restore() || next_status.is_restore_to_consistent_scn()) && OB_FAIL(report_start_replay_clog_lsn_())) {
|
||||||
|
LOG_WARN("fail to report start replay clog lsn", K(ret));
|
||||||
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
} else if (OB_FAIL(advance_status_(*ls_, next_status))) {
|
||||||
LOG_WARN("fail to advance status", K(ret), KPC(ls_), K(next_status));
|
LOG_WARN("fail to advance status", K(ret), KPC(ls_), K(next_status));
|
||||||
} else {
|
} else {
|
||||||
|
@ -144,6 +144,9 @@ public:
|
|||||||
return OB_SUCCESS;
|
return OB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int report_start_replay_clog_lsn_();
|
||||||
|
int report_finish_replay_clog_lsn_();
|
||||||
|
|
||||||
TO_STRING_KV(K_(*ls), K_(ls_restore_status));
|
TO_STRING_KV(K_(*ls), K_(ls_restore_status));
|
||||||
protected:
|
protected:
|
||||||
int leader_fill_tablet_group_restore_arg_(const ObIArray<ObTabletID> &tablet_need_restore,
|
int leader_fill_tablet_group_restore_arg_(const ObIArray<ObTabletID> &tablet_need_restore,
|
||||||
@ -213,6 +216,7 @@ protected:
|
|||||||
storage::ObStorageRpc *storage_rpc_;
|
storage::ObStorageRpc *storage_rpc_;
|
||||||
common::ObMySQLProxy *proxy_;
|
common::ObMySQLProxy *proxy_;
|
||||||
common::ObAddr self_addr_;
|
common::ObAddr self_addr_;
|
||||||
|
bool need_report_clog_lsn_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ObILSRestoreState);
|
DISALLOW_COPY_AND_ASSIGN(ObILSRestoreState);
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user