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
bo...@gmail.com <bo...@gmail.com> #3
bo...@gmail.com <bo...@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
ra...@google.com <ra...@google.com> #5
My apologies. Let me take another look at this.
ra...@google.com <ra...@google.com>
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 0b954339f3eae239bed8e17b39ec2dca1ed5fdb8
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Thu Nov 05 11:52:44 2020
Mark a transaction as successful when reconciling jobs.
Test: Ran integration tests.
```
2020-11-05 12:12:03.550 24368-24397/androidx.work.integration.testapp D/WM-ForceStopRunnable: Performing cleanup operations.
2020-11-05 12:12:03.561 24368-24397/androidx.work.integration.testapp D/WM-SystemJobScheduler: Reconciling jobs
2020-11-05 12:12:03.568 24368-24397/androidx.work.integration.testapp D/WM-ForceStopRunnable: Found unfinished work, scheduling it.
2020-11-05 12:12:03.571 24368-24397/androidx.work.integration.testapp D/WM-SystemJobScheduler: Scheduling work ID 1d4c072b-a706-4688-997c-926f49cdcd85 Job ID 0
2020-11-05 12:12:03.575 24368-24399/androidx.work.integration.testapp D/WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver enabled
```
```
JOB #u0a313/0: 78147d9 androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
u0a313 tag=*job*/androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
Source: uid=u0a313 user=0 pkg=androidx.work.integration.testapp
JobInfo:
Service: androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
Requires: charging=false batteryNotLow=false deviceIdle=false
Extras: mParcelledData.dataSize=180
Minimum latency: +4m23s532ms
Backoff: policy=1 initial=+30s0ms
Has early constraint
Required constraints: TIMING_DELAY [0x80000000]
Dynamic constraints:
Satisfied constraints: DEVICE_NOT_DOZING BACKGROUND_NOT_RESTRICTED WITHIN_QUOTA [0x3400000]
Unsatisfied constraints: TIMING_DELAY [0x80000000]
Uid: active
Tracking: TIME QUOTA
Implicit constraints:
readyNotDozing: true
readyNotRestrictedInBg: true
readyDynamicSatisfied: false
readyComponentEnabled: true
Standby bucket: ACTIVE
Enqueue time: -1m4s580ms
Run time: earliest=+3m18s952ms, latest=none, original latest=none
Restricted due to: none.
```
Fixes: b/172475041
Change-Id: I3aef31613cc9f85edcd92c2818aa957a4bfa10aa
M work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
https://android-review.googlesource.com/1489577
Branch: androidx-master-dev
commit 0b954339f3eae239bed8e17b39ec2dca1ed5fdb8
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Thu Nov 05 11:52:44 2020
Mark a transaction as successful when reconciling jobs.
Test: Ran integration tests.
```
2020-11-05 12:12:03.550 24368-24397/androidx.work.integration.testapp D/WM-ForceStopRunnable: Performing cleanup operations.
2020-11-05 12:12:03.561 24368-24397/androidx.work.integration.testapp D/WM-SystemJobScheduler: Reconciling jobs
2020-11-05 12:12:03.568 24368-24397/androidx.work.integration.testapp D/WM-ForceStopRunnable: Found unfinished work, scheduling it.
2020-11-05 12:12:03.571 24368-24397/androidx.work.integration.testapp D/WM-SystemJobScheduler: Scheduling work ID 1d4c072b-a706-4688-997c-926f49cdcd85 Job ID 0
2020-11-05 12:12:03.575 24368-24399/androidx.work.integration.testapp D/WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver enabled
```
```
JOB #u0a313/0: 78147d9 androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
u0a313 tag=*job*/androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
Source: uid=u0a313 user=0 pkg=androidx.work.integration.testapp
JobInfo:
Service: androidx.work.integration.testapp/androidx.work.impl.background.systemjob.SystemJobService
Requires: charging=false batteryNotLow=false deviceIdle=false
Extras: mParcelledData.dataSize=180
Minimum latency: +4m23s532ms
Backoff: policy=1 initial=+30s0ms
Has early constraint
Required constraints: TIMING_DELAY [0x80000000]
Dynamic constraints:
Satisfied constraints: DEVICE_NOT_DOZING BACKGROUND_NOT_RESTRICTED WITHIN_QUOTA [0x3400000]
Unsatisfied constraints: TIMING_DELAY [0x80000000]
Uid: active
Tracking: TIME QUOTA
Implicit constraints:
readyNotDozing: true
readyNotRestrictedInBg: true
readyDynamicSatisfied: false
readyComponentEnabled: true
Standby bucket: ACTIVE
Enqueue time: -1m4s580ms
Run time: earliest=+3m18s952ms, latest=none, original latest=none
Restricted due to: none.
```
Fixes:
Change-Id: I3aef31613cc9f85edcd92c2818aa957a4bfa10aa
M work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
bo...@gmail.com <bo...@gmail.com> #7
I've tested with the latest snapshot and I can confirm the test case works on my Huawei device as expected now.
ra...@google.com <ra...@google.com> #8
Thanks for confirming. Sorry about the confusion.
Description
Component used: WorkManager
Version used: 2.5.0-beta01
Devices/Android versions reproduced on:
Huawei P30 lite
Description:
This is related to 166292069. When jobs fail to execute on JobScheduler, WorkManager will reconcile jobs again and reschedule them, however this does not seem to work correctly.
Steps to reproduce:
adb dumpsys jobscheduler |grep wmtestcase/an
that the job is scheduled on JobSchedulerJobScheduler
.timed out while binding
and the job will be gone.Reconciling jobs
Expected result: the periodic job is rescheduled on
JobScheduler
Actual result: the job is not rescheduled