Verified
Status Update
Comments
ad...@google.com <ad...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 81120ca77c09c437775232585652b293ed572d45
Author: Clara Fok <clarafok@google.com>
Date: Thu Feb 29 17:29:44 2024
Paging to use common MainThread annotation
Test: ANDROIDX_PROJECTS=INFRAROGUE ./gradlew paging:paging-common:allTest
Bug: 327682438
Change-Id: I78f0d3cf36e3a3a9088e0698c351289cf2dbc1bf
M paging/paging-common/build.gradle
D paging/paging-common/src/commonJvmAndroidMain/kotlin/androidx/paging/MainThread.jvm.kt
D paging/paging-common/src/commonMain/kotlin/androidx/paging/MainThread.kt
M paging/paging-common/src/commonMain/kotlin/androidx/paging/PagingDataPresenter.kt
https://android-review.googlesource.com/2984997
Branch: androidx-main
commit 81120ca77c09c437775232585652b293ed572d45
Author: Clara Fok <clarafok@google.com>
Date: Thu Feb 29 17:29:44 2024
Paging to use common MainThread annotation
Test: ANDROIDX_PROJECTS=INFRAROGUE ./gradlew paging:paging-common:allTest
Bug: 327682438
Change-Id: I78f0d3cf36e3a3a9088e0698c351289cf2dbc1bf
M paging/paging-common/build.gradle
D paging/paging-common/src/commonJvmAndroidMain/kotlin/androidx/paging/MainThread.jvm.kt
D paging/paging-common/src/commonMain/kotlin/androidx/paging/MainThread.kt
M paging/paging-common/src/commonMain/kotlin/androidx/paging/PagingDataPresenter.kt
cc...@google.com <cc...@google.com> #3
Fixed internally and available in paging-3.3.0-alpha05
rh...@abc.net.au <rh...@abc.net.au> #4
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.paging:paging-common:3.3.0-alpha05
androidx.paging:paging-common-android:3.3.0-alpha05
androidx.paging:paging-common-iosarm64:3.3.0-alpha05
androidx.paging:paging-common-iossimulatorarm64:3.3.0-alpha05
androidx.paging:paging-common-iosx64:3.3.0-alpha05
androidx.paging:paging-common-jvm:3.3.0-alpha05
androidx.paging:paging-common-linuxx64:3.3.0-alpha05
androidx.paging:paging-common-macosarm64:3.3.0-alpha05
androidx.paging:paging-common-macosx64:3.3.0-alpha05
cc...@google.com <cc...@google.com> #5
Yes, this was included in RecyclerView 1.0.0 (and pre-androidx 28.0.0), confirmed by checking source jar.
Description
Version used: 27.1.1
Theme used: N/A
Devices/Android versions reproduced on: Any
Regarding the check at the top of `submitList` here:
```
if (newList == mList) {
// nothing to do
return;
}
```
There's a race condition -- suppose we have lists A and B, and the differ's `mList` before starting is list A.
1. Submit list B - async diff generation N kicks off
2. Submit list A - `newList` matches `mList` since diff gen N hasn't completed yet, but `mMaxScheduledGeneration` is not incremented and this returns early
3. Async diff gen N is accepted, despite list A being submitted after list B.
Seems this could be fixed by incrementing `mMaxScheduledGeneration`. As a workaround, I am wrapping my lists in a new identity before submitting them to the differ.