Fixed
Status Update
Comments
yb...@google.com <yb...@google.com>
ap...@google.com <ap...@google.com> #2
For a reproduction case:
1. Downloadhttps://github.com/romannurik/muzei
2. Checkout to room-issue-2.1.0-alpha03 tag
3. Change the ProviderDao to abstract suspend fun insert(provider: Provider)
4. Run the app, hit the Activate button
Expected Result: the image is loaded
Actual Result: the insert never returns (you only see a black screen), blocking the arch thread forever
1. Download
2. Checkout to room-issue-2.1.0-alpha03 tag
3. Change the ProviderDao to abstract suspend fun insert(provider: Provider)
4. Run the app, hit the Activate button
Expected Result: the image is loaded
Actual Result: the insert never returns (you only see a black screen), blocking the arch thread forever
da...@google.com <da...@google.com>
[Deleted User] <[Deleted User]> #3
this is partially fixed in
https://android-review.googlesource.com/c/platform/frameworks/support/+/850190
though with usages of begin / end; worse situations can happen that we cannot recover.
A full fledged fix requires a new transaction API.
That being said, if app uses db.runInTrasaction; this bug would not happen (because you cannot launch inside it).
maybe we should deprecate begin/end ?
though with usages of begin / end; worse situations can happen that we cannot recover.
A full fledged fix requires a new transaction API.
That being said, if app uses db.runInTrasaction; this bug would not happen (because you cannot launch inside it).
maybe we should deprecate begin/end ?
da...@gmail.com <da...@gmail.com> #4
back to p2 since the most pressing part is fixed.
da...@gmail.com <da...@gmail.com> #5
As I understand it, any non-Room suspending method in the middle of a transaction will still break since you might resume the coroutine on a different thread?
I think I'd personally really like an extension method of:
fun RoomDatabase.transaction(body: suspend () -> Unit)
that replaces / obsoletes runInTransaction and would be safe to do both Room suspend methods and other, non-Room suspend methods, always returning to the correct thread for the transaction.
I think I'd personally really like an extension method of:
fun RoomDatabase.transaction(body: suspend () -> Unit)
that replaces / obsoletes runInTransaction and would be safe to do both Room suspend methods and other, non-Room suspend methods, always returning to the correct thread for the transaction.
Description
Version used: 1.1.1
Kotlin version: 1.2.51
Room can't detect the TypeConverter of a List<Model> if that Model itself is written in Java and if I convert this class to Kotlin, it works as expected!
I got this error no matter where I put the TypeConverters annotation!
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
A project where this can be reproduced is attached!