Bug 1394073 - Call onStoreFailed in case last payload fails in the uploader r=rnewman draft
authorGrigory Kruglov <gkruglov@mozilla.com>
Fri, 25 Aug 2017 21:41:35 -0400
changeset 653565 be0249ddf14ff40bf1f51fc99f4d01c8eb168be0
parent 652136 892c8916ba32b7733e06bfbfdd4083ffae3ca028
child 728356 eff82306d68dd006c06da688f3fb544759430c07
push id76345
push userbmo:gkruglov@mozilla.com
push dateSat, 26 Aug 2017 02:40:54 +0000
reviewersrnewman
bugs1394073
milestone57.0a1
Bug 1394073 - Call onStoreFailed in case last payload fails in the uploader r=rnewman MozReview-Commit-ID: 9cRuevmqbLD
mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadDispatcher.java
mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegate.java
mobile/android/tests/background/junit4/src/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegateTest.java
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadDispatcher.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadDispatcher.java
@@ -92,18 +92,18 @@ class PayloadDispatcher {
 
         // If this was our very last commit, we're done storing records.
         // Get Last-Modified timestamp from the response, and pass it upstream.
         if (isLastPayload) {
             finished(response.normalizedTimestampForHeader(SyncResponse.X_LAST_MODIFIED));
         }
     }
 
-    void lastPayloadFailed() {
-        uploader.finished(uploadTimestamp);
+    void lastPayloadFailed(Exception e) {
+        uploader.sessionStoreDelegate.onStoreFailed(e);
     }
 
     private void finished(long lastModifiedTimestamp) {
         bumpTimestampTo(uploadTimestamp, lastModifiedTimestamp);
         uploader.finished(uploadTimestamp);
     }
 
     void finalizeQueue(final boolean needToCommit, final Runnable finalRunnable) {
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegate.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegate.java
@@ -195,12 +195,12 @@ class PayloadUploadDelegate implements S
     public void handleRequestError(Exception e) {
         for (String guid : postedRecordGuids) {
             dispatcher.recordFailed(e, guid);
         }
         // GC
         postedRecordGuids = null;
 
         if (isLastPayload) {
-            dispatcher.lastPayloadFailed();
+            dispatcher.lastPayloadFailed(e);
         }
     }
 }
\ No newline at end of file
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegateTest.java
+++ b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/sync/repositories/uploaders/PayloadUploadDelegateTest.java
@@ -75,17 +75,17 @@ public class PayloadUploadDelegateTest {
 
         @Override
         public void recordFailed(final Exception e, final String recordGuid) {
             recordUploadFailed = true;
             failedRecords.put(recordGuid, e);
         }
 
         @Override
-        public void lastPayloadFailed() {
+        public void lastPayloadFailed(Exception e) {
             didLastPayloadFail = true;
         }
     }
 
     class MockRepositorySessionStoreDelegate implements RepositorySessionStoreDelegate {
         Exception storeFailedException;
         ArrayList<String> succeededGuids = new ArrayList<>();
         HashMap<String, Exception> failedGuids = new HashMap<>();