ankidroid / ankidroid/Anki-Android

Very long 'Processing' dialog if AutoSync is enabled and AnkiWeb is down. ANR if no notification permissions

未关闭
#17,551 12 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
2.19 Help Wanted Keep Open Priority-High Sync
主要语言
Kotlin
星标
11.8k
派生
2.9k
平均合并
2 天 3 小时
30 天内合并 PR
171

描述

* 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:

```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
}
}
```

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。