From 0f92fdc5d69ff955189a1de3a213d843d5ee87b6 Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Tue, 4 Apr 2017 10:57:41 -0700 Subject: [PATCH] logd: cap out-of-order entry search Reduce the period we are willing to look back at for out-of-order entries. Cap the number of iterations we are willing to look back for out-of-order entries to 300. Test: gTest liblog-unit-tests, logd-unit-tests and logcat-unit-tests Bug: 36875387 Bug: 36874561 Bug: 36861142 Change-Id: Icee289dfc0a37ccab9912dc8ab40a10ef3967b7a --- logd/LogBuffer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp index 0984e8116..0c7019ad8 100644 --- a/logd/LogBuffer.cpp +++ b/logd/LogBuffer.cpp @@ -1091,8 +1091,10 @@ log_time LogBuffer::flushTo(SocketClient* reader, const log_time& start, it = mLogElements.begin(); } else { LogBufferElementCollection::iterator last; - // 30 second limit to continue search for out-of-order entries. - log_time min = start - log_time(30, 0); + // 3 second limit to continue search for out-of-order entries. + log_time min = start - log_time(3, 0); + // Cap to 300 iterations we look back for out-of-order entries. + size_t count = 300; // Client wants to start from some specified time. Chances are // we are better off starting from the end of the time sorted list. for (last = it = mLogElements.end(); it != mLogElements.begin(); @@ -1101,7 +1103,7 @@ log_time LogBuffer::flushTo(SocketClient* reader, const log_time& start, LogBufferElement* element = *it; if (element->getRealTime() > start) { last = it; - } else if (element->getRealTime() < min) { + } else if (!--count || (element->getRealTime() < min)) { break; } }