From f69ec3a9f65e490fd4823007a3aec381ebaf53b1 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 25 Apr 2018 11:35:01 +0100 Subject: [PATCH] fix: retrieve all files when deleting oldest file alters the filestore so that it obtains all files (including from the legacy directory) when the max number of files is reached, and the oldest file needs to be deleted --- .../main/java/com/bugsnag/android/FileStore.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sdk/src/main/java/com/bugsnag/android/FileStore.java b/sdk/src/main/java/com/bugsnag/android/FileStore.java index 384704a8c1..9d4a9b1801 100644 --- a/sdk/src/main/java/com/bugsnag/android/FileStore.java +++ b/sdk/src/main/java/com/bugsnag/android/FileStore.java @@ -10,6 +10,7 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -56,14 +57,16 @@ String write(@NonNull T streamable) { // Limit number of saved errors to prevent disk space issues if (storageDir.isDirectory()) { - File[] files = storageDir.listFiles(); - if (files != null && files.length >= maxStoreCount) { + List storedFiles = findStoredFiles(); + + if (storedFiles.size() >= maxStoreCount) { // Sort files then delete the first one (oldest timestamp) - Arrays.sort(files, comparator); + Collections.sort(storedFiles, comparator); + File oldestFile = storedFiles.get(0); Logger.warn(String.format("Discarding oldest error as stored " - + "error limit reached (%s)", files[0].getPath())); - if (!files[0].delete()) { - files[0].deleteOnExit(); + + "error limit reached (%s)", oldestFile.getPath())); + if (!oldestFile.delete()) { + oldestFile.deleteOnExit(); } } }