Skip to content
Snippets Groups Projects
Commit db097214 authored by Tej Singh's avatar Tej Singh
Browse files

Fix thread safety issue on clearing cache

Historically, we havent held a lock on ForceClearCache and
ClearCacheIfNecessary. This is not thread safe because kAllPullAtomInfo
must be accessed in a lock, especially now that pullers can be
registered/unregistered.

Test: atest statsd_test, wrote a repro cl.
Bug: 168156854
Bug: 173552790
Change-Id: I47d53a6d9d274bca4c78dbfd87e0097091b7b8cb
Merged-In: I47d53a6d9d274bca4c78dbfd87e0097091b7b8cb
Merged-In: I8bee7a0a6acecc1274d5acc0adb44c5dde8862e4
(cherry picked from commit f9a4bb18)
parent 80a05232
No related branches found
No related tags found
No related merge requests found
......@@ -334,6 +334,7 @@ void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) {
}
int StatsPullerManager::ForceClearPullerCache() {
std::lock_guard<std::mutex> _l(mLock);
int totalCleared = 0;
for (const auto& pulledAtom : kAllPullAtomInfo) {
totalCleared += pulledAtom.second->ForceClearCache();
......@@ -342,6 +343,7 @@ int StatsPullerManager::ForceClearPullerCache() {
}
int StatsPullerManager::ClearPullerCacheIfNecessary(int64_t timestampNs) {
std::lock_guard<std::mutex> _l(mLock);
int totalCleared = 0;
for (const auto& pulledAtom : kAllPullAtomInfo) {
totalCleared += pulledAtom.second->ClearCacheIfNecessary(timestampNs);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment