diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 41fd5a257e..ec08708ba7 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -149,8 +149,8 @@ class Core { boolean group = true; Log.i(folder.name + " executing operations=" + ops.size()); while (retry < LOCAL_RETRY_MAX && ops.size() > 0 && - state.batchCanRun(folder.id, priority, sequence) && - state.isRunning() && ifolder.isOpen()) { + state.isRunning() && + state.batchCanRun(folder.id, priority, sequence)) { TupleOperationEx op = ops.get(0); try { @@ -3471,6 +3471,10 @@ class Core { void reset() { recoverable = true; lastActivity = null; + resetBatches(); + } + + void resetBatches() { synchronized (this) { for (FolderPriority key : sequence.keySet()) { batch.put(key, sequence.get(key)); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 2c4b6195b4..155e637023 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1486,6 +1486,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } }); + // Cancel running operations + state.resetBatches(); + // Close folders for (EntityFolder folder : mapFolders.keySet()) if (folder.synchronize && !folder.poll && mapFolders.get(folder) != null) {