ankidroid/Anki-Android
View on GitHubVery long 'Processing' dialog if AutoSync is enabled and AnkiWeb is down. ANR if no notification permissions
Open
#17,551 opened on Dec 5, 2024
2.19Help WantedKeep OpenPriority-HighSync
Description
- Enable autosync
- Open AnkiDroid when AnkiWeb is down
- "Processing" dialog can't be cancelled and took ~15 second to close
- Maybe longer, AnkiWeb was back up by the time it completed
A user reported that the app was hung, this may be related
- Related: #17493
Reproduction patch:
Index: AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt b/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt
--- a/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt (revision 951615f7753ca8b5710f15cce2bba2a9a114f91c)
+++ b/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt (date 1733378352598)
@@ -23,6 +23,7 @@
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.core.content.edit
+import anki.backend.backendError
import anki.sync.SyncAuth
import anki.sync.SyncCollectionResponse
import anki.sync.syncAuth
@@ -50,6 +51,7 @@
import kotlinx.coroutines.withContext
import net.ankiweb.rsdroid.Backend
import net.ankiweb.rsdroid.exceptions.BackendInterruptedException
+import net.ankiweb.rsdroid.exceptions.BackendNetworkException
import net.ankiweb.rsdroid.exceptions.BackendSyncException
import timber.log.Timber
@@ -223,6 +225,12 @@
manualCancelButton = R.string.dialog_cancel
) {
withCol {
+ Timber.d("Simulating AnkiWeb wait")
+ Thread.sleep(10_000)
+ Timber.d("Simulating AnkiWeb timeout error")
+ throw BackendNetworkException(backendError {
+ message = "testing timeout"
+ })
syncCollection(auth2, media = false) // media is synced by SyncMediaWorker
}
}