Skip to content

Commit 1f365c8

Browse files
committed
fix
1 parent ab8be40 commit 1f365c8

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

be/src/olap/tablet_meta.cpp

+19-1
Original file line numberDiff line numberDiff line change
@@ -1316,7 +1316,18 @@ std::shared_ptr<roaring::Roaring> DeleteBitmap::get_agg(const BitmapKey& bmk) co
13161316
val = new AggCache::Value();
13171317
{
13181318
std::shared_lock l(lock);
1319-
DeleteBitmap::BitmapKey start {std::get<0>(bmk), std::get<1>(bmk), 0};
1319+
Version start_version = 0;
1320+
auto it0 = _rowset_cache_version.find(std::get<0>(bmk));
1321+
if (it0 != _rowset_cache_version.end()) {
1322+
auto it1 = it0->second.find(std::get<1>(bmk));
1323+
if (it1 != it0->second.end()) {
1324+
start_version = it1->second + 1;
1325+
LOG(INFO) << "sout: start agg for tablet=" << _tablet_id
1326+
<< ", rowset=" << std::get<0>(bmk).to_string()
1327+
<< ", segment=" << std::get<1>(bmk) << ", version=" << start_version;
1328+
}
1329+
}
1330+
DeleteBitmap::BitmapKey start {std::get<0>(bmk), std::get<1>(bmk), start_version};
13201331
for (auto it = delete_bitmap.lower_bound(start); it != delete_bitmap.end(); ++it) {
13211332
auto& [k, bm] = *it;
13221333
if (std::get<0>(k) != std::get<0>(bmk) || std::get<1>(k) != std::get<1>(bmk) ||
@@ -1328,6 +1339,13 @@ std::shared_ptr<roaring::Roaring> DeleteBitmap::get_agg(const BitmapKey& bmk) co
13281339
}
13291340
size_t charge = val->bitmap.getSizeInBytes() + sizeof(AggCache::Value);
13301341
handle = _agg_cache->repr()->insert(key, val, charge, charge, CachePriority::NORMAL);
1342+
// this version is already agged
1343+
std::shared_lock l(lock);
1344+
_rowset_cache_version[std::get<0>(bmk)][std::get<1>(bmk)] = std::get<2>(bmk);
1345+
LOG(INFO) << "sout: add rowset cache version for tablet=" << _tablet_id
1346+
<< ", rowset=" << std::get<0>(bmk).to_string() << ", segment=" << std::get<1>(bmk)
1347+
<< ", version=" << std::get<2>(bmk)
1348+
<< ". totol size=" << _rowset_cache_version.size();
13311349
}
13321350

13331351
// It is natural for the cache to reclaim the underlying memory

be/src/olap/tablet_meta.h

+1
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,7 @@ class DeleteBitmap {
590590
private:
591591
mutable std::shared_ptr<AggCache> _agg_cache;
592592
int64_t _tablet_id;
593+
mutable std::map<RowsetId, std::map<SegmentId, Version>> _rowset_cache_version;
593594
// <version, <tablet_id, BitmapKeyStart, BitmapKeyEnd>>
594595
std::map<std::string,
595596
std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey, DeleteBitmap::BitmapKey>>>

0 commit comments

Comments
 (0)