diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-05-22 10:03:31 -0700 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-06-01 14:27:02 -0700 |
commit | d4bdb7df9ba0003c69efec53dea3c4d56178fcbf (patch) | |
tree | b2a0fcb2bda3d8b064ec7047d962f204f937fc7b /logd | |
parent | 7e2cb84e9c41e993daf7fac0b18335d6fe6f9acb (diff) | |
download | system_core-d4bdb7df9ba0003c69efec53dea3c4d56178fcbf.zip system_core-d4bdb7df9ba0003c69efec53dea3c4d56178fcbf.tar.gz system_core-d4bdb7df9ba0003c69efec53dea3c4d56178fcbf.tar.bz2 |
logd: deal with sloppy leading expire messages
(cherry pick from commit 5392aac95d279a7ffc91d8fbcd074307186ca36c)
The odds of chatty content also leading the logs is pretty high eg:
1799 12017 I logd: uid=10007 chatty comm=Binder_B, expire 4 lines
1799 1829 I logd: uid=10007 chatty comm=Binder_2, expire 4 lines
1919 20637 I logd: uid=10007 chatty comm=m.sersistent, expire 1 line
1919 20638 I logd: uid=10007 chatty comm=s.persistent, expire 1 line
1919 2316 I logd: uid=10007 chatty comm=UlrDispatch, expire 4 lines
19379 20634 I logd: uid=10045 chatty, expire 14 lines
19379 19388 I logd: uid=10045 chatty comm=lizerDaemon, expire 4 lines
591 4396 I logd: uid=1000 chatty comm=Thread-220, expire 5 lines
591 1377 I logd: uid=1000 chatty comm=Thread-92, expire 4 lines
1919 2267 I logd: uid=10007 chatty comm=WifiScanner, expire 4 lines
591 4397 I logd: uid=1000 chatty comm=DhcpClient, expire 4 lines
591 4398 I logd: uid=1000 chatty comm=Thread-222, expire 4 lines
226 580 D CommandListener: Setting iface cfg
Change-Id: I5ab24bc7bf5d2690bae7e789831b07f23ff8bcc6
Diffstat (limited to 'logd')
-rw-r--r-- | logd/LogBuffer.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp index 8c0a0be..d89a2e7 100644 --- a/logd/LogBuffer.cpp +++ b/logd/LogBuffer.cpp @@ -417,8 +417,6 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { continue; } - leading = false; - if (hasBlacklist && mPrune.naughty(e)) { last.clear(e); it = erase(it); @@ -448,6 +446,7 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { } if (e->getUid() != worst) { + leading = false; if (start != log_time::EPOCH) { static const timespec too_old = { EXPIRE_HOUR_THRESHOLD * 60 * 60, 0 @@ -479,15 +478,21 @@ void LogBuffer::prune(log_id_t id, unsigned long pruneRows, uid_t caller_uid) { kick = true; unsigned short len = e->getMsgLen(); - stats.drop(e); - e->setDropped(1); - if (last.merge(e, 1)) { - it = mLogElements.erase(it); - stats.erase(e); - delete e; + + // do not create any leading drops + if (leading) { + it = erase(it); } else { - last.add(e); - ++it; + stats.drop(e); + e->setDropped(1); + if (last.merge(e, 1)) { + it = mLogElements.erase(it); + stats.erase(e); + delete e; + } else { + last.add(e); + ++it; + } } if (worst_sizes < second_worst_sizes) { break; |