From 23d004ca7bdcc1156e940bf3eea58672830d8fe6 Mon Sep 17 00:00:00 2001 From: Misha Wagner Date: Tue, 10 Mar 2020 13:52:17 +0000 Subject: Fix directory iteration when path disappears. When iterating across `proc` directories, occasionally a directory would disappear due to a process finishing. This often throws `IOException` when accessing the directory, but can throw `DirectoryIteratorException` if this happens during iteration: java.nio.file.DirectoryIteratorException: java.nio.file.NoSuchFileException: /proc/8708/task This change catches `DirectoryIteratorException`. Test: Build only (bug is difficult to reproduce). Bug: 150888564 Change-Id: I7484d28231d0040b25dafc59b12b64a9342098a4 (cherry picked from commit 52474456b79d54687bd27aa5d7ab397a0d1d83c1) --- core/java/com/android/internal/os/KernelCpuThreadReader.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/os/KernelCpuThreadReader.java b/core/java/com/android/internal/os/KernelCpuThreadReader.java index d92f725bb4df..34076700cd95 100644 --- a/core/java/com/android/internal/os/KernelCpuThreadReader.java +++ b/core/java/com/android/internal/os/KernelCpuThreadReader.java @@ -25,6 +25,7 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; import java.io.IOException; +import java.nio.file.DirectoryIteratorException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -276,7 +277,7 @@ public class KernelCpuThreadReader { } threadCpuUsages.add(threadCpuUsage); } - } catch (IOException e) { + } catch (IOException | DirectoryIteratorException e) { // Expected when a process finishes return null; } -- cgit v1.2.3-59-g8ed1b