[client-app] Prevent database malformed error restart loop

Summary:
This error is can flood Sentry pretty badly: https://sentry.io/nylas/nylas-mail/issues/230629801/

My initial thought was to rate limit it, but rate limiting wouldn't
do any good because when we get that error we destroy the databases and
restart the app, and we will loose the in-memory rate limiting data.

The real fix, and reason why Sentry is being flooded with this error by
a single user, is that once you encounter this error the app will enter
a restart loop that constantly throws this error. The reason being that
we weren't properly awaiting for the K2 account databases to be dropped
before closing the app, so on restart, the database would still be
malformed.

The fix is to properly `await` for the database drops

Test Plan: manual

Reviewers: spang, mark, halla, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D4127
This commit is contained in:
Juan Tejada 2017-03-07 17:02:52 -08:00
parent 6a17073fe5
commit 521ca86efc
2 changed files with 2 additions and 2 deletions

View file

@ -49,7 +49,7 @@ class SyncProcessManager {
// DB
fs.unlinkSync(`${NylasEnv.getConfigDirPath()}/edgehill.db`)
for (const account of this.accounts()) {
LocalDatabaseConnector.destroyAccountDatabase(account.id)
await LocalDatabaseConnector.destroyAccountDatabase(account.id)
}
remote.app.relaunch()
remote.app.quit()

View file

@ -64,7 +64,7 @@ class LocalDatabaseConnector {
});
}
destroyAccountDatabase(accountId) {
async destroyAccountDatabase(accountId) {
if (NylasEnv.inSpecMode()) {
// The db is in memory, so we don't have to unlink it. Just drop the data.
return this.forAccount(accountId).then(db => {