Report async folder errors

master
M66B 1 month ago
parent 5c80bbf25d
commit 621e28560a

@ -2034,17 +2034,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
long start = new Date().getTime();
try {
wlMessage.acquire(Helper.WAKELOCK_MAX);
fetch(folder, ifolder, e.getMessages(), false, false, "added");
fetch(state, folder, ifolder, e.getMessages(), false, false, "added");
Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) {
if (ex instanceof FolderClosedException)
state.error(ex);
else {
Log.e(folder.name, ex);
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " added " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
}
Log.e(folder.name, ex);
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " added " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
} finally {
if (wlMessage.isHeld())
wlMessage.release();
@ -2058,17 +2054,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
long start = new Date().getTime();
try {
wlMessage.acquire(Helper.WAKELOCK_MAX);
fetch(folder, ifolder, e.getMessages(), false, true, "removed");
fetch(state, folder, ifolder, e.getMessages(), false, true, "removed");
Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) {
Log.e(folder.name, ex);
if (ex instanceof FolderClosedException)
state.error(ex);
else {
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " removed " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
}
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " removed " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
} finally {
if (wlMessage.isHeld())
wlMessage.release();
@ -2088,17 +2080,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
try {
wlMessage.acquire(Helper.WAKELOCK_MAX);
Message imessage = e.getMessage();
fetch(folder, ifolder, new Message[]{imessage}, true, false, "changed");
fetch(state, folder, ifolder, new Message[]{imessage}, true, false, "changed");
Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) {
Log.e(folder.name, ex);
if (ex instanceof FolderClosedException)
state.error(ex);
else {
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " changed " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
}
EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
account.name + "/" + folder.name + " changed " + Log.formatThrowable(ex, false));
EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
} finally {
if (wlMessage.isHeld())
wlMessage.release();
@ -2951,7 +2939,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
}
}
private void fetch(EntityFolder folder, IMAPFolder ifolder, Message[] messages, boolean invalidate, boolean deleted, String reason) throws MessagingException {
private void fetch(Core.State state, EntityFolder folder, IMAPFolder ifolder, Message[] messages, boolean invalidate, boolean deleted, String reason) throws MessagingException {
Log.i(folder.name + " " + messages.length + " messages " + reason);
List<Long> uids = new ArrayList<>();
@ -2961,6 +2949,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
uids.add(uid);
} catch (MessageRemovedException ex) {
Log.w(ex);
} catch (Throwable ex) {
Log.w(ex);
if (ex instanceof FolderClosedException) {
state.error(ex);
return;
} else
throw ex;
}
Log.i(folder.name + " messages " + reason + " uids=" + TextUtils.join(",", uids));

Loading…
Cancel
Save