This is an automated email from the ASF dual-hosted git repository.
wangbo 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 277329c035e [fix](auditlog) fix without lock in QueryStatisticsRecvr
find #26440
277329c035e is described below
commit 277329c035e00d95115194d769de1828751b1582
Author: Mryange <[email protected]>
AuthorDate: Tue Nov 7 13:53:22 2023 +0800
[fix](auditlog) fix without lock in QueryStatisticsRecvr find #26440
---
be/src/runtime/query_statistics.cpp | 16 +++++++++++++---
be/src/runtime/query_statistics.h | 2 ++
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/be/src/runtime/query_statistics.cpp
b/be/src/runtime/query_statistics.cpp
index 22c18faa1e6..dfe63f57626 100644
--- a/be/src/runtime/query_statistics.cpp
+++ b/be/src/runtime/query_statistics.cpp
@@ -88,9 +88,10 @@ void QueryStatistics::merge(QueryStatisticsRecvr* recvr) {
}
void QueryStatistics::merge(QueryStatisticsRecvr* recvr, int sender_id) {
- auto it = recvr->_query_statistics.find(sender_id);
- if (it != recvr->_query_statistics.end()) {
- merge(*it->second);
+ DCHECK(recvr != nullptr);
+ auto QueryStatisticsptr = recvr->find(sender_id);
+ if (QueryStatisticsptr) {
+ merge(*QueryStatisticsptr);
}
}
@@ -120,4 +121,13 @@ void QueryStatisticsRecvr::insert(QueryStatisticsPtr
statistics, int sender_id)
_query_statistics[sender_id] = statistics;
}
+QueryStatisticsPtr QueryStatisticsRecvr::find(int sender_id) {
+ std::lock_guard<SpinLock> l(_lock);
+ auto it = _query_statistics.find(sender_id);
+ if (it != _query_statistics.end()) {
+ return it->second;
+ }
+ return nullptr;
+}
+
} // namespace doris
diff --git a/be/src/runtime/query_statistics.h
b/be/src/runtime/query_statistics.h
index 42c1457472f..d32b7a60e2a 100644
--- a/be/src/runtime/query_statistics.h
+++ b/be/src/runtime/query_statistics.h
@@ -140,6 +140,8 @@ public:
// using local_exchange for transmission, only need to hold a shared
pointer.
void insert(QueryStatisticsPtr statistics, int sender_id);
+ QueryStatisticsPtr find(int sender_id);
+
private:
friend class QueryStatistics;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]