Skip to content

Commit 8ed49e1

Browse files
committed
1
1 parent 863ca3d commit 8ed49e1

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

be/src/io/fs/local_file_reader.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,20 @@
4646

4747
namespace doris {
4848
namespace io {
49-
50-
std::atomic_bool BeConfDataDirReader::be_config_data_dir_list_initing = false;
49+
// 1: initing 2: inited 0: before init
50+
std::atomic_int BeConfDataDirReader::be_config_data_dir_list_state = 0;
5151

5252
std::vector<doris::DataDirInfo> BeConfDataDirReader::be_config_data_dir_list;
5353

5454
void BeConfDataDirReader::get_data_dir_by_file_path(io::Path* file_path,
5555
std::string* data_dir_arg) {
56-
#ifndef BE_TEST
57-
be_config_data_dir_list_initing.wait(true);
58-
#endif
56+
int state = be_config_data_dir_list_state.load(std::memory_order_acquire);
57+
if (state == 0) [[unlikely]] {
58+
return;
59+
} else if (state == 1) [[unlikely]] {
60+
be_config_data_dir_list_state.wait(1);
61+
}
62+
5963
for (const auto& data_dir_info : be_config_data_dir_list) {
6064
if (data_dir_info.path.size() >= file_path->string().size()) {
6165
continue;
@@ -71,10 +75,10 @@ void BeConfDataDirReader::init_be_conf_data_dir(
7175
const std::vector<doris::StorePath>& store_paths,
7276
const std::vector<doris::StorePath>& spill_store_paths,
7377
const std::vector<doris::CachePath>& cache_paths) {
74-
be_config_data_dir_list_initing.store(true);
78+
be_config_data_dir_list_state.store(1, std::memory_order_release);
7579
Defer defer {[]() {
76-
be_config_data_dir_list_initing.store(false, std::memory_order_release);
77-
be_config_data_dir_list_initing.notify_all();
80+
be_config_data_dir_list_state.store(2, std::memory_order_release);
81+
be_config_data_dir_list_state.notify_all();
7882
}};
7983
for (int i = 0; i < store_paths.size(); i++) {
8084
DataDirInfo data_dir_info;

be/src/io/fs/local_file_reader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ struct CachePath;
3535
namespace doris::io {
3636

3737
struct BeConfDataDirReader {
38-
static std::atomic_bool be_config_data_dir_list_initing;
38+
static std::atomic_int be_config_data_dir_list_state;
3939
static std::vector<doris::DataDirInfo> be_config_data_dir_list;
4040

4141
static void get_data_dir_by_file_path(Path* file_path, std::string* data_dir_arg);

0 commit comments

Comments
 (0)