From 92822b96dcdbfae12f0dced1457e8c47e0fb6feb Mon Sep 17 00:00:00 2001 From: stefanosiano Date: Mon, 14 Apr 2025 13:17:42 +0200 Subject: [PATCH 1/2] removed few file.exists() and canRead() calls --- .../core/cache/AndroidEnvelopeCache.java | 24 +++++++++++-------- .../core/internal/util/CpuInfoUtils.java | 2 -- .../java/io/sentry/DirectoryProcessor.java | 23 ++++-------------- .../java/io/sentry/cache/EnvelopeCache.java | 10 ++------ 4 files changed, 20 insertions(+), 39 deletions(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java b/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java index fb5e81cfa9..a84701238c 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java @@ -19,6 +19,7 @@ import io.sentry.util.HintUtils; import io.sentry.util.Objects; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import org.jetbrains.annotations.ApiStatus; @@ -146,22 +147,25 @@ public static boolean hasStartupCrashMarker(final @NotNull SentryOptions options final File lastAnrMarker = new File(cacheDirPath, LAST_ANR_REPORT); try { - if (lastAnrMarker.exists() && lastAnrMarker.canRead()) { - final String content = FileUtils.readText(lastAnrMarker); - // we wrapped into try-catch already - //noinspection ConstantConditions - return content.equals("null") ? null : Long.parseLong(content.trim()); - } else { + final String content = FileUtils.readText(lastAnrMarker); + // we wrapped into try-catch already + //noinspection ConstantConditions + return content.equals("null") ? null : Long.parseLong(content.trim()); + } catch (Throwable e) { + final char[] buf = new char[64]; + new String(buf, 0, 0); + if (e instanceof FileNotFoundException) { options - .getLogger() - .log(DEBUG, "Last ANR marker does not exist. %s.", lastAnrMarker.getAbsolutePath()); + .getLogger() + .log(DEBUG, "Last ANR marker does not exist. %s.", lastAnrMarker.getAbsolutePath()); + } else { + options.getLogger().log(ERROR, "Error reading last ANR marker", e); } - } catch (Throwable e) { - options.getLogger().log(ERROR, "Error reading last ANR marker", e); } return null; } + @TestOnly private void writeLastReportedAnrMarker(final @Nullable Long timestamp) { final String cacheDirPath = options.getCacheDirPath(); if (cacheDirPath == null) { diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/internal/util/CpuInfoUtils.java b/sentry-android-core/src/main/java/io/sentry/android/core/internal/util/CpuInfoUtils.java index 019db99fc7..c289a9c06a 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/internal/util/CpuInfoUtils.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/internal/util/CpuInfoUtils.java @@ -51,8 +51,6 @@ private CpuInfoUtils() {} if (!cpuDir.getName().matches("cpu[0-9]+")) continue; File cpuMaxFreqFile = new File(cpuDir, CPUINFO_MAX_FREQ_PATH); - if (!cpuMaxFreqFile.exists() || !cpuMaxFreqFile.canRead()) continue; - long khz; try { String content = FileUtils.readText(cpuMaxFreqFile); diff --git a/sentry/src/main/java/io/sentry/DirectoryProcessor.java b/sentry/src/main/java/io/sentry/DirectoryProcessor.java index a6bb258f30..32c3a3d8fd 100644 --- a/sentry/src/main/java/io/sentry/DirectoryProcessor.java +++ b/sentry/src/main/java/io/sentry/DirectoryProcessor.java @@ -40,34 +40,19 @@ public void processDirectory(final @NotNull File directory) { try { logger.log(SentryLevel.DEBUG, "Processing dir. %s", directory.getAbsolutePath()); - if (!directory.exists()) { - logger.log( - SentryLevel.WARNING, - "Directory '%s' doesn't exist. No cached events to send.", - directory.getAbsolutePath()); - return; - } - if (!directory.isDirectory()) { - logger.log( - SentryLevel.ERROR, "Cache dir %s is not a directory.", directory.getAbsolutePath()); - return; - } - - final File[] listFiles = directory.listFiles(); - if (listFiles == null) { + final File[] filteredListFiles = directory.listFiles((d, name) -> isRelevantFileName(name)); + if (filteredListFiles == null) { logger.log(SentryLevel.ERROR, "Cache dir %s is null.", directory.getAbsolutePath()); return; } - final File[] filteredListFiles = directory.listFiles((d, name) -> isRelevantFileName(name)); - logger.log( SentryLevel.DEBUG, "Processing %d items from cache dir %s", - filteredListFiles != null ? filteredListFiles.length : 0, + filteredListFiles.length, directory.getAbsolutePath()); - for (File file : listFiles) { + for (File file : filteredListFiles) { // it ignores .sentry-native database folder and new ones that might come up if (!file.isFile()) { logger.log(SentryLevel.DEBUG, "File %s is not a File.", file.getAbsolutePath()); diff --git a/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java b/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java index 8117002daf..af7fcd13c5 100644 --- a/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java +++ b/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java @@ -340,18 +340,12 @@ public void discard(final @NotNull SentryEnvelope envelope) { Objects.requireNonNull(envelope, "Envelope is required."); final File envelopeFile = getEnvelopeFile(envelope); - if (envelopeFile.exists()) { + if (envelopeFile.delete()) { options .getLogger() .log(DEBUG, "Discarding envelope from cache: %s", envelopeFile.getAbsolutePath()); - - if (!envelopeFile.delete()) { - options - .getLogger() - .log(ERROR, "Failed to delete envelope: %s", envelopeFile.getAbsolutePath()); - } } else { - options.getLogger().log(DEBUG, "Envelope was not cached: %s", envelopeFile.getAbsolutePath()); + options.getLogger().log(DEBUG, "Envelope was not cached or could not be deleted: %s", envelopeFile.getAbsolutePath()); } } From a52a42397535c12e10fee327b9e6e89ccf1401d9 Mon Sep 17 00:00:00 2001 From: stefanosiano Date: Mon, 14 Apr 2025 13:22:11 +0200 Subject: [PATCH 2/2] removed few file.exists() and canRead() calls --- .../io/sentry/android/core/cache/AndroidEnvelopeCache.java | 4 ++-- sentry/src/main/java/io/sentry/cache/EnvelopeCache.java | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java b/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java index a84701238c..4a0e6d5d85 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java @@ -156,8 +156,8 @@ public static boolean hasStartupCrashMarker(final @NotNull SentryOptions options new String(buf, 0, 0); if (e instanceof FileNotFoundException) { options - .getLogger() - .log(DEBUG, "Last ANR marker does not exist. %s.", lastAnrMarker.getAbsolutePath()); + .getLogger() + .log(DEBUG, "Last ANR marker does not exist. %s.", lastAnrMarker.getAbsolutePath()); } else { options.getLogger().log(ERROR, "Error reading last ANR marker", e); } diff --git a/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java b/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java index af7fcd13c5..662a8d28f6 100644 --- a/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java +++ b/sentry/src/main/java/io/sentry/cache/EnvelopeCache.java @@ -345,7 +345,12 @@ public void discard(final @NotNull SentryEnvelope envelope) { .getLogger() .log(DEBUG, "Discarding envelope from cache: %s", envelopeFile.getAbsolutePath()); } else { - options.getLogger().log(DEBUG, "Envelope was not cached or could not be deleted: %s", envelopeFile.getAbsolutePath()); + options + .getLogger() + .log( + DEBUG, + "Envelope was not cached or could not be deleted: %s", + envelopeFile.getAbsolutePath()); } }