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(); long start = new Date().getTime();
try { try {
wlMessage.acquire(Helper.WAKELOCK_MAX); 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); Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) { } catch (Throwable ex) {
if (ex instanceof FolderClosedException) Log.e(folder.name, ex);
state.error(ex); EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
else { account.name + "/" + folder.name + " added " + Log.formatThrowable(ex, false));
Log.e(folder.name, ex); EntityOperation.sync(ServiceSynchronize.this, folder.id, false);
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 { } finally {
if (wlMessage.isHeld()) if (wlMessage.isHeld())
wlMessage.release(); wlMessage.release();
@ -2058,17 +2054,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
long start = new Date().getTime(); long start = new Date().getTime();
try { try {
wlMessage.acquire(Helper.WAKELOCK_MAX); 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); Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(folder.name, ex); Log.e(folder.name, ex);
if (ex instanceof FolderClosedException) EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
state.error(ex); account.name + "/" + folder.name + " removed " + Log.formatThrowable(ex, false));
else { 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 { } finally {
if (wlMessage.isHeld()) if (wlMessage.isHeld())
wlMessage.release(); wlMessage.release();
@ -2088,17 +2080,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
try { try {
wlMessage.acquire(Helper.WAKELOCK_MAX); wlMessage.acquire(Helper.WAKELOCK_MAX);
Message imessage = e.getMessage(); 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); Thread.sleep(FETCH_YIELD_DURATION);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(folder.name, ex); Log.e(folder.name, ex);
if (ex instanceof FolderClosedException) EntityLog.log(ServiceSynchronize.this, EntityLog.Type.Account, folder,
state.error(ex); account.name + "/" + folder.name + " changed " + Log.formatThrowable(ex, false));
else { 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 { } finally {
if (wlMessage.isHeld()) if (wlMessage.isHeld())
wlMessage.release(); 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); Log.i(folder.name + " " + messages.length + " messages " + reason);
List<Long> uids = new ArrayList<>(); List<Long> uids = new ArrayList<>();
@ -2961,6 +2949,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
uids.add(uid); uids.add(uid);
} catch (MessageRemovedException ex) { } catch (MessageRemovedException ex) {
Log.w(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)); Log.i(folder.name + " messages " + reason + " uids=" + TextUtils.join(",", uids));

Loading…
Cancel
Save