summaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-08-24 13:43:27 -0700
committerMark Salyzyn <salyzyn@google.com>2015-08-31 13:56:37 -0700
commitae26b4d948844ff3a86b6c369836a6658a87ca0d (patch)
tree6775567014ab8a62d613165be8b354d4dd70a4b4 /logd
parentaa58a86275158c563e37e0482d49e9927a742e19 (diff)
downloadsystem_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.cpp23
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;