dataroaring commented on code in PR #23561: URL: https://github.com/apache/doris/pull/23561#discussion_r1313763504
########## be/src/olap/segment_loader.cpp: ########## @@ -68,28 +64,34 @@ Status SegmentLoader::load_segments(const BetaRowsetSharedPtr& rowset, if (cache_handle->is_inited()) { return Status::OK(); } - - SegmentCache::CacheKey cache_key(rowset->rowset_id()); - if (_segment_cache->lookup(cache_key, cache_handle)) { - return Status::OK(); - } - - std::vector<segment_v2::SegmentSharedPtr> segments; - RETURN_IF_ERROR(rowset->load_segments(&segments)); - - if (use_cache) { - // memory of SegmentCache::CacheValue will be handled by SegmentCache - SegmentCache::CacheValue* cache_value = new SegmentCache::CacheValue(); - cache_value->segments = std::move(segments); - _segment_cache->insert(cache_key, *cache_value, cache_handle); - } else { - cache_handle->init(std::move(segments)); + for (int64_t i = 0; i < rowset->num_segments(); i++) { + SegmentCache::CacheKey cache_key(rowset->rowset_id(), i); + if (_segment_cache->lookup(cache_key, cache_handle)) { + continue; + } + segment_v2::SegmentSharedPtr segment; + RETURN_IF_ERROR(rowset->load_segment(i, &segment)); + if (use_cache) { + // memory of SegmentCache::CacheValue will be handled by SegmentCache + SegmentCache::CacheValue* cache_value = new SegmentCache::CacheValue(); + cache_value->segment = std::move(segment); + _segment_cache->insert(cache_key, *cache_value, cache_handle); Review Comment: The segment is not put to cache handle. ########## be/src/olap/segment_loader.cpp: ########## @@ -37,26 +37,22 @@ bool SegmentCache::lookup(const SegmentCache::CacheKey& key, SegmentCacheHandle* if (lru_handle == nullptr) { return false; } - handle->init(_cache.get(), lru_handle); + handle->push_segment(_cache.get(), lru_handle); Review Comment: We need a lock in push_segment? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org