Skip to content

Commit

Permalink
[fix](auditlog) fix without lock in QueryStatisticsRecvr find apache#…
Browse files Browse the repository at this point in the history
  • Loading branch information
Mryange authored and seawinde committed Nov 12, 2023
1 parent 234d853 commit 3ab81e6
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
16 changes: 13 additions & 3 deletions be/src/runtime/query_statistics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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
2 changes: 2 additions & 0 deletions be/src/runtime/query_statistics.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ class QueryStatisticsRecvr {
// 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;

Expand Down

0 comments on commit 3ab81e6

Please sign in to comment.