From cf82fa02d59344a39043b1559ab338ee8570a0f0 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 15 Sep 2020 09:14:34 +0200 Subject: [PATCH] Incremental fast error backoff --- app/src/main/java/eu/faircode/email/Core.java | 4 ++-- .../main/java/eu/faircode/email/ServiceSynchronize.java | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 7d2578ba21..ee601dd16c 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -4076,8 +4076,8 @@ class Core { return networkState; } - void setBackoff(int value) { - this.backoff = value; + void setBackoff(int seconds) { + this.backoff = seconds; } int getBackoff() { diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 73690d3eaf..a3b3345e5e 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1555,8 +1555,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences EntityLog.log(ServiceSynchronize.this, account.name + " fast errors=" + errors + " last connected: " + new Date(account.last_connected)); - if (errors >= FAST_ERROR_COUNT) - state.setBackoff(CONNECT_BACKOFF_AlARM_START * 60); + if (errors >= FAST_ERROR_COUNT) { + int scale = errors - FAST_ERROR_COUNT + 1; + int backoff = Math.max(CONNECT_BACKOFF_AlARM_START * scale, CONNECT_BACKOFF_AlARM_MAX); + EntityLog.log(ServiceSynchronize.this, + account.name + " fast error backoff=" + backoff); + state.setBackoff(backoff * 60); + } } // Report account connection error