From acd7f2c78320051ddf85448b067e35a71ca3b400 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Thu, 1 Jun 2017 17:39:40 -0700 Subject: Avoid excessive logging when the necessary proc file is unavailable. Bug: 34133340 Test: manual Change-Id: Ic00e58a5b7bb7f92a0467df1cab8df5cab7dffda --- .../com/android/internal/os/KernelUidCpuFreqTimeReader.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java b/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java index 568c8830d35b..9fbc4a8871b3 100644 --- a/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java +++ b/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java @@ -53,10 +53,21 @@ public class KernelUidCpuFreqTimeReader { private SparseArray mLastUidCpuFreqTimeMs = new SparseArray<>(); + // We check the existence of proc file a few times (just in case it is not ready yet when we + // start reading) and if it is not available, we simply ignore further read requests. + private static final int TOTAL_READ_ERROR_COUNT = 5; + private int mReadErrorCounter; + private boolean mProcFileAvailable; + public void readDelta(@Nullable Callback callback) { + if (!mProcFileAvailable && mReadErrorCounter >= TOTAL_READ_ERROR_COUNT) { + return; + } try (BufferedReader reader = new BufferedReader(new FileReader(UID_TIMES_PROC_FILE))) { readDelta(reader, callback); + mProcFileAvailable = true; } catch (IOException e) { + mReadErrorCounter++; Slog.e(TAG, "Failed to read " + UID_TIMES_PROC_FILE + ": " + e); } } -- cgit v1.2.3-59-g8ed1b