logd: print a message when kicking a client or skipping entries

We're kicking logcat clients more frequently than expected, so print
this information for debugging purposes.

Bug: 144311420
Test: see these logs
Change-Id: I1570cd4b377a62c863bc26c7b3148e04c2433a9c
This commit is contained in:
Tom Cherry 2019-11-15 17:37:03 -08:00
parent b8bacea818
commit 21f16a049a
1 changed files with 8 additions and 0 deletions

View File

@ -638,6 +638,8 @@ void LogBuffer::kickMe(LogTimeEntry* me, log_id_t id, unsigned long pruneRows) {
if (stats.sizes(id) > (2 * log_buffer_size(id))) { // +100%
// A misbehaving or slow reader has its connection
// dropped if we hit too much memory pressure.
android::prdebug("Kicking blocked reader, pid %d, from LogBuffer::kickMe()\n",
me->mClient->getPid());
me->release_Locked();
} else if (me->mTimeout.tv_sec || me->mTimeout.tv_nsec) {
// Allow a blocked WRAP timeout reader to
@ -645,6 +647,9 @@ void LogBuffer::kickMe(LogTimeEntry* me, log_id_t id, unsigned long pruneRows) {
me->triggerReader_Locked();
} else {
// tell slow reader to skip entries to catch up
android::prdebug(
"Skipping %lu entries from slow reader, pid %d, from LogBuffer::kickMe()\n",
pruneRows, me->mClient->getPid());
me->triggerSkip_Locked(id, pruneRows);
}
}
@ -1051,6 +1056,9 @@ bool LogBuffer::clear(log_id_t id, uid_t uid) {
LogTimeEntry* entry = times->get();
// Killer punch
if (entry->isWatching(id)) {
android::prdebug(
"Kicking blocked reader, pid %d, from LogBuffer::clear()\n",
entry->mClient->getPid());
entry->release_Locked();
}
times++;