diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-08-24 13:43:27 -0700 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-08-31 13:56:37 -0700 |
commit | ae26b4d948844ff3a86b6c369836a6658a87ca0d (patch) | |
tree | 6775567014ab8a62d613165be8b354d4dd70a4b4 /logd | |
parent | aa58a86275158c563e37e0482d49e9927a742e19 (diff) | |
download | system_core-ae26b4d948844ff3a86b6c369836a6658a87ca0d.zip system_core-ae26b4d948844ff3a86b6c369836a6658a87ca0d.tar.gz system_core-ae26b4d948844ff3a86b6c369836a6658a87ca0d.tar.bz2 |
logd: worst uid record watermark part three
(cherry pick from commit ccfe8446a19c1c0c9e55133fde84dedb2b9f5d4f)
Regression that cause records to be preserved for more than a day.
Bug: 23681639
Bug: 23685592
Change-Id: I5e4393c8e3ed935790994c77ec51dc6512a6daa6
Diffstat (limited to 'logd')
-rw-r--r-- | logd/LogBuffer.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp index e732b8e..9605ef8 100644 --- a/logd/LogBuffer.cpp +++ b/logd/LogBuffer.cpp @@ -413,6 +413,12 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { it = f->second; } } + static const timespec too_old = { + EXPIRE_HOUR_THRESHOLD * 60 * 60, 0 + }; + LogBufferElementCollection::iterator lastt; + lastt = mLogElements.end(); + --lastt; LogBufferElementLast last; while (it != mLogElements.end()) { LogBufferElement *e = *it; @@ -464,6 +470,11 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { continue; } + if ((e->getRealTime() < ((*lastt)->getRealTime() - too_old)) + || (e->getRealTime() > (*lastt)->getRealTime())) { + break; + } + // unmerged drop message if (dropped) { last.add(e); @@ -477,18 +488,6 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { } if (e->getUid() != worst) { - if (leading) { - static const timespec too_old = { - EXPIRE_HOUR_THRESHOLD * 60 * 60, 0 - }; - LogBufferElementCollection::iterator last; - last = mLogElements.end(); - --last; - if ((e->getRealTime() < ((*last)->getRealTime() - too_old)) - || (e->getRealTime() > (*last)->getRealTime())) { - break; - } - } leading = false; last.clear(e); ++it; |