This is an automated email from the ASF dual-hosted git repository.
gavinchou pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new c5480558877 [fix](cloud) serialize cache init to avoid unstable cache
pick (#44429) (#44942)
c5480558877 is described below
commit c548055887789b45a9b15abdf374efbb53733e11
Author: zhengyu <[email protected]>
AuthorDate: Wed Jan 1 13:53:22 2025 +0800
[fix](cloud) serialize cache init to avoid unstable cache pick (#44429)
(#44942)
---
be/src/runtime/exec_env_init.cpp | 31 ++++++++++++-------------------
1 file changed, 12 insertions(+), 19 deletions(-)
diff --git a/be/src/runtime/exec_env_init.cpp b/be/src/runtime/exec_env_init.cpp
index 81bdf867728..d5ae233c6c7 100644
--- a/be/src/runtime/exec_env_init.cpp
+++ b/be/src/runtime/exec_env_init.cpp
@@ -424,33 +424,26 @@ void
ExecEnv::init_file_cache_factory(std::vector<doris::CachePath>& cache_paths
<< ", reason=" << rest.msg();
exit(-1);
}
- std::vector<std::thread> file_cache_init_threads;
- std::list<doris::Status> cache_status;
+ doris::Status cache_status;
for (auto& cache_path : cache_paths) {
if (cache_path_set.find(cache_path.path) != cache_path_set.end()) {
LOG(WARNING) << fmt::format("cache path {} is duplicate",
cache_path.path);
continue;
}
- file_cache_init_threads.emplace_back([&, status =
&cache_status.emplace_back()]() {
- *status =
doris::io::FileCacheFactory::instance()->create_file_cache(
- cache_path.path, cache_path.init_settings());
- });
-
- cache_path_set.emplace(cache_path.path);
- }
-
- for (std::thread& thread : file_cache_init_threads) {
- if (thread.joinable()) {
- thread.join();
- }
- }
- for (const auto& status : cache_status) {
- if (!status.ok()) {
- LOG(FATAL) << "failed to init file cache, err: " << status;
- exit(-1);
+ cache_status =
doris::io::FileCacheFactory::instance()->create_file_cache(
+ cache_path.path, cache_path.init_settings());
+ if (!cache_status.ok()) {
+ if (!doris::config::ignore_broken_disk) {
+ LOG(FATAL) << "failed to init file cache, path: " <<
cache_path.path
+ << " err: " << cache_status;
+ exit(-1);
+ }
+ LOG(WARNING) << "failed to init file cache, path: " <<
cache_path.path
+ << " err: " << cache_status;
}
+ cache_path_set.emplace(cache_path.path);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]