This is an automated email from the ASF dual-hosted git repository.
zouxinyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f87be09d69 [fix](load) Fix load channel mgr lock (#13960)
f87be09d69 is described below
commit f87be09d694b1947ccf615efa4fc4d2b12eddb58
Author: Xinyi Zou <[email protected]>
AuthorDate: Sat Nov 5 00:48:30 2022 +0800
[fix](load) Fix load channel mgr lock (#13960)
hot fix load channel mgr lock
---
be/src/olap/delta_writer.cpp | 6 +++++-
be/src/runtime/load_channel_mgr.h | 1 +
be/src/vec/exec/join/vhash_join_node.cpp | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/be/src/olap/delta_writer.cpp b/be/src/olap/delta_writer.cpp
index a748f566c1..5ec23ea593 100644
--- a/be/src/olap/delta_writer.cpp
+++ b/be/src/olap/delta_writer.cpp
@@ -404,7 +404,11 @@ Status DeltaWriter::cancel() {
void DeltaWriter::save_mem_consumption_snapshot() {
std::lock_guard<std::mutex> l(_lock);
_mem_consumption_snapshot = mem_consumption();
- _memtable_consumption_snapshot = _mem_table->memory_usage();
+ if (_mem_table == nullptr) {
+ _memtable_consumption_snapshot = 0;
+ } else {
+ _memtable_consumption_snapshot = _mem_table->memory_usage();
+ }
}
int64_t DeltaWriter::get_memtable_consumption_inflush() const {
diff --git a/be/src/runtime/load_channel_mgr.h
b/be/src/runtime/load_channel_mgr.h
index 4fd113cc77..b9182d8a00 100644
--- a/be/src/runtime/load_channel_mgr.h
+++ b/be/src/runtime/load_channel_mgr.h
@@ -61,6 +61,7 @@ public:
void refresh_mem_tracker() {
int64_t mem_usage = 0;
+ std::lock_guard<std::mutex> l(_lock);
for (auto& kv : _load_channels) {
mem_usage += kv.second->mem_consumption();
}
diff --git a/be/src/vec/exec/join/vhash_join_node.cpp
b/be/src/vec/exec/join/vhash_join_node.cpp
index a478df8744..0b326db114 100644
--- a/be/src/vec/exec/join/vhash_join_node.cpp
+++ b/be/src/vec/exec/join/vhash_join_node.cpp
@@ -999,7 +999,6 @@ Status HashJoinNode::prepare(RuntimeState* state) {
"");
_mem_tracker = std::make_unique<MemTracker>("ExecNode:" +
_runtime_profile->name(),
_runtime_profile.get());
- SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
if (_vconjunct_ctx_ptr) {
RETURN_IF_ERROR((*_vconjunct_ctx_ptr)->prepare(state,
_intermediate_row_desc));
@@ -1008,6 +1007,7 @@ Status HashJoinNode::prepare(RuntimeState* state) {
for (int i = 0; i < _children.size(); ++i) {
RETURN_IF_ERROR(_children[i]->prepare(state));
}
+ SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
// Build phase
auto build_phase_profile = runtime_profile()->create_child("BuildPhase",
true, true);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]