Refactor PackageWatchdog explicit health checks
Improvements: 1. Queuing PackageWatchdog requests to startObserving packages: When observing packages with the watchdog, we needed to get the packages supporting explicit health checks so we can decide if a package should be passing or not. This prevents us from receiving requests to monitor packages during early boot, before third party packages are ready. In this change we don't depend on ExtServices to be up to startObserving, we initially treat all package as failing a health check and lazily syncRequests to request or cancel explicit health checks based on the currently observed packages. When we receive onSupportedPackages, we mark the packages that don't support health checks as passing. 2. Lazy binding to the explicit health check service: We were always bound to the explicit health check service regardless of whether we are expecting requests or not, we need to be able to bind and unbind dynamically to improve device resource usage. In this change, we bind as soon as we make a request and are expecting results, we unbind otherwise. 3. Fixed Races: There were a couple of potential races that could lead to exceptions that could bring the system server down, e.g when the service is transitioning between disconnected and connected state (maybe it crashed) or when ExtServices is being upated and is down or early boot requests when third party apps are not ready. This change fixes such. 4. Logging: We improved the logging wording and order and made it more consistent Bug: 120598832 Test: Manual tests. Stress tested behavior by killing extservices and making requests simultaneously function killproc { while true do local pid=$(adb shell pidof $1) if [[ ! -z $pid ]] then echo $pid adb shell kill $pid fi done; } adb install-multi-package -i com.android.shell --enable-rollback \ NetworkStack.apk ModuleMetadataGoogle.apk Also switched between enabled and disabled states to verify packages are handled correctly. Will automate these tests in later cl atest PackageWatchdogTest Change-Id: Iafaef553e95d107f700109f9a8328950a5e2bf71
Loading
Please register or sign in to comment