summaryrefslogtreecommitdiff
path: root/services/incremental/BinderIncrementalService.cpp
AgeCommit message (Collapse)Author
2021-04-16[pm] remove incremental startable/unstartable codeSongchun Fan
Also remove streaming health status reporting which could cause startable state change because it is also not needed any more. BUG: 171920377 Test: builds Change-Id: I7284e7a63df79da7dbf3d16ff64302b3d1ce1348
2021-04-08Installation hardening: reducing read timeout during installation.Alex Buynytskyy
And then restoring post-install. Bug: 160635296 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest Change-Id: I0821458bf92db162518a2cbcb7499cd7544e64f2
2021-03-19Untangle listeners mess in IncrementalServiceYurii Zubrytskyi
Listeners and some binder call parameters were using several different styles when passed around - copy, move, pointer, pointer to pointer. This CL tries to 'normalize' that. Bug: 183067554 Test: atest IncrementalServiceTest Change-Id: Ia28089aa9e4491b0f28e3e747489199cfccb5a1b
2021-03-19[incfs] Call the new isFullyLoaded api where possibleYurii Zubrytskyi
Replace the remaining calls to getFilledRanges() with isFullyLoaded() where we don't care about the progress Bug: 183067554 Test: atest IncrementalService Change-Id: Ic8dc2e3a0ef078353883feef7969b29e11dfa2d0
2021-03-19[incfs] Fix the unsafe memory copy in IncrementalServiceYurii Zubrytskyi
Better to protect the memcpy() and zero-out the target Bug: 183160959 Test: atest IncrementalService Change-Id: I3daca749168a8c5a32b1eedc7992006cbe2e9eb4
2021-03-18[incfs] Use the new libincfs API for file status checkingYurii Zubrytskyi
libincfs got a new set of functions for checking the file loaded status, which works more efficiently than getting filled ranges. Bug: 183067554 Test: atest IncrementalServiceTest Change-Id: I3b96bf409f1778c5a89e4802e2005197f70ce0cb
2021-03-09[incremental] expose duration since oldest pending readSongchun Fan
As requested by go/incremental-disablement-metrics, we will expose the duration since oldest pending read as part of the crash/ANR metrics. This is the first step that exposes the value to Incremental Service. BUG: 180951530 Test: unit test Change-Id: Ic67460072556ef01780a1794b40924ca2092060d
2021-02-03Merge "Fix system_server's main thread name." am: 7fa0e63bc3 am: a184cbd7fb ↵Songchun Fan
am: a3ba5784d3 Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1569742 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I362576dac4741ce88761d2ffe808ed5e5c469039
2021-02-03Fix system_server's main thread name.jiangyou li
When BinderIncrementalService start, it call ps->giveThreadPoolName() change the thread name to Binder:%d_%X. However BinderIncrementalService run in system_serve main thread, it need not change the thread name. BUG: 171354331 Test: adb shell ps -T [pid] check the main thread name of system_server Change-Id: I53fc6e096cae78798bb0a2670dcf2d8b4da3f5b6
2021-01-29Inherited installation support for Incremental.Alex Buynytskyy
Bug: 162345970 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest Change-Id: I360f44bc52e05553eacc448faa26f603d9eaae59 Merged-In: I360f44bc52e05553eacc448faa26f603d9eaae59
2021-01-12Per package read timeouts.Alex Buynytskyy
Bug: 162345970 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest Change-Id: I2599db1ed8827fff16387c11254a5d607f27ea46
2020-10-20[incremental/pm] set health listener on commit and on rebootSongchun Fan
This changes allow Incremental Service to directly report health status to package manager service. A health listener is created during package installation session to monitor incremental storage health. After commit, a new listener is created and will overwrite the old one. The new listener will listen to incremental storage health and report the status to package manager service, which will then send the status to IncrementalStates, where the startability state and unstartable reason might change, based on the health status code. During reboot, for each incremental package, if it is not fully loaded, the package manager service will register a health status listener to continue monitor the health status of this package. Test: unit test Test: manual BUG: 170435166 Change-Id: I220f230c523cfaf2c96019f9478554665e6af486
2020-09-21Installer digests for Incremental installations.Alex Buynytskyy
Bug: 160605420 Test: atest ChecksumsTest Change-Id: I9d46c218cccf87781e9b33711c4d02d94bf824f5
2020-09-15[incremental/pm] register progress listenerSongchun Fan
Incremental Serivce periodically polls loading progress and sends to Package Manager Service. Package Manager provides APIs for other interested parties to listen to the loading progress. BUG: 165841827 Test: unit test Change-Id: I44b9e17c2240b9efe53bc09fc728b6671f1f7dfe
2020-08-27Wait for APK to be fully downloaded for full APK digests.Alex Buynytskyy
Bug: 160605420 Test: atest ChecksumsTest Change-Id: Ib9fd591c67290786268b6dcdc57c7db153612e01
2020-08-22[IncrementalService] getLoadingProgress (v1)Songchun Fan
This is to unblock Launcher's work on progress ring. Currently it uses incfs getFilledBlocks(). Will switch to the new incfs progress reporting API once it is ready. Test: unit test Test: adb shell dumpsys incremental BUG: 165799231 Change-Id: Icd68124806454f888826294da36f109bca9771ac
2020-06-15Merge "Don't provide read logs for shell-initiated installations." into ↵TreeHugger Robot
rvc-dev am: e0ba6d9dff Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11778056 Change-Id: I866bc89927ae11a0da7069d33e3e06d5c1f1b51f
2020-06-12Don't provide read logs for shell-initiated installations.Alex Buynytskyy
Only if the application is profileable. Bug: 158238023 Fixes: 158238023 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageParserTest Change-Id: I8575830ec3f29850297fdbfbaa157072d6350a28
2020-06-12Don't provide read logs for shell-initiated installations.Alex Buynytskyy
Only if the application is profileable. Bug: 158238023 Fixes: 158238023 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageParserTest Change-Id: I8575830ec3f29850297fdbfbaa157072d6350a28 Merged-In: I8575830ec3f29850297fdbfbaa157072d6350a28
2020-05-28Merge "[incremental] respect extractNativeLibs in native lib config" into ↵Songchun Fan
rvc-dev am: f2a6af4b8a am: 8ecea0c1ce am: 1f5799ffdc Change-Id: Ib18aeefdc763c318f6c99f704abf016820d45dbd
2020-05-28Merge "[incremental] respect extractNativeLibs in native lib config" into ↵Songchun Fan
rvc-dev am: f2a6af4b8a Change-Id: Ibc96844cf6737663c48c9133b49bc9c972ed632f
2020-05-27Merge "[incremental] respect extractNativeLibs in native lib config" into ↵Songchun Fan
rvc-dev
2020-05-27[incremental] respect extractNativeLibs in native lib configSongchun Fan
Makes sure the behavior is consistent with legacy installs: When the flag is on, the native libs will be extracted to subdirs under lib/. When the flag is off, the lib/ subdirs will be created but the native libs are not extracted. When the flag is off, check if the native libs are uncompressed and well aligned. Test: atest android.extractnativelibs.cts.CtsExtractNativeLibsHostTest BUG: 157173358 Change-Id: Idb57fd7ca1115f787faf5cde3056c32ff3f60890
2020-05-27Merge "Lifecycle: detecting blocked and unhealthy." into rvc-dev am: ↵Alex Buynytskyy
4e5ff2eb7d am: 1ad652187c am: d1de4941b5 Change-Id: I2f099f41419d4232470094c2f7fa29ad5cc616a9
2020-05-27Merge "Lifecycle: detecting blocked and unhealthy." into rvc-dev am: 4e5ff2eb7dAlex Buynytskyy
Change-Id: If0f24b8549fbf78aecf4586551528606064ecfe7
2020-05-26Lifecycle: detecting blocked and unhealthy.Alex Buynytskyy
Part 1: interfaces and PM implementation. Bug: 153874006 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest Change-Id: I312dd919d2bb552bea3d72fb49fd1579882da14b
2020-04-30Remove unneeded dependency on libnativehelperOrion Hodson
Bug: 151443957 Test: m service.incremental Change-Id: I251796cf521ed3804b2c9018c43469289032e315 Merged-In: I251796cf521ed3804b2c9018c43469289032e315 (cherry picked from commit 90f0e7a53c00650783dc97fa41235b09a22d6414)
2020-04-22[incfs] Use MountRegistry to import existing mounts on startYurii Zubrytskyi
This is a big cleanup in IncrementalService that makes it behave nicely on runtime restart, and more: - fixed a bunch of threading issues in createStorage/bind - made public functions correctly accept any path in any bind mount and translate it to the proper root mount - got rid of "using namespace" in headers, cleaned includes - removed all unused functions - set CLOEXEC bit on all duped FDs Bug: 151241369 Test: atest PackageManagerShellCommandTest \ PackageManagerShellCommandIncrementalTest \ IncrementalServiceTest Change-Id: Ided4415aabfbfca3925b5e71c91896055886ac4a
2020-04-10[incfs] Fix a crash in worker thread calling JNIYurii Zubrytskyi
Worker thread has to initialize JNI separately to be able to call into managed binders implemented in the same system_server process, e.g. DataLoaderManager Bug: 153513507 Test: adb install megacity.nov4.apk; adb install megacity.v4.apk Change-Id: I668e8664361cd2fb3353ec50efd689c7d613658f
2020-04-10[incfs] Make native library extraction asyncYurii Zubrytskyi
IncrementalService can create the library files beforehand, but delay filling in their data. As it takes quite a while in general (over a second in cases when the phone is busy), it's better to run the unzipping and filling in a separate thread and only make sure it finishes before the whole installation process is complete. This speeds up the megacity.apk installation by ~250-300ms, 1000-1100ms -> 750-800ms Bug: 153513507 Test: adb install megacity.apk Change-Id: Ia44f7e45b9e0abaebdfb6fe5352f9dcf29ab4ece
2020-04-10Get rid of two runtime static destructorsYurii Zubrytskyi
Bug: 153704006 Test: compiles Change-Id: Icb44c2d2c1e26b13a4d03a4996bffe016a141286
2020-04-07Change the way how we call setStorageParams.Alex Buynytskyy
Now it's unified with callback FS connector - we are passing the callback pointer directly to dataloader. This restricts access only to methods we want and only by someone we want. Bug: b/153468113 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest Change-Id: Ib557ebbe7c6c5ce92140eb20534a3626b3ac96d3
2020-04-02Checking LOADER_USAGE_STATS before enabling read logs.Alex Buynytskyy
Bug: b/152633648 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest Change-Id: Ic747a51b97b785c627c95bddecc6834ef602ff30
2020-03-13Updated v4 signature processing.Alex Buynytskyy
Passing to libincfs.so. Obtaining and verifying, including v3 digest check. go/apk-v4-signature-format Test: atest PackageManagerShellCommandTest Bug: b/151241461 Change-Id: Id61f5716b9f9b55d6ab1ebca5a7ecb1c6e54570a
2020-02-11Incremental installations in PackageManagerShellCommand.Alex Buynytskyy
- onPrepareImage in native, - allow to check installation type and choose native or managed dataloaders, - native data loader for Incremental, - install-incremental shell command. Test: atest PackageManagerShellCommandTest Test: atest IncrementalServiceTest Bug: b/136132412 b/133435829 Change-Id: I530a8a203fb50132c1869abd0b869036add18699
2020-02-07Incremental native lib extractionSongchun Fan
Basically we configure all the lib files inside Incremental Service, e.g., create lib dirs, make lib files, extract original lib file data from zip and then write data to the lib files on incfs. Test: manual with incremental installation BUG: b/136132412 b/133435829 Change-Id: I7544d2e78bcf3bdd76ce4c0766ec31ff13fd2011
2020-02-03Dumpsys support for IncrementalService.Alex Buynytskyy
Test: atest PackageManagerShellCommandTest Test: adb shell dumpsys incremental Bug: b/136132412 b/133435829 Change-Id: I8a91eddb850c68da87f56a82ca14fdf9ac5d3ce5
2020-01-31make adb install --incremental workSongchun Fan
With a simple Java apk (flipboard.app). BUG: 133435829 Test: manual Change-Id: If702afffc0e01cbb03f88560c0569fd23dda2350
2020-01-28Port the current code to new IncFSYurii Zubrytskyi
Bug: 146080380 Test: manual, "cmd incremental install-start" Change-Id: I6761c3f0e58b6d4de1ae3c4b31c23204fba9f740
2019-12-19[incremental] native implementation of Incremental ServiceSongchun Fan
The implementation of IIncrementalManager.aidl. TODO to refactor this. Test: atest service.incremental_test Change-Id: Ib8c8a9c0e7f0289b4bcd8961fa39746ed12b4310