Skip to content
Commit da5e7a0e authored by Hyangseok Chae's avatar Hyangseok Chae Committed by Calin Juravle
Browse files

Reset the profile when system application change version.

Background optimization has flag checkProfiles as true,
performDexOptLI check profile is updated with checkProfiles.
(isProfileUpdated() -> mergeProfiles -> analyze_profiles())
analyze_profiles decides if it is need to compile and clear
the profile or not. But analyze_profiles and profman merge
only based on existing profiles. Eventhough checksum of
application dex was changed, profman only check the profile
can be merge or not.

With below TC, the return value of profman is PROFMAN_BIN_
RETURN_CODE_SKIP_COMPILATION(1). Because current profile
has not enough informations than reference profile.
I think ProcessProfilesInternal should consider change
of dex checksum, If there are mismatch checksum of dex
between profiles and dex, then profman should return with
PROFMAN_BIN_RETURN_CODE_BAD_PROFILES (2).
After that analyze_profiles can reset profiles with
PROFMAN_BIN_RETURN_CODE_BAD_PROFILES.

But profman does not have that implemtation for verify
the profile based on checksum. So, It is need to drop
the profile based on change of application version.

Test: System update
1. Factory Image with system application. (vendor, system app)
2. Use Sample application to generage current profile.
3. BackgroundDexOptService optimize with speed-profile.
4. Use Sample application to generage current profile.
5. There are small size of current profile and large size
    of reference profile.
6. System update with application change.
7. Reboot.
8. Next background optimization would be fail permanently.

Bug: 77839992

Merged-In: Iac575ae5906498a59b750df0b281fab01df57b3e
Change-Id: Iac575ae5906498a59b750df0b281fab01df57b3e
parent 59e139a7
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment