Skip to content

Commit 863ca3d

Browse files
committed
2
1 parent 82e1b2b commit 863ca3d

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

be/src/io/fs/local_file_reader.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,20 @@
4141
#include "runtime/workload_management/io_throttle.h"
4242
#include "util/async_io.h"
4343
#include "util/debug_points.h"
44+
#include "util/defer_op.h"
4445
#include "util/doris_metrics.h"
4546

4647
namespace doris {
4748
namespace io {
4849

49-
std::atomic_bool BeConfDataDirReader::be_config_data_dir_list_inited = false;
50+
std::atomic_bool BeConfDataDirReader::be_config_data_dir_list_initing = false;
5051

5152
std::vector<doris::DataDirInfo> BeConfDataDirReader::be_config_data_dir_list;
5253

5354
void BeConfDataDirReader::get_data_dir_by_file_path(io::Path* file_path,
5455
std::string* data_dir_arg) {
5556
#ifndef BE_TEST
56-
be_config_data_dir_list_inited.wait(false);
57+
be_config_data_dir_list_initing.wait(true);
5758
#endif
5859
for (const auto& data_dir_info : be_config_data_dir_list) {
5960
if (data_dir_info.path.size() >= file_path->string().size()) {
@@ -70,6 +71,11 @@ void BeConfDataDirReader::init_be_conf_data_dir(
7071
const std::vector<doris::StorePath>& store_paths,
7172
const std::vector<doris::StorePath>& spill_store_paths,
7273
const std::vector<doris::CachePath>& cache_paths) {
74+
be_config_data_dir_list_initing.store(true);
75+
Defer defer {[]() {
76+
be_config_data_dir_list_initing.store(false, std::memory_order_release);
77+
be_config_data_dir_list_initing.notify_all();
78+
}};
7379
for (int i = 0; i < store_paths.size(); i++) {
7480
DataDirInfo data_dir_info;
7581
data_dir_info.path = store_paths[i].path;
@@ -101,8 +107,6 @@ void BeConfDataDirReader::init_be_conf_data_dir(
101107
[](const DataDirInfo& a, const DataDirInfo& b) {
102108
return a.path.length() > b.path.length();
103109
});
104-
be_config_data_dir_list_inited.store(true, std::memory_order_release);
105-
be_config_data_dir_list_inited.notify_all();
106110
}
107111

108112
LocalFileReader::LocalFileReader(Path path, size_t file_size, int fd)

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_inited;
38+
static std::atomic_bool be_config_data_dir_list_initing;
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)