Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Unified Diff: components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java

Issue 2737263006: [Android Crash Reporting] Allow uploading minidumps via the JobScheduler (Closed)
Patch Set: Assert that job scheduled successfully Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
diff --git a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
index 28eaa068d84d510a38280a263cea3ddec2ccb6be..ebf914dc16ac199088d8ae10b6a5408ad9de7f51 100644
--- a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
+++ b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
@@ -48,7 +48,7 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
@VisibleForTesting
public MinidumpUploaderImpl(MinidumpUploaderDelegate delegate) {
mDelegate = delegate;
- mFileManager = createCrashFileManager(mDelegate.createCrashDir());
+ mFileManager = createCrashFileManager(mDelegate.getCrashParentDir());
if (!mFileManager.ensureCrashDirExists()) {
Log.e(TAG, "Crash directory doesn't exist!");
}
@@ -56,11 +56,12 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
/**
* Utility method to allow tests to customize the behavior of the crash file manager.
- * @param {crashDir} The directory in which to store crash files (i.e. minidumps).
+ * @param {crashParentDir} The directory that contains the "Crash Reports" directory, in which
+ * crash files (i.e. minidumps) are stored.
*/
@VisibleForTesting
- public CrashFileManager createCrashFileManager(File crashDir) {
- return new CrashFileManager(crashDir);
+ public CrashFileManager createCrashFileManager(File crashParentDir) {
+ return new CrashFileManager(crashParentDir);
}
/**
@@ -88,11 +89,26 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
@Override
public void run() {
File[] minidumps = mFileManager.getAllMinidumpFiles(MAX_UPLOAD_TRIES_ALLOWED);
+ Log.i(TAG, "Attempting to upload %d minidumps.", minidumps.length);
for (File minidump : minidumps) {
+ Log.i(TAG, "Attempting to upload " + minidump.getName());
MinidumpUploadCallable uploadCallable = createMinidumpUploadCallable(
minidump, mFileManager.getCrashUploadLogFile());
int uploadResult = uploadCallable.call();
+ // Record metrics about the upload.
+ if (uploadResult == MinidumpUploadCallable.UPLOAD_SUCCESS) {
+ mDelegate.recordUploadSuccess(minidump);
+ } else if (uploadResult == MinidumpUploadCallable.UPLOAD_FAILURE) {
+ // Only record a failure after we have maxed out the allotted tries.
+ // Note: Add 1 to include the most recent failure, since the minidump's filename
+ // is from before the failure.
+ int numFailures = CrashFileManager.readAttemptNumber(minidump.getName()) + 1;
+ if (numFailures == MAX_UPLOAD_TRIES_ALLOWED) {
+ mDelegate.recordUploadFailure(minidump);
+ }
+ }
+
// Bail if the job was canceled. Note that the cancelation status is checked AFTER
// trying to upload a minidump. This is to ensure that the scheduler attempts to
// upload at least one minidump per job. Otherwise, it's possible for a crash loop

Powered by Google App Engine
This is Rietveld 408576698