mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-18 08:56:41 +00:00
KeyValStore.get() read the value via cursor.getString(), which throws SQLiteBlobTooBigException once a row exceeds Android's ~2MB CursorWindow. The on-device backup blob crosses 2MB after roughly a year of normal use, so the backup was written but never readable — surfacing as "Error invoking loadFromDb: Java exception" and silently breaking the #7901 eviction-recovery path. Combined with the data store living in evictable WebView IndexedDB (#7892), this caused total data loss on Android. Electron/iOS use file-based backups and are unaffected. - KeyValStore.get(): read in 256K-char substr() chunks + try/catch->default; also recovers already-written oversized rows. - KeyValStoreInstrumentedTest: emulator regression (Robolectric can't reproduce the CursorWindow limit). - local-backup.service: _loadAndroidDbValueSafe() logs blob size (not content) to the exportable log and degrades a read failure to "no backup" instead of an opaque crash. Closes #8401 |
||
|---|---|---|
| .. | ||
| src | ||
| .gitignore | ||
| app_config.properties | ||
| build.gradle | ||
| capacitor.build.gradle | ||
| config.gradle | ||
| google.properties | ||
| proguard-rules.pro | ||