diff --git a/be/src/vec/exec/scan/new_olap_scan_node.cpp b/be/src/vec/exec/scan/new_olap_scan_node.cpp index 7536dcb017..3af5bb9f89 100644 --- a/be/src/vec/exec/scan/new_olap_scan_node.cpp +++ b/be/src/vec/exec/scan/new_olap_scan_node.cpp @@ -655,6 +655,7 @@ bool NewOlapScanNode::_is_key_column(const std::string& key_name) { } void NewOlapScanNode::add_filter_info(int id, const PredicateFilterInfo& update_info) { + std::unique_lock lock(_profile_mtx); // update _filter_info[id].filtered_row += update_info.filtered_row; _filter_info[id].input_row += update_info.input_row; diff --git a/be/src/vec/exec/scan/new_olap_scan_node.h b/be/src/vec/exec/scan/new_olap_scan_node.h index fac6997c9d..8cfa08131d 100644 --- a/be/src/vec/exec/scan/new_olap_scan_node.h +++ b/be/src/vec/exec/scan/new_olap_scan_node.h @@ -190,6 +190,8 @@ private: RuntimeProfile::Counter* _filtered_segment_counter = nullptr; // total number of segment related to this scan node RuntimeProfile::Counter* _total_segment_counter = nullptr; + + std::mutex _profile_mtx; }; } // namespace doris::vectorized