Fixed
Status Update
Comments
ra...@google.com <ra...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
https://android-review.googlesource.com/1123258
https://goto.google.com/android-sha1/b90079595f33f58fece04026a97faa0d243acdb1
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
da...@gmail.com <da...@gmail.com> #3
da...@gmail.com <da...@gmail.com> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically ( b/140759491 ).
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
https://android-review.googlesource.com/1288456
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically (
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
da...@gmail.com <da...@gmail.com> #5
103 crashes reported by 49 users.
Occurring on:
Android 10 (SDK 29)
Android 9 (SDK 28)
Android 11 (SDK 30)
Android 8.0 (SDK 26)
Device distribution:
Samsung Galaxy S20+ - 30.1%
Samsung Galaxy S10+ - 7.8%
Samsung Galaxy S10 - 5.8%
Samsung Galaxy Note10+ - 4.9%
Xiaomi Mi A1 - 3.9%
OnePlus OnePlus6T - 3.9%
OnePlus 7T - 3.9%
crownqltesq - 2.9%
Samsung Galaxy S20 Ultra 5G - 2.9%
crownqlteue - 2.9%
Samsung Galaxy Note9 - 2.9%
OnePlus OnePlus5T - 1.9%
Google Pixel 3 XL - 1.9%
Xiaomi MI 9 - 1.9%
OnePlus OnePlus5 - 1.9%
POCO X3 NFC - 1.0%
Huawei P10 - 1.0%
Samsung Galaxy A70 - 1.0%
OnePlus One - 1.0%
OnePlus 6 - 1.0%
Others - 15.5%
Occurring on:
Android 10 (SDK 29)
Android 9 (SDK 28)
Android 11 (SDK 30)
Android 8.0 (SDK 26)
Device distribution:
Samsung Galaxy S20+ - 30.1%
Samsung Galaxy S10+ - 7.8%
Samsung Galaxy S10 - 5.8%
Samsung Galaxy Note10+ - 4.9%
Xiaomi Mi A1 - 3.9%
OnePlus OnePlus6T - 3.9%
OnePlus 7T - 3.9%
crownqltesq - 2.9%
Samsung Galaxy S20 Ultra 5G - 2.9%
crownqlteue - 2.9%
Samsung Galaxy Note9 - 2.9%
OnePlus OnePlus5T - 1.9%
Google Pixel 3 XL - 1.9%
Xiaomi MI 9 - 1.9%
OnePlus OnePlus5 - 1.9%
POCO X3 NFC - 1.0%
Huawei P10 - 1.0%
Samsung Galaxy A70 - 1.0%
OnePlus One - 1.0%
OnePlus 6 - 1.0%
Others - 15.5%
da...@gmail.com <da...@gmail.com> #6
Crash report on Android 11:
java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1715)
at android.app.ContextImpl.startService (ContextImpl.java:1670)
at android.content.ContextWrapper.startService (ContextWrapper.java:720)
at androidx.work.impl.Processor.stopForegroundService (Processor.java:312)
at androidx.work.impl.Processor.stopForeground (Processor.java:222)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:446)
at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndResolve (WorkerWrapper.java:419)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:329)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:318)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:923)
java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1715)
at android.app.ContextImpl.startService (ContextImpl.java:1670)
at android.content.ContextWrapper.startService (ContextWrapper.java:720)
at androidx.work.impl.Processor.stopForegroundService (Processor.java:312)
at androidx.work.impl.Processor.stopForeground (Processor.java:222)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:446)
at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndResolve (WorkerWrapper.java:419)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:329)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:318)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:923)
da...@gmail.com <da...@gmail.com> #7
1,751 crashes from 383 users in my beta channel.
I have reverted back to the 2.4.0 version of the library and the crashes have stopped.
I have reverted back to the 2.4.0 version of the library and the crashes have stopped.
ra...@google.com <ra...@google.com> #8
Is there an error message with the exception ?
da...@gmail.com <da...@gmail.com> #9
No, the Play console only contains the following crash information:
This is from a Samsung S20 running Android 10
java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1688)
at android.app.ContextImpl.startService (ContextImpl.java:1633)
at android.content.ContextWrapper.startService (ContextWrapper.java:683)
at androidx.work.impl.Processor.stopForegroundService (Processor.java:312)
at androidx.work.impl.Processor.stopForeground (Processor.java:222)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:446)
at androidx.work.impl.WorkerWrapper.resetPeriodicAndResolve (WorkerWrapper.java:556)
at androidx.work.impl.WorkerWrapper.handleResult (WorkerWrapper.java:461)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:341)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:318)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)
This is from a Samsung S20 running Android 10
java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1688)
at android.app.ContextImpl.startService (ContextImpl.java:1633)
at android.content.ContextWrapper.startService (ContextWrapper.java:683)
at androidx.work.impl.Processor.stopForegroundService (Processor.java:312)
at androidx.work.impl.Processor.stopForeground (Processor.java:222)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:446)
at androidx.work.impl.WorkerWrapper.resetPeriodicAndResolve (WorkerWrapper.java:556)
at androidx.work.impl.WorkerWrapper.handleResult (WorkerWrapper.java:461)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:341)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:318)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)
da...@gmail.com <da...@gmail.com> #10
Actually, I just found it in the local log on my test device:
10-27 05:17:18.804 E/AndroidRuntime(12498): java.lang.IllegalStateException: Not allowed to start service Intent { act=ACTION_STOP_FOREGROUND cmp=com.dvtonder.chronus/androidx.work.impl.foreground.SystemForegroundService }: app is in background uid UidRecord{507c6a5 u0a291 CRE bg:+6h3m58s342ms idle change:cached procs:1 seq(0,0,0)}
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1715)
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.app.ContextImpl.startService(ContextImpl.java:1670)
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.content.ContextWrapper.startService(ContextWrapper.java:720)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopForegroundService(SourceFile:312)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopForeground(SourceFile:222)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.resolve(SourceFile:446)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndResolve(SourceFile:419)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.interrupt(SourceFile:375)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.interrupt(SourceFile:331)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopWork(SourceFile:188)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.utils.StopWorkRunnable.run(SourceFile:73)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.utils.SerialExecutor$Task.run(SourceFile:91)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.lang.Thread.run(Thread.java:923)
--------- beginning of main
10-27 05:17:18.804 E/AndroidRuntime(12498): java.lang.IllegalStateException: Not allowed to start service Intent { act=ACTION_STOP_FOREGROUND cmp=com.dvtonder.chronus/androidx.work.impl.foreground.SystemForegroundService }: app is in background uid UidRecord{507c6a5 u0a291 CRE bg:+6h3m58s342ms idle change:cached procs:1 seq(0,0,0)}
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1715)
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.app.ContextImpl.startService(ContextImpl.java:1670)
10-27 05:17:18.804 E/AndroidRuntime(12498): at android.content.ContextWrapper.startService(ContextWrapper.java:720)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopForegroundService(SourceFile:312)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopForeground(SourceFile:222)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.resolve(SourceFile:446)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndResolve(SourceFile:419)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.WorkerWrapper.interrupt(SourceFile:375)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.interrupt(SourceFile:331)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.Processor.stopWork(SourceFile:188)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.utils.StopWorkRunnable.run(SourceFile:73)
10-27 05:17:18.804 E/AndroidRuntime(12498): at androidx.work.impl.utils.SerialExecutor$Task.run(SourceFile:91)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
10-27 05:17:18.804 E/AndroidRuntime(12498): at java.lang.Thread.run(Thread.java:923)
--------- beginning of main
ra...@google.com <ra...@google.com> #11
Thanks. That helps !
ap...@google.com <ap...@google.com> #12
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 2f84e04876c0454432cb5595c73b1b1c02156331
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Thu Nov 05 15:18:22 2020
Stop foreground service and ignore exceptions.
- There are bugs in the platform that causes an intent dispatch to fail.
This happens because the service and the `uid` is still in the background even
though this intent could have only been delivered _after_ startForeground(...).
Fixes: b/170924044
Test: Ran integration tests to make sure existing functionality is not broken.
Change-Id: I99dc8e3e334ccbf3a53aa475ae445560278c004a
M work/workmanager/src/main/java/androidx/work/impl/Processor.java
https://android-review.googlesource.com/1489901
Branch: androidx-master-dev
commit 2f84e04876c0454432cb5595c73b1b1c02156331
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Thu Nov 05 15:18:22 2020
Stop foreground service and ignore exceptions.
- There are bugs in the platform that causes an intent dispatch to fail.
This happens because the service and the `uid` is still in the background even
though this intent could have only been delivered _after_ startForeground(...).
Fixes:
Test: Ran integration tests to make sure existing functionality is not broken.
Change-Id: I99dc8e3e334ccbf3a53aa475ae445560278c004a
M work/workmanager/src/main/java/androidx/work/impl/Processor.java
da...@gmail.com <da...@gmail.com> #13
Silly question but when can one expect the next alpha or beta of Work to be released? I would like to get the fix for this issue deployed to my users.
ra...@google.com <ra...@google.com> #14
The next beta
should have this change. We have a release planned in the first week of December.
ra...@google.com <ra...@google.com> #15
If you won't want to wait, you can always use the SNAPSHOT
version from
Description
Version used: Work Version 2.5.0-alpha03
Devices/Android versions reproduced on: Android 10 and 11
Am getting the following crash report on the Play console since updating to the alpha version yesterday.
java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1688)
at android.app.ContextImpl.startService (ContextImpl.java:1633)
at android.content.ContextWrapper.startService (ContextWrapper.java:683)
at androidx.work.impl.Processor.stopForegroundService (Processor.java:312)
at androidx.work.impl.Processor.stopForeground (Processor.java:222)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:446)
at androidx.work.impl.WorkerWrapper.resetPeriodicAndResolve (WorkerWrapper.java:556)
at androidx.work.impl.WorkerWrapper.handleResult (WorkerWrapper.java:461)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:341)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:318)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)