mirror of
https://github.com/M66B/FairEmail.git
synced 2024-12-24 16:53:37 +00:00
Workaround for hanging JavaMail close
This commit is contained in:
parent
2980a46b5c
commit
025e9c48ed
1 changed files with 20 additions and 4 deletions
|
@ -126,6 +126,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
private static final int CONNECT_BACKOFF_START = 8; // seconds
|
||||
private static final int CONNECT_BACKOFF_MAX = 1024; // seconds (1024 sec ~ 17 min)
|
||||
private static final long STORE_NOOP_INTERVAL = 9 * 60 * 1000L; // ms
|
||||
private static final long STORE_CLOSE_TIMEOUT = 20 * 1000L; // ms
|
||||
private static final int ATTACHMENT_AUTO_DOWNLOAD_SIZE = 32 * 1024; // bytes
|
||||
|
||||
static final String ACTION_SYNCHRONIZE_FOLDER = BuildConfig.APPLICATION_ID + ".SYNCHRONIZE_FOLDER";
|
||||
|
@ -792,10 +793,25 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
for (EntityFolder folder : folders.keySet())
|
||||
db.folder().setFolderState(folder.id, "closing");
|
||||
try {
|
||||
// This can take some time
|
||||
istore.close();
|
||||
} catch (MessagingException ex) {
|
||||
Log.w(Helper.TAG, account.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
EntityLog.log(ServiceSynchronize.this, account.name + " store closing");
|
||||
istore.close();
|
||||
EntityLog.log(ServiceSynchronize.this, account.name + " store closed");
|
||||
} catch (Throwable ex) {
|
||||
Log.w(Helper.TAG, account.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
try {
|
||||
t.join(STORE_CLOSE_TIMEOUT);
|
||||
} catch (InterruptedException ex) {
|
||||
Log.w(Helper.TAG, account.name + " Close timeout");
|
||||
t.interrupt();
|
||||
}
|
||||
} finally {
|
||||
EntityLog.log(this, account.name + " closed");
|
||||
db.account().setAccountState(account.id, null);
|
||||
|
|
Loading…
Reference in a new issue