Fixed
Status Update
Comments
ra...@google.com <ra...@google.com> #2
st...@baramundi.de <st...@baramundi.de> #3
I reproduced the crash on the Moto G5s Plus with verbose logging. I couldn't reproduce it on the Huawai with verbose logging turned on.
ra...@google.com <ra...@google.com> #4
It's hard for me to reproduce this on an emulator or the test devices I have. Can you please:
* Uninstall the test app, which is enqueue-ing these Workers. I want to make sure that we start from a clean state, from the perspective of JobScheduler.
* Run the test 100 times (i.e. a new Worker gets enqueued at the end of existing an Worker 100 times), and check to see if you have pending jobs in JobScheduler by using `adb shell dumpsys jobscheduler` (for your package name). The number of pending jobs should be 0, if that is the number of jobs you started with.
* If you are able to consistently reproduce this, can you try and set thehttps://developer.android.com/reference/androidx/work/Configuration.Builder#setmaxschedulerlimit to something very low like 10 and see how many jobs you end up with after the same test.
Thank you for your bug report.
* Uninstall the test app, which is enqueue-ing these Workers. I want to make sure that we start from a clean state, from the perspective of JobScheduler.
* Run the test 100 times (i.e. a new Worker gets enqueued at the end of existing an Worker 100 times), and check to see if you have pending jobs in JobScheduler by using `adb shell dumpsys jobscheduler` (for your package name). The number of pending jobs should be 0, if that is the number of jobs you started with.
* If you are able to consistently reproduce this, can you try and set the
Thank you for your bug report.
ra...@google.com <ra...@google.com>
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-master-dev
commit c0b51deb20e4775627bb2a379625d14a65779a39
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Tue Sep 18 22:21:02 2018
Fixes the 100 Jobs scheduler limit problem.
* `WorkerWrapper` now correctly cancels `Worker`s in other schedulers
after the `WorkSpec` reaches a terminal state.
Test: Added a new integration test.
Change-Id: I2ad63cd77407bded7c720fc1015182820d63a36d
Fixes: b/115560696
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/MainActivity.java
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/TestWorker.java
M work/integration-tests/testapp/src/main/res/layout/activity_main.xml
M work/integration-tests/testapp/src/main/res/values/strings.xml
M work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
https://android-review.googlesource.com/760298
https://goto.google.com/android-sha1/c0b51deb20e4775627bb2a379625d14a65779a39
Branch: androidx-master-dev
commit c0b51deb20e4775627bb2a379625d14a65779a39
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Tue Sep 18 22:21:02 2018
Fixes the 100 Jobs scheduler limit problem.
* `WorkerWrapper` now correctly cancels `Worker`s in other schedulers
after the `WorkSpec` reaches a terminal state.
Test: Added a new integration test.
Change-Id: I2ad63cd77407bded7c720fc1015182820d63a36d
Fixes:
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/MainActivity.java
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/TestWorker.java
M work/integration-tests/testapp/src/main/res/layout/activity_main.xml
M work/integration-tests/testapp/src/main/res/values/strings.xml
M work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
st...@baramundi.de <st...@baramundi.de> #7
Sorry for the delayed reply. The tests you suggested did show a problem on version alpha08 (Sometimes the jobs wasn't removed fast enouth after finishing).
But as you already provided the fix, this shouldn't be something new to you.
I attached the log files just for completeness...
I can no longer reproduce the issue on alpha09 on my devices. Thank you for your swift fix and release.
But as you already provided the fix, this shouldn't be something new to you.
I attached the log files just for completeness...
I can no longer reproduce the issue on alpha09 on my devices. Thank you for your swift fix and release.
ra...@google.com <ra...@google.com> #8
Thanks for the confirmation.
Description
Version used: 1.0.0-alpha08
Devices/Android versions reproduced on: Moto G5s Plus, Android 7.1.1 / Huawai P20 lite, Android 8.0.0
We can reproduce a crash of the workmanager on some devices.
In our code we enqueue a UniqueWork with ExistingWorkPolicy.REPLACE, as soon as it finishes with State.SUCEEDED we enqueue it again. There is always only one job at the time.
After about 100 jobs the workmanager crashes with: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs.
It looks like the workmanager does not prune the finished jobs fast enough, and they count as 'sheduled' job, even if they are finished?
The crash is reproducible on the Moto G5s Plus and Huawai P20 lite. But it behaves very inconsistent, sometimes it occurs on the first run, sometimes only after a few restarts of the app. But we cannot reproduce it on the Pixel 2 XL or the emulator.
Calling pruneWork() before enqueue() doesn't fix the problem.
Reducing the result lifetime by calling keepResultsForAtLeast(..) doesn't work as well.
We provided a sample app which triggers the issue.