diff --git a/be/src/exec/rowid_fetcher.cpp b/be/src/exec/rowid_fetcher.cpp index d527a3ac055068..6a7e21d81cc7bb 100644 --- a/be/src/exec/rowid_fetcher.cpp +++ b/be/src/exec/rowid_fetcher.cpp @@ -231,7 +231,7 @@ Status RowIDFetcher::fetch(const vectorized::ColumnPtr& column_row_ids, std::vector rows_locs; rows_locs.reserve(rows_locs.size()); RETURN_IF_ERROR(_merge_rpc_results(mget_req, resps, cntls, res_block, &rows_locs)); - if (rows_locs.size() != res_block->rows()) { + if (rows_locs.size() != res_block->rows() || rows_locs.size() != column_row_ids->size()) { return Status::InternalError("Miss matched return row loc count {}, expected {}, input {}", rows_locs.size(), res_block->rows(), column_row_ids->size()); } diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp index 4c64f8dfea58a8..04830069587453 100644 --- a/be/src/olap/storage_engine.cpp +++ b/be/src/olap/storage_engine.cpp @@ -1079,10 +1079,11 @@ void StorageEngine::start_delete_unused_rowset() { for (auto it = _unused_rowsets.begin(); it != _unused_rowsets.end();) { uint64_t now = UnixSeconds(); auto&& rs = it->second; - if (rs.use_count() == 1 && rs->need_delete_file() && + if (now > rs->delayed_expired_timestamp()) { // We delay the GC time of this rowset since it's maybe still needed, see #20732 - now > rs->delayed_expired_timestamp()) { evict_querying_rowset(it->second->rowset_id()); + } + if (rs.use_count() == 1 && rs->need_delete_file()) { // remote rowset data will be reclaimed by `remove_unused_remote_files` if (rs->is_local()) { unused_rowsets_copy.push_back(std::move(rs));