Fixed
Status Update
Comments
ra...@google.com <ra...@google.com> #2
I was able to reproduce this issue. We should have a fix in rc02.
ra...@google.com <ra...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit f1d3eabbb463486932b3f31bfb1bbc49aff8e5e3
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Tue Feb 19 11:34:51 2019
Fixes a case where WorkManager needs to reschedule Workers after an unexpected application crash.
* This is different from a traditional force stop scenario. The app crashes while WorkManager is
managing a WorkRequest. This `Worker` should be retried after the app starts up.
Test: Added unit tests. Ran integration tests.
02-19 11:34:18.142 6344 6344 D WM-PackageManagerHelper: androidx.work.impl.background.systemjob.SystemJobService enabled
02-19 11:34:18.142 6344 6344 D WM-Schedulers: Created SystemJobScheduler and enabled SystemJobService
02-19 11:34:18.142 6344 6344 D WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.SystemAlarmService disabled
02-19 11:34:18.163 6344 6365 D WM-ForceStopRunnable: Found unfinished work, rescheduling.
02-19 11:34:18.170 6344 6365 D WM-SystemJobScheduler: Skipping scheduling b4d48f2b-e712-4585-8aae-80eed11e0618 because JobScheduler is aware of it already.
02-19 11:34:18.170 6344 6365 D WM-ForceStopRunnable: Unfinished Workers exist, rescheduling.
02-19 11:34:18.332 6344 6344 D WM-SystemJobService: onStartJob for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:18.337 6344 6365 D WM-Processor: Processor: processing b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:18.338 6344 6365 D WM-WorkerWrapper: Delaying execution for com.perracolabs.workmanagerbug.WorkerTest because it is being executed before schedule.
02-19 11:34:18.486 6344 6344 D WM-Processor: Processor b4d48f2b-e712-4585-8aae-80eed11e0618 executed; reschedule = true
02-19 11:34:18.486 6344 6344 D WM-SystemJobService: b4d48f2b-e712-4585-8aae-80eed11e0618 executed on JobScheduler
02-19 11:34:28.514 6344 6344 D WM-SystemJobService: onStartJob for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.514 6344 6365 D WM-Processor: Processor: processing b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.522 6344 6344 D WM-WorkerWrapper: Starting work for com.perracolabs.workmanagerbug.WorkerTest
02-19 11:34:28.528 6344 6365 D WM-WorkerWrapper: com.perracolabs.workmanagerbug.WorkerTest returned a Success {mOutputData=androidx.work.Data@0} result.
02-19 11:34:28.529 6344 6365 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=b4d48f2b-e712-4585-8aae-80eed11e0618, tags={ com.perracolabs.workmanagerbug.WorkerTest } ]
02-19 11:34:28.530 6344 6365 D WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver disabled
02-19 11:34:28.534 6344 6344 D WM-Processor: Processor b4d48f2b-e712-4585-8aae-80eed11e0618 executed; reschedule = false
02-19 11:34:28.534 6344 6344 D WM-SystemJobService: b4d48f2b-e712-4585-8aae-80eed11e0618 executed on JobScheduler
02-19 11:34:28.535 6344 6365 D WM-GreedyScheduler: Cancelling work ID b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-Processor: Processor stopping b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-Processor: WorkerWrapper could not be found for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-StopWorkRunnable: StopWorkRunnable for b4d48f2b-e712-4585-8aae-80eed11e0618; Processor.stopWork = false
Fixes: b/124546316
Change-Id: I41cf0b113f4667bcd67efbf62bcbc110ad80103d
M work/workmanager/src/androidTest/java/androidx/work/impl/utils/ForceStopRunnableTest.java
M work/workmanager/src/main/java/androidx/work/impl/model/WorkSpecDao.java
M work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
https://android-review.googlesource.com/906605
https://goto.google.com/android-sha1/f1d3eabbb463486932b3f31bfb1bbc49aff8e5e3
Branch: androidx-master-dev
commit f1d3eabbb463486932b3f31bfb1bbc49aff8e5e3
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Tue Feb 19 11:34:51 2019
Fixes a case where WorkManager needs to reschedule Workers after an unexpected application crash.
* This is different from a traditional force stop scenario. The app crashes while WorkManager is
managing a WorkRequest. This `Worker` should be retried after the app starts up.
Test: Added unit tests. Ran integration tests.
02-19 11:34:18.142 6344 6344 D WM-PackageManagerHelper: androidx.work.impl.background.systemjob.SystemJobService enabled
02-19 11:34:18.142 6344 6344 D WM-Schedulers: Created SystemJobScheduler and enabled SystemJobService
02-19 11:34:18.142 6344 6344 D WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.SystemAlarmService disabled
02-19 11:34:18.163 6344 6365 D WM-ForceStopRunnable: Found unfinished work, rescheduling.
02-19 11:34:18.170 6344 6365 D WM-SystemJobScheduler: Skipping scheduling b4d48f2b-e712-4585-8aae-80eed11e0618 because JobScheduler is aware of it already.
02-19 11:34:18.170 6344 6365 D WM-ForceStopRunnable: Unfinished Workers exist, rescheduling.
02-19 11:34:18.332 6344 6344 D WM-SystemJobService: onStartJob for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:18.337 6344 6365 D WM-Processor: Processor: processing b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:18.338 6344 6365 D WM-WorkerWrapper: Delaying execution for com.perracolabs.workmanagerbug.WorkerTest because it is being executed before schedule.
02-19 11:34:18.486 6344 6344 D WM-Processor: Processor b4d48f2b-e712-4585-8aae-80eed11e0618 executed; reschedule = true
02-19 11:34:18.486 6344 6344 D WM-SystemJobService: b4d48f2b-e712-4585-8aae-80eed11e0618 executed on JobScheduler
02-19 11:34:28.514 6344 6344 D WM-SystemJobService: onStartJob for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.514 6344 6365 D WM-Processor: Processor: processing b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.522 6344 6344 D WM-WorkerWrapper: Starting work for com.perracolabs.workmanagerbug.WorkerTest
02-19 11:34:28.528 6344 6365 D WM-WorkerWrapper: com.perracolabs.workmanagerbug.WorkerTest returned a Success {mOutputData=androidx.work.Data@0} result.
02-19 11:34:28.529 6344 6365 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=b4d48f2b-e712-4585-8aae-80eed11e0618, tags={ com.perracolabs.workmanagerbug.WorkerTest } ]
02-19 11:34:28.530 6344 6365 D WM-PackageManagerHelper: androidx.work.impl.background.systemalarm.RescheduleReceiver disabled
02-19 11:34:28.534 6344 6344 D WM-Processor: Processor b4d48f2b-e712-4585-8aae-80eed11e0618 executed; reschedule = false
02-19 11:34:28.534 6344 6344 D WM-SystemJobService: b4d48f2b-e712-4585-8aae-80eed11e0618 executed on JobScheduler
02-19 11:34:28.535 6344 6365 D WM-GreedyScheduler: Cancelling work ID b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-Processor: Processor stopping b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-Processor: WorkerWrapper could not be found for b4d48f2b-e712-4585-8aae-80eed11e0618
02-19 11:34:28.537 6344 6365 D WM-StopWorkRunnable: StopWorkRunnable for b4d48f2b-e712-4585-8aae-80eed11e0618; Processor.stopWork = false
Fixes:
Change-Id: I41cf0b113f4667bcd67efbf62bcbc110ad80103d
M work/workmanager/src/androidTest/java/androidx/work/impl/utils/ForceStopRunnableTest.java
M work/workmanager/src/main/java/androidx/work/impl/model/WorkSpecDao.java
M work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
Description
I have created a Worker and a test class running it, but the doWork method is not called.
I have tried to debug the issue and the work is not executed as the constructor of `TestWorkManagerImpl` creates a list of Schedulers with one `null` Scheduler. due to this the Schedulers.schedule method throws a null pointer exception.
Here is the stacktrace from the exception:
androidx.work.impl.Schedulers.schedule(Schedulers.java:91)
androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:131)
androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:92)
androidx.work.testing.TestWorkManagerImpl$1.executeOnBackgroundThread(TestWorkManagerImpl.java:63)
androidx.work.impl.WorkContinuationImpl.enqueue(WorkContinuationImpl.java:185)
androidx.work.impl.WorkManagerImpl.enqueue(WorkManagerImpl.java:305)
androidx.work.WorkManager.enqueue(WorkManager.java:180)
com.example.carlo.myapplication.testWorker() <--- where WorkManager.getInstance().enqueue(request) is called
I have also created a project with one failing test.
I am using WorkManager 1.0.0-beta01
Please let me know if you need more information