Status Update
Comments
ya...@google.com <ya...@google.com>
bo...@google.com <bo...@google.com>
r....@gmail.com <r....@gmail.com> #2
wd...@google.com <wd...@google.com>
wd...@google.com <wd...@google.com> #3
Branch: androidx-master-dev
commit 5975b62cd1f3f170bb82e9761efca40e5e5bfb16
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Wed Jul 24 12:24:17 2019
TaskExecutor's background executor is now SerialExecutor.
* This gives us visibility into the number of pending tasks which will
be important in the next CL.
There is a race condition between the SerialExecutor draining its queue
of pending tasks and SystemAlarmDispatcher's onAllCommandsCompleted() callback.
This is because SystemAlarmDispatcher thinks there are no more things to be
done even though there are pending runnables in the SerialExecutor.
This CL makes this information available. In the next CL, CommandHandler
will check for pending runnables in the SerialExecutor queue.
(
* Fixed TestWorkManagerImpl to use Configuration#getTaskExecutor().
* Updated unit tests.
Test: Updated unit tests.
Change-Id: I5f32f1e1ef2563d4598934aed3b61d62a6d6167c
M work/workmanager-gcm/src/androidTest/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcherTest.kt
M work/workmanager-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
M work/workmanager-rxjava2/src/test/java/androidx/work/RxWorkerTest.kt
M work/workmanager-testing/src/androidTest/java/androidx/work/testing/WorkManagerInitHelperTest.java
M work/workmanager-testing/src/main/java/androidx/work/testing/InstantWorkTaskExecutor.java
M work/workmanager-testing/src/main/java/androidx/work/testing/TestWorkManagerImpl.java
M work/workmanager-testing/src/main/java/androidx/work/testing/WorkManagerTestInitHelper.java
M work/workmanager/src/androidTest/java/androidx/work/impl/utils/taskexecutor/InstantWorkTaskExecutor.java
M work/workmanager/src/main/java/androidx/work/impl/utils/SerialExecutor.java
M work/workmanager/src/main/java/androidx/work/impl/utils/taskexecutor/TaskExecutor.java
M work/workmanager/src/main/java/androidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor.java
wd...@google.com <wd...@google.com> #4
wd...@google.com <wd...@google.com> #5
Branch: androidx-master-dev
commit 7db27318ea09ae3857a7baebe8dd4e6fa9d16fdc
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Wed Jul 24 12:50:34 2019
Ensure SerialExecutor has no more pending tasks.
* We need to ensure this is the case because we might shutdown
SystemAlarmService without actually completing all the tasks.
Test: Existing unit tests pass. Ran integration tests.
Fixes:
Change-Id: I72fe2ddb1607995721eae320ce41accad93fee8f
M work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
M work/workmanager/src/main/java/androidx/work/impl/utils/SerialExecutor.java
ra...@google.com <ra...@google.com> #6
wd...@google.com <wd...@google.com> #7
Release Track: (
Created: 2019-07-26 23:31:17.300138+00:00
Changes: aosp/1092373, aosp/1092374
wd...@google.com <wd...@google.com> #8
I used 2.2.0-RC1 and the issue still persists but not as frequent as before.
08-14 11:38:59.141 975-987/ A/PowerManager: WakeLock finalized while still held: WorkManager: bd0a17b6-e87a-4c44-bb7f-6ae195975b36 (2)
08-14 11:39:02.588 975-1102/com.yantranet.signware.agent.staging E/WM-SystemAlarmDispatche: Unexpected error in onHandleIntent
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@3b835a4f rejected from java.util.concurrent.ScheduledThreadPoolExecutor@48bb5dc[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793)
at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:298)
at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:503)
at java.util.concurrent.Executors$DelegatedScheduledExecutorService.schedule(Executors.java:644)
at androidx.work.impl.background.systemalarm.WorkTimer.startTimer(WorkTimer.java:82)
at androidx.work.impl.background.systemalarm.DelayMetCommandHandler.onAllConstraintsMet(DelayMetCommandHandler.java:135)
at androidx.work.impl.background.systemalarm.DelayMetCommandHandler.handleProcessWork(DelayMetCommandHandler.java:211)
at androidx.work.impl.background.systemalarm.CommandHandler.handleDelayMet(CommandHandler.java:272)
at androidx.work.impl.background.systemalarm.CommandHandler.onHandleIntent(CommandHandler.java:171)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$1.run(SystemAlarmDispatcher.java:276)
at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
08-14 11:39:44.850 975-987/ A/PowerManager: WakeLock finalized while still held: WorkManager: 348bf17e-7aa4-48df-b88e-a2e7e3b5483d (2)
wd...@google.com <wd...@google.com> #9
wd...@google.com <wd...@google.com> #10
wd...@google.com <wd...@google.com>
wd...@google.com <wd...@google.com> #11
@ranjitkumar
Here is the verification steps for this bug.
Host Operating System: Windows 10
Set up: Disable ipv6 manually in Windows by referring to the
Repro step: 1, Create AVD with API 31 and wipe data before each run.
2, Run AVD and make sure it is cold boot.
3, Immediately after the device boot completes, go to Gmail or Google and try to load the Google Sign In page.
4, Google Sign In page should take more than 1 minute to load for the buggy version (32.3.10).
Google Sign in page should take less than 20 seconds for the new version (with fix in
ra...@google.com <ra...@google.com> #12
Thanks for the steps Weilun.
When I tried to load the sign in page after disabling the ipV6 manually it takes more than 2 minutes for the sign in page to show up with stable Emulator 31.3.10.
I will verify the fix in the upcoming Emulator build.
ra...@google.com <ra...@google.com> #13
It takes about 20 seconds for the Gmail sign in page to show up on AVD(Pixel_4a_API_31) with Emulator 31.3.11-9032202 using ipv4 in stand alone mode.
OS : Windows 10
jb...@gmail.com <jb...@gmail.com> #14
128RM 8
Description
Android Studio Version: Unknown
Emulator Version (Emulator--> Extended Controls--> Emulator Version): 31.3.10-8807927
HAXM / KVM Version: gvm 65544.0.0
Android SDK Tools: 26.1.1
Host Operating System: Windows 10 Enterprise LTSC 2021
CPU Manufacturer: AMD CPU
Virtualization is supported
64-bit CPU
RAM: 32692 MB
GPU: GPU #1
Make: 1002
Model: Radeon (TM) RX 480 Graphics
Device ID: 67df
Build Fingerprint:
AVD Details: Name: Pixel_5_API_30
CPU/ABI: x86
Path: C:\Users\Tom\.android\avd\Pixel_5_API_30.avd
Target: google_apis [Google APIs] (API level 30)
Skin: pixel_4
SD Card: 512M
AvdId: Pixel_5_API_30
PlayStore.enabled: false
avd.ini.displayname: Pixel 5 API 30
avd.ini.encoding: UTF-8
disk.dataPartition.size: 6442450944
fastboot.chosenSnapshotFile:
fastboot.forceChosenSnapshotBoot: no
fastboot.forceColdBoot: no
fastboot.forceFastBoot: yes
hw.accelerometer: yes
hw.arc: false
hw.audioInput: yes
hw.battery: yes
hw.camera.back: virtualscene
hw.camera.front: emulated
hw.cpu.ncore: 4
hw.dPad: no
hw.device.hash2: MD5:3274126e0242a0d86339850416b0ce34
hw.device.manufacturer: Google
hw.gps: yes
hw.gpu.enabled: yes
hw.gpu.mode: auto
hw.initialOrientation: Portrait
hw.keyboard: yes
hw.lcd.density: 440
hw.lcd.height: 2340
hw.lcd.width: 1080
hw.mainKeys: no
hw.ramSize: 1536
hw.sdCard: yes
hw.sensors.orientation: yes
hw.sensors.proximity: yes
hw.trackBall: no
image.sysdir.1: system-images\android-30\google_apis\x86\
runtime.network.latency: none
runtime.network.speed: full
showDeviceFrame: yes
skin.dynamic: yes
tag.display: Google APIs
vm.heapSize: 256
Steps to Reproduce Bug:network speed is too slow
Expected Behavior:
Observed Behavior: