diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncManager.java b/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncManager.java index 441730f5..01a57b0f 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncManager.java +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncManager.java @@ -140,51 +140,51 @@ abstract public class SyncManager { } if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_query_capabilities; App.log.info("Sync phase: " + context.getString(syncPhase)); queryCapabilities(); if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_prepare_local; App.log.info("Sync phase: " + context.getString(syncPhase)); prepareLocal(); if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_fetch_entries; App.log.info("Sync phase: " + context.getString(syncPhase)); fetchEntries(); if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_apply_remote_entries; App.log.info("Sync phase: " + context.getString(syncPhase)); applyRemoteEntries(); /* Create journal entries out of local changes. */ if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_create_local_entries; App.log.info("Sync phase: " + context.getString(syncPhase)); createLocalEntries(); if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_apply_local_entries; App.log.info("Sync phase: " + context.getString(syncPhase)); applyLocalEntries(); if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_push_entries; App.log.info("Sync phase: " + context.getString(syncPhase)); pushEntries(); /* Cleanup and finalize changes */ if (Thread.interrupted()) - return; + throw new InterruptedException(); syncPhase = R.string.sync_phase_post_processing; App.log.info("Sync phase: " + context.getString(syncPhase)); postProcess(); @@ -197,7 +197,8 @@ abstract public class SyncManager { syncResult.stats.numIoExceptions++; syncResult.delayUntil = (e.retryAfter > 0) ? e.retryAfter : Constants.DEFAULT_RETRY_DELAY; } catch (InterruptedException e) { - + // Restart sync if interrupted + syncResult.fullSyncRequested = true; } catch (Exception | OutOfMemoryError e) { if (e instanceof Exceptions.UnauthorizedException) { syncResult.stats.numAuthExceptions++;