fix autoinc seq replay

This commit is contained in:
YoungYang0820
2022-11-02 18:35:50 +00:00
committed by wangzelin.wzl
parent e3937271ab
commit 1432398f97
3 changed files with 45 additions and 16 deletions

View File

@ -507,5 +507,37 @@ int ObTabletAutoincSeqRpcHandler::batch_set_tablet_autoinc_seq(
return ret;
}
int ObTabletAutoincSeqRpcHandler::replay_update_tablet_autoinc_seq(
const ObLS *ls,
const ObTabletID &tablet_id,
const uint64_t autoinc_seq,
const int64_t replay_log_ts)
{
int ret = OB_SUCCESS;
if (OB_UNLIKELY(ls == nullptr || !tablet_id.is_valid() || autoinc_seq == 0 || replay_log_ts <= 0)) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument", K(ret), K(tablet_id), K(autoinc_seq), K(replay_log_ts));
} else {
ObTabletHandle tablet_handle;
ObBucketHashWLockGuard guard(bucket_lock_, tablet_id.hash());
if (OB_FAIL(ls->replay_get_tablet(tablet_id,
replay_log_ts,
tablet_handle))) {
if (OB_TABLET_NOT_EXIST == ret) {
LOG_INFO("tablet may be deleted, skip this log", K(ret), K(tablet_id), K(replay_log_ts));
ret = OB_SUCCESS;
} else if (OB_EAGAIN == ret) {
// retry replay again
} else {
LOG_WARN("fail to replay get tablet, retry again", K(ret), K(tablet_id), K(replay_log_ts));
ret = OB_EAGAIN;
}
} else if (OB_FAIL(tablet_handle.get_obj()->update_tablet_autoinc_seq(autoinc_seq, replay_log_ts))) {
LOG_WARN("failed to update tablet auto inc seq", K(ret), K(autoinc_seq), K(replay_log_ts));
}
}
return ret;
}
}
}