diff --git a/app/src/main/java/com/futo/polycentric/core/AggregateException.kt b/app/src/main/java/com/futo/polycentric/core/AggregateException.kt
new file mode 100644
index 0000000000000000000000000000000000000000..06cebb08e416ecae634842511389bec8d04f861b
--- /dev/null
+++ b/app/src/main/java/com/futo/polycentric/core/AggregateException.kt
@@ -0,0 +1,6 @@
+package com.futo.polycentric.core
+
+class AggregateException(
+    val childExceptions: List<Throwable>,
+    message: String = "Multiple exceptions occurred.",
+) : Throwable(message, childExceptions.firstOrNull())
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/polycentric/core/Synchronization.kt b/app/src/main/java/com/futo/polycentric/core/Synchronization.kt
index 6d06862c747024ccd5ef7b24c0f1d70eb92d19cc..7a9b30ca9d83fe0de194e0b1e3f4d0c707f81bfc 100644
--- a/app/src/main/java/com/futo/polycentric/core/Synchronization.kt
+++ b/app/src/main/java/com/futo/polycentric/core/Synchronization.kt
@@ -92,6 +92,7 @@ class Synchronization {
             val systemProto = system.toProto()
             var progress = false
 
+            val exceptions = arrayListOf<Throwable>()
             for (server in systemState.servers) {
                 try {
                     val rangesForSystem = RangesForSystem.fromProto(ApiMethods.getRanges(server, systemProto))
@@ -108,11 +109,15 @@ class Synchronization {
 
                         val processState = Store.instance.getProcessState(system, process)
                         val serverNeeds = Ranges.subtract(processState.ranges, rangesForProcess)
-
                         if (serverNeeds.isEmpty()) {
+                            Log.i(TAG, "There is nothing to backfill")
                             break
                         }
 
+                        for (range in serverNeeds) {
+                            Log.i(TAG, "Backfilling range ${range.low}-${range.high}")
+                        }
+
                         val batch = Ranges.takeRangesMaxItems(serverNeeds, 10L)
                         val events = loadRanges(system, process, batch)
 
@@ -124,9 +129,17 @@ class Synchronization {
                     }
                 } catch (err: Throwable) {
                     Log.e(TAG, "An error occurred while backfilling server", err)
+                    exceptions.add(err)
                 }
             }
 
+            if (exceptions.isNotEmpty()) {
+                if (exceptions.size == 1)
+                    throw exceptions.first()
+
+                throw AggregateException(exceptions)
+            }
+
             return@withContext progress
         }
     }