diff --git a/app/src/main/java/androidx/lifecycle/ComputableLiveData.kt b/app/src/main/java/androidx/lifecycle/ComputableLiveData.kt
index 94aa8d7f72..ebdb5de278 100644
--- a/app/src/main/java/androidx/lifecycle/ComputableLiveData.kt
+++ b/app/src/main/java/androidx/lifecycle/ComputableLiveData.kt
@@ -69,13 +69,26 @@ constructor(
                 // as long as it is invalid, keep computing.
                 try {
                     var value: T? = null
+                    var once = true;
+                    var last = android.os.SystemClock.elapsedRealtime()
                     while (invalid.compareAndSet(true, false)) {
+                        var now = android.os.SystemClock.elapsedRealtime()
+                        if (value != null && (once || last + 2500 < now)) {
+                            eu.faircode.email.Log.i(liveData.toString() + " post once=" + once + " age=" + (now - last) + " ms")
+                            once = false;
+                            last = now;
+                            liveData.postValue(value);
+                        }
                         computed = true
                         value = compute()
                     }
                     if (computed) {
                         liveData.postValue(value)
                     }
+                } catch (ex: Throwable) {
+                    // java.lang.IllegalStateException: Couldn't read row xxx column yyy
+                    eu.faircode.email.Log.e(ex);
+                    invalid.set(true);
                 } finally {
                     // release compute lock
                     computing.set(false)