Synchronization Fail with SQLiteBlobTooBigException
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Bắt đầu với NotesServerSyncTask.pullRemoteChanges và NotesRepository.addNote, lần theo lệnh gọi NoteDao.getNoteById bị lỗi được hiển thị trong stack trace. Tái hiện quá trình đồng bộ hóa với một tập hợp ghi chú lớn và điều tra SQLiteBlobTooBigException tại lần tra cứu đó. Công việc được xem là hoàn tất khi quá trình đồng bộ hóa hoàn thành mà ứng dụng không bị crash trong khi xử lý các ghi chú.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
This issue respects the following points:
- I have read the FAQ
- I have searched for existing issues
- The issue affects the Notes Android app, neither the Notes server app nor the Nextcloud Android app.
Describe the bug
Synchronisation fail on the Notes app. There are around 4.5K notes. The web app works fine. The mobile app is synchronising slowly and then crash. (Crashed at 30 notes)
Expected behavior
Ideally I would expect to synch with all the notes...
Notes Android version
33.0.0
Notes server version
4.13.1
Nextcloud Android version
33.0.1
Nextcloud version
32.0.6
Device
Realme RMX3943
Android Version
13
App Store
- Google Play Store
- F-Droid
- Huawei App Gallery
Stacktrace
App Version: 33.0.0
App Version Code: 330000090
App Flavor: play
Files App Version Code: 330000190 (PROD)
---
OS Version: 5.15.167-android13-8-o-gfc2b713b973e(V.R4T2.20581b5_4ea-14426c)
OS API Level: 35
Device: RE6092
Manufacturer: realme
Model (and Product): RMX3943 (RMX3943EEA)
---
android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1051)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:862)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:145)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:252)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:301)
at androidx.sqlite.driver.SupportSQLiteStatement$RowSQLiteStatement.step(SupportSQLiteStatement.android.kt:405)
at it.niedermann.owncloud.notes.persistence.dao.NoteDao_Impl.lambda$getNoteById$3(NoteDao_Impl.java:324)
at it.niedermann.owncloud.notes.persistence.dao.NoteDao_Impl$$ExternalSyntheticLambda37.invoke(D8$$SyntheticClass:0)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1$invokeSuspend$$inlined$internalPerform$1.invokeSuspend(DBUtil.kt:173)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1$invokeSuspend$$inlined$internalPerform$1.invoke(Unknown Source:8)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1$invokeSuspend$$inlined$internalPerform$1.invoke(Unknown Source:4)
at androidx.room.coroutines.PassthroughConnectionPool$useConnection$2.invokeSuspend(PassthroughConnectionPool.kt:59)
at androidx.room.coroutines.PassthroughConnectionPool$useConnection$2.invoke(Unknown Source:8)
at androidx.room.coroutines.PassthroughConnectionPool$useConnection$2.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:42)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:164)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1)
at androidx.room.coroutines.PassthroughConnectionPool.useConnection(PassthroughConnectionPool.kt:59)
at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.android.kt:138)
at androidx.room.RoomDatabase.useConnection(RoomDatabase.android.kt:619)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1.invokeSuspend(DBUtil.android.kt:260)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1.invoke(Unknown Source:8)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1$1.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:42)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:156)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1.invokeSuspend(DBUtil.android.kt:72)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1.invoke(Unknown Source:8)
at androidx.room.util.DBUtil__DBUtil_androidKt$performBlocking$1.invoke(Unknown Source:4)
at androidx.room.coroutines.RunBlockingUninterruptible_androidKt$runBlockingUninterruptible$1$1.invokeSuspend(RunBlockingUninterruptible.android.kt:52)
at androidx.room.coroutines.RunBlockingUninterruptible_androidKt$runBlockingUninterruptible$1$1.invoke(Unknown Source:8)
at androidx.room.coroutines.RunBlockingUninterruptible_androidKt$runBlockingUninterruptible$1$1.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:20)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:360)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:124)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:52)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at androidx.room.coroutines.RunBlockingUninterruptible_androidKt$runBlockingUninterruptible$1.invokeSuspend(RunBlockingUninterruptible.android.kt:51)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:47)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
at androidx.room.coroutines.RunBlockingUninterruptible_androidKt.runBlockingUninterruptible(RunBlockingUninterruptible.android.kt:45)
at androidx.room.util.DBUtil__DBUtil_androidKt.performBlocking(DBUtil.android.kt:71)
at androidx.room.util.DBUtil.performBlocking(Unknown Source:1)
at it.niedermann.owncloud.notes.persistence.dao.NoteDao_Impl.getNoteById(NoteDao_Impl.java:304)
at it.niedermann.owncloud.notes.persistence.NotesRepository.addNote(NotesRepository.java:524)
at it.niedermann.owncloud.notes.persistence.NotesServerSyncTask.pullRemoteChanges(NotesServerSyncTask.java:249)
at it.niedermann.owncloud.notes.persistence.NotesServerSyncTask.run(NotesServerSyncTask.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:520)
at java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652)
at java.lang.Thread.run(Thread.java:1564)
- Ngôn ngữ chính
- Java
- Star
- 1.1k
- Fork
- 170
- Merge trung bình
- 2 giờ 33 phút
- Pull request đã merge (30 ngày)
- 24
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của nextcloud/notes-android
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
nextcloud/notes-android#3367 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
0. Needs triage bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
nextcloud/notes-android#3353 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
0. Needs triage bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
nextcloud/notes-android#3391 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
App not syncingĐang mở0. Needs triage bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 15/100
nextcloud/notes-android#3388 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Notify the user that a file is locked (and sync does fail because of that) and remove the lockĐang mởenhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
nextcloud/notes-android#3387 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của nextcloud/notes-android
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
devops-thiago/ThrillhouseBot#1093 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Missing htmx attribute processorĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
wimdeblauwe/htmx-spring-boot#205 ·
-
[BUG] 增量 SSE 解析器未识别单独 CR 换行,导致事件无法及时交付Có thể đã có người làm @king-wwwhhh đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
langchain4j/langchain4j#6669 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
OpenAPITools/openapi-generator#25237 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-area-label
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày