Status Update
Comments
ra...@google.com <ra...@google.com> #2
Unfortunately there is not much WorkManager
can do about this situation other than recover on subsequent launch.
When a bind to the JobService
fails, the jobs are dropped and the only recourse is to schedule a job on a subsequent onCreate()
.
bo...@gmail.com <bo...@gmail.com> #3
I think you are misunderstanding here. I understand that the failed bind cannot be resolved. What I'm saying and describing is that the recovery is not working correctly. It is shown in the logs that WorkManager is attempting this, yet nothing gets scheduled again on JobScheduler after opening the app again which is the whole point for reconciling in the first place.
bo...@gmail.com <bo...@gmail.com> #4
Note the last step in my steps to reproduce is literally "reopen the app". The sample calls WorkManager.getInstance()
to force initialisation of WM and to trigger the reconciliation code.
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
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