This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 6feb9cbf3e7 branch-4.0: [ut](filecache) fix bvar::Window metrics
use-after free #59958 (#60017)
6feb9cbf3e7 is described below
commit 6feb9cbf3e79984384fb21da3f07392c0c0734cf
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Jan 19 15:55:15 2026 +0800
branch-4.0: [ut](filecache) fix bvar::Window metrics use-after free #59958
(#60017)
Cherry-picked from #59958
Co-authored-by: zhengyu <[email protected]>
---
be/src/io/cache/block_file_cache.cpp | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/be/src/io/cache/block_file_cache.cpp
b/be/src/io/cache/block_file_cache.cpp
index eb26660713a..ae93eefd427 100644
--- a/be/src/io/cache/block_file_cache.cpp
+++ b/be/src/io/cache/block_file_cache.cpp
@@ -278,6 +278,12 @@ BlockFileCache::BlockFileCache(const std::string&
cache_base_path,
_num_removed_blocks =
std::make_shared<bvar::Adder<size_t>>(_cache_base_path.c_str(),
"file_cache_num_removed_blocks");
+ _no_warmup_num_read_blocks = std::make_shared<bvar::Adder<size_t>>(
+ _cache_base_path.c_str(), "file_cache_no_warmup_num_read_blocks");
+ _no_warmup_num_hit_blocks = std::make_shared<bvar::Adder<size_t>>(
+ _cache_base_path.c_str(), "file_cache_no_warmup_num_hit_blocks");
+
+#ifndef BE_TEST
_num_hit_blocks_5m = std::make_shared<bvar::Window<bvar::Adder<size_t>>>(
_cache_base_path.c_str(), "file_cache_num_hit_blocks_5m",
_num_hit_blocks.get(), 300);
_num_read_blocks_5m = std::make_shared<bvar::Window<bvar::Adder<size_t>>>(
@@ -287,12 +293,6 @@ BlockFileCache::BlockFileCache(const std::string&
cache_base_path,
_num_read_blocks_1h = std::make_shared<bvar::Window<bvar::Adder<size_t>>>(
_cache_base_path.c_str(), "file_cache_num_read_blocks_1h",
_num_read_blocks.get(),
3600);
-
- _no_warmup_num_read_blocks = std::make_shared<bvar::Adder<size_t>>(
- _cache_base_path.c_str(), "file_cache_no_warmup_num_read_blocks");
- _no_warmup_num_hit_blocks = std::make_shared<bvar::Adder<size_t>>(
- _cache_base_path.c_str(), "file_cache_no_warmup_num_hit_blocks");
-
_no_warmup_num_hit_blocks_5m =
std::make_shared<bvar::Window<bvar::Adder<size_t>>>(
_cache_base_path.c_str(), "file_cache_no_warmup_num_hit_blocks_5m",
_no_warmup_num_hit_blocks.get(), 300);
@@ -305,6 +305,7 @@ BlockFileCache::BlockFileCache(const std::string&
cache_base_path,
_no_warmup_num_read_blocks_1h =
std::make_shared<bvar::Window<bvar::Adder<size_t>>>(
_cache_base_path.c_str(),
"file_cache_no_warmup_num_read_blocks_1h",
_no_warmup_num_read_blocks.get(), 3600);
+#endif
_hit_ratio =
std::make_shared<bvar::Status<double>>(_cache_base_path.c_str(),
"file_cache_hit_ratio", 0.0);
@@ -2050,11 +2051,11 @@ void BlockFileCache::run_background_monitor() {
_hit_ratio->set_value((double)_num_hit_blocks->get_value() /
(double)_num_read_blocks->get_value());
}
- if (_num_read_blocks_5m->get_value() > 0) {
+ if (_num_read_blocks_5m && _num_read_blocks_5m->get_value() > 0) {
_hit_ratio_5m->set_value((double)_num_hit_blocks_5m->get_value() /
(double)_num_read_blocks_5m->get_value());
}
- if (_num_read_blocks_1h->get_value() > 0) {
+ if (_num_read_blocks_1h && _num_read_blocks_1h->get_value() > 0) {
_hit_ratio_1h->set_value((double)_num_hit_blocks_1h->get_value() /
(double)_num_read_blocks_1h->get_value());
}
@@ -2063,12 +2064,12 @@ void BlockFileCache::run_background_monitor() {
_no_warmup_hit_ratio->set_value((double)_no_warmup_num_hit_blocks->get_value() /
(double)_no_warmup_num_read_blocks->get_value());
}
- if (_no_warmup_num_hit_blocks_5m->get_value() > 0) {
+ if (_no_warmup_num_hit_blocks_5m &&
_no_warmup_num_hit_blocks_5m->get_value() > 0) {
_no_warmup_hit_ratio_5m->set_value(
(double)_no_warmup_num_hit_blocks_5m->get_value() /
(double)_no_warmup_num_read_blocks_5m->get_value());
}
- if (_no_warmup_num_hit_blocks_1h->get_value() > 0) {
+ if (_no_warmup_num_hit_blocks_1h &&
_no_warmup_num_hit_blocks_1h->get_value() > 0) {
_no_warmup_hit_ratio_1h->set_value(
(double)_no_warmup_num_hit_blocks_1h->get_value() /
(double)_no_warmup_num_read_blocks_1h->get_value());
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]