[CP] fix lost row caused by purge range

This commit is contained in:
kongfy
2022-04-25 14:20:04 +08:00
committed by wangzelin.wzl
parent 80133e10bc
commit 8ce40d33af
2 changed files with 3 additions and 3 deletions

View File

@ -428,7 +428,7 @@ int ObMemtableScanIterator::inner_get_next_row(const ObStoreRow*& row)
} }
} }
} }
if (OB_FAIL(ret)) { if (OB_FAIL(ret) && OB_ITER_END != ret) {
iter_flag_ = 0; iter_flag_ = 0;
} }
return ret; return ret;

View File

@ -75,6 +75,7 @@ int ObMultipleScanMergeImpl::supply_consume()
for (int64_t i = 0; OB_SUCC(ret) && i < consume_num; ++i) { for (int64_t i = 0; OB_SUCC(ret) && i < consume_num; ++i) {
const int64_t iter_idx = consumer_.get_consumer_iters()[i]; const int64_t iter_idx = consumer_.get_consumer_iters()[i];
ObStoreRowIterator* iter = iters_.at(iter_idx); ObStoreRowIterator* iter = iters_.at(iter_idx);
item.iter_idx_ = iter_idx;
if (NULL == iter) { if (NULL == iter) {
ret = common::OB_ERR_UNEXPECTED; ret = common::OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "Unexpected error", K(ret), K(iter)); STORAGE_LOG(WARN, "Unexpected error", K(ret), K(iter));
@ -88,7 +89,6 @@ int ObMultipleScanMergeImpl::supply_consume()
ret = common::OB_ERR_UNEXPECTED; ret = common::OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "get next row return NULL row", "iter_index", iter_idx, K(ret)); STORAGE_LOG(WARN, "get next row return NULL row", "iter_index", iter_idx, K(ret));
} else { } else {
item.iter_idx_ = iter_idx;
if (try_push_top_item_) { if (try_push_top_item_) {
if (1 != consume_num) { if (1 != consume_num) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
@ -104,8 +104,8 @@ int ObMultipleScanMergeImpl::supply_consume()
// TODO: Ambiguous here, typically base_row only means row in major sstable. // TODO: Ambiguous here, typically base_row only means row in major sstable.
// And iter_idx==0 doesn't necessarily mean iterator for memtable. // And iter_idx==0 doesn't necessarily mean iterator for memtable.
0 == iter_idx ? ++row_stat_.inc_row_count_ : ++row_stat_.base_row_count_; 0 == iter_idx ? ++row_stat_.inc_row_count_ : ++row_stat_.base_row_count_;
range_purger_.on_push((int)item.iter_idx_, item.iter_flag_);
} }
range_purger_.on_push((int)item.iter_idx_, item.iter_flag_);
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {