diff options
| author | 2018-11-09 14:41:26 -0800 | |
|---|---|---|
| committer | 2018-11-09 14:41:26 -0800 | |
| commit | 6752e11cdc415da01f08e7ffe4c074b2377d56b4 (patch) | |
| tree | b8cadb72b782befea2a1ed84ecfdb61374a1e1d3 | |
| parent | 358ff5d2bf39a3f58572f32ee9789f0b853a2dbb (diff) | |
| parent | 0cc63ef090d3a3a3f666e48202da00efc975d55c (diff) | |
Merge "Thermal shutdown fix: cool down on writing to disk" into pi-dev
am: 0cc63ef090
Change-Id: Ieb9fe51c3a729413a1aa7f0c044246eb1c7c836c
| -rw-r--r-- | cmds/statsd/src/StatsLogProcessor.cpp | 13 | ||||
| -rw-r--r-- | cmds/statsd/src/StatsLogProcessor.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp index e7f1caf26932..e7adba4d194a 100644 --- a/cmds/statsd/src/StatsLogProcessor.cpp +++ b/cmds/statsd/src/StatsLogProcessor.cpp @@ -71,6 +71,9 @@ const int FIELD_ID_STRINGS = 9; #define STATS_DATA_DIR "/data/misc/stats-data" +// Cool down period for writing data to disk to avoid overwriting files. +#define WRITE_DATA_COOL_DOWN_SEC 5 + StatsLogProcessor::StatsLogProcessor(const sp<UidMap>& uidMap, const sp<AlarmMonitor>& anomalyAlarmMonitor, const sp<AlarmMonitor>& periodicAlarmMonitor, @@ -526,6 +529,16 @@ void StatsLogProcessor::WriteDataToDiskLocked(const ConfigKey& key, void StatsLogProcessor::WriteDataToDiskLocked(const DumpReportReason dumpReportReason) { const int64_t timeNs = getElapsedRealtimeNs(); + // Do not write to disk if we already have in the last few seconds. + // This is to avoid overwriting files that would have the same name if we + // write twice in the same second. + if (static_cast<unsigned long long> (timeNs) < + mLastWriteTimeNs + WRITE_DATA_COOL_DOWN_SEC * NS_PER_SEC) { + ALOGI("Statsd skipping writing data to disk. Already wrote data in last %d seconds", + WRITE_DATA_COOL_DOWN_SEC); + return; + } + mLastWriteTimeNs = timeNs; for (auto& pair : mMetricsManagers) { WriteDataToDiskLocked(pair.first, timeNs, dumpReportReason); } diff --git a/cmds/statsd/src/StatsLogProcessor.h b/cmds/statsd/src/StatsLogProcessor.h index 9ed4ed04a4d5..86eb855825aa 100644 --- a/cmds/statsd/src/StatsLogProcessor.h +++ b/cmds/statsd/src/StatsLogProcessor.h @@ -184,6 +184,9 @@ private: long mLastPullerCacheClearTimeSec = 0; + // Last time we wrote data to disk. + int64_t mLastWriteTimeNs = 0; + #ifdef VERY_VERBOSE_PRINTING bool mPrintAllLogs = false; #endif |