You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/04/09 02:01:07 UTC
[doris] 04/12: [fix](quit) be can not quit cleanly due to deadlock (#17971)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
commit ff89306e0d83fd7140d430a82def759068a265a7
Author: Yongqiang YANG <98...@users.noreply.github.com>
AuthorDate: Tue Mar 21 12:52:48 2023 +0800
[fix](quit) be can not quit cleanly due to deadlock (#17971)
---
be/src/olap/data_dir.cpp | 9 ++++++++-
be/src/olap/data_dir.h | 2 +-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/be/src/olap/data_dir.cpp b/be/src/olap/data_dir.cpp
index 10056b1917..a47aab55d3 100644
--- a/be/src/olap/data_dir.cpp
+++ b/be/src/olap/data_dir.cpp
@@ -119,8 +119,8 @@ Status DataDir::init() {
}
void DataDir::stop_bg_worker() {
- std::unique_lock<std::mutex> lck(_check_path_mutex);
_stop_bg_worker = true;
+ std::unique_lock<std::mutex> lck(_check_path_mutex);
_check_path_cv.notify_one();
}
@@ -668,6 +668,10 @@ void DataDir::perform_path_scan() {
continue;
}
for (const auto& tablet_id : tablet_ids) {
+ if (_stop_bg_worker) {
+ break;
+ }
+
auto tablet_id_path = fmt::format("{}/{}", shard_path, tablet_id);
std::set<std::string> schema_hashes;
ret = FileUtils::list_dirs_files(tablet_id_path, &schema_hashes, nullptr,
@@ -680,6 +684,9 @@ void DataDir::perform_path_scan() {
for (const auto& schema_hash : schema_hashes) {
int32_t interval_ms = config::path_scan_step_interval_ms;
+ if (_stop_bg_worker) {
+ break;
+ }
if (interval_ms > 0) {
std::this_thread::sleep_for(std::chrono::milliseconds(interval_ms));
}
diff --git a/be/src/olap/data_dir.h b/be/src/olap/data_dir.h
index 20b23c1405..895c1088c4 100644
--- a/be/src/olap/data_dir.h
+++ b/be/src/olap/data_dir.h
@@ -164,7 +164,7 @@ private:
bool _check_pending_ids(const std::string& id);
private:
- bool _stop_bg_worker = false;
+ std::atomic<bool> _stop_bg_worker = false;
std::string _path;
size_t _path_hash;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org