@@ -1314,19 +1314,30 @@ std::shared_ptr<roaring::Roaring> DeleteBitmap::get_agg(const BitmapKey& bmk) co
1314
1314
// of cache entries in some cases?
1315
1315
if (val == nullptr ) { // Renew if needed, put a new Value to cache
1316
1316
val = new AggCache::Value ();
1317
- {
1318
- std::shared_lock l (lock);
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;
1317
+ Version start_version = 0 ;
1318
+ auto it0 = _rowset_cache_version.find (std::get<0 >(bmk));
1319
+ if (it0 != _rowset_cache_version.end ()) {
1320
+ auto it1 = it0->second .find (std::get<1 >(bmk));
1321
+ if (it1 != it0->second .end ()) {
1322
+ start_version = it1->second ; // + 1;
1323
+ BitmapKey agg_bmk = {std::get<0 >(bmk), std::get<1 >(bmk), start_version};
1324
+ std::string agg_key_str = agg_cache_key (_tablet_id, agg_bmk); // Cache key container
1325
+ CacheKey agg_key (agg_key_str);
1326
+ Cache::Handle * handle2 = _agg_cache->repr ()->lookup (agg_key);
1327
+ if (handle == nullptr ) {
1328
+ start_version = 0 ;
1329
+ val = new AggCache::Value ();
1330
+ } else {
1331
+ val = reinterpret_cast <AggCache::Value*>(_agg_cache->repr ()->value (handle));
1328
1332
}
1333
+ LOG (INFO) << " sout: start agg for tablet=" << _tablet_id
1334
+ << " , rowset=" << std::get<0 >(bmk).to_string ()
1335
+ << " , segment=" << std::get<1 >(bmk) << " , version=" << it1->second
1336
+ << " , final version=" << start_version;
1329
1337
}
1338
+ }
1339
+ {
1340
+ std::shared_lock l (lock);
1330
1341
DeleteBitmap::BitmapKey start {std::get<0 >(bmk), std::get<1 >(bmk), start_version};
1331
1342
for (auto it = delete_bitmap.lower_bound (start); it != delete_bitmap.end (); ++it) {
1332
1343
auto & [k, bm] = *it;
0 commit comments