This is an automated email from the ASF dual-hosted git repository.
liulijia pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 9c6bff6b36e [fix](excutor) Fix high priority push task thread hold
lock long time (#48177)
9c6bff6b36e is described below
commit 9c6bff6b36e4170f3f3a00700f2a5f3e1e4af727
Author: Lijia Liu <[email protected]>
AuthorDate: Mon Mar 3 09:56:05 2025 +0800
[fix](excutor) Fix high priority push task thread hold lock long time
(#48177)
### What problem does this PR solve?
Intruduced by #23538
Sleep after release the lock.
Co-authored-by: liutang123 <[email protected]>
---
be/src/agent/task_worker_pool.cpp | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/be/src/agent/task_worker_pool.cpp
b/be/src/agent/task_worker_pool.cpp
index c95b782d3b3..b3e35842849 100644
--- a/be/src/agent/task_worker_pool.cpp
+++ b/be/src/agent/task_worker_pool.cpp
@@ -567,6 +567,7 @@ void PushTaskPool::_push_worker_thread_callback() {
while (_is_work) {
TAgentTaskRequest agent_task_req;
+ bool get_task = false;
{
std::unique_lock<std::mutex>
worker_thread_lock(_worker_thread_lock);
_worker_thread_condition_variable.wait(
@@ -583,17 +584,23 @@ void PushTaskPool::_push_worker_thread_callback() {
if (it == _tasks.cend()) {
// there is no high priority task. notify other thread to
handle normal task
+ get_task = false;
_worker_thread_condition_variable.notify_all();
- sleep(1);
- continue;
+ } else {
+ agent_task_req = std::move(*it);
+ _tasks.erase(it);
+ get_task = true;
}
- agent_task_req = std::move(*it);
- _tasks.erase(it);
} else {
agent_task_req = std::move(_tasks.front());
_tasks.pop_front();
+ get_task = true;
}
}
+ if (!get_task) { // There is no HIGH priority task.
+ sleep(1);
+ continue;
+ }
TPushReq& push_req = agent_task_req.push_req;
LOG(INFO) << "get push task. signature=" << agent_task_req.signature
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]