fix ls gc in restore
This commit is contained in:
parent
13a7fbd360
commit
0621ee7214
@ -603,7 +603,7 @@ bool ObLogArchivePieceContext::need_backward_round_(const palf::LSN &lsn) const
|
||||
if (min_round_id_ > 0
|
||||
&& round_context_.is_valid()
|
||||
&& round_context_.round_id_ > min_round_id_
|
||||
&& (inner_piece_context_.is_frozen_() || inner_piece_context_.is_empty_())
|
||||
&& (inner_piece_context_.is_frozen_() || inner_piece_context_.is_empty_() || inner_piece_context_.is_gc_())
|
||||
&& round_context_.min_piece_id_ == inner_piece_context_.piece_id_
|
||||
&& inner_piece_context_.min_lsn_in_piece_ > lsn) {
|
||||
bret = true;
|
||||
@ -1182,6 +1182,13 @@ int ObLogArchivePieceContext::get_(const palf::LSN &lsn,
|
||||
if (inner_piece_context_.min_lsn_in_piece_ <= lsn && inner_piece_context_.max_lsn_in_piece_ > lsn) {
|
||||
done = true;
|
||||
}
|
||||
} else if (inner_piece_context_.is_gc_()) {
|
||||
if (inner_piece_context_.max_lsn_in_piece_ <= lsn) {
|
||||
done = false;
|
||||
ret = OB_ITER_END;
|
||||
} else if (inner_piece_context_.min_lsn_in_piece_ <= lsn && file_id <= inner_piece_context_.max_file_id_) {
|
||||
done = true;
|
||||
}
|
||||
} else {
|
||||
if (inner_piece_context_.min_lsn_in_piece_ <= lsn && file_id <= inner_piece_context_.max_file_id_) {
|
||||
done = true;
|
||||
@ -1215,7 +1222,7 @@ int ObLogArchivePieceContext::get_(const palf::LSN &lsn,
|
||||
}
|
||||
|
||||
// 已消费到最大依然没有定位到该LSN, 并且当前piece包含日志范围小于该LSN, 返回OB_ITER_END
|
||||
if (! done) {
|
||||
if (OB_SUCC(ret) && ! done) {
|
||||
if (inner_piece_context_.is_valid()
|
||||
&& inner_piece_context_.round_id_ == max_round_id_
|
||||
&& inner_piece_context_.piece_id_ == round_context_.max_piece_id_
|
||||
@ -1225,7 +1232,7 @@ int ObLogArchivePieceContext::get_(const palf::LSN &lsn,
|
||||
}
|
||||
|
||||
// 该日志流在该piece已GC, 并且最大LSN小于等于需要获取的LSN, 返回OB_ITER_END
|
||||
if (! done) {
|
||||
if (OB_SUCC(ret) && ! done) {
|
||||
if (inner_piece_context_.is_valid()
|
||||
&& inner_piece_context_.is_gc_()
|
||||
&& inner_piece_context_.max_lsn_in_piece_ <= lsn) {
|
||||
|
@ -317,9 +317,11 @@ int ObRemoteFetchWorker::handle_fetch_log_task_(ObFetchLogTask *task)
|
||||
} else {
|
||||
LOG_TRACE("pre read data is empty and failed", K(ret), KPC(task));
|
||||
}
|
||||
if (! is_fatal_error_(ret)) {
|
||||
task->iter_.update_source_cb();
|
||||
}
|
||||
// not encounter fatal error or push submit array succ, just try retire task
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
task->iter_.update_source_cb();
|
||||
if (OB_SUCCESS != (tmp_ret = try_retire_(task))) {
|
||||
LOG_WARN("retire task failed", K(tmp_ret), KP(task));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user