-
- Downloads
Properly handle stopping related users
Fixes UserController's mechanism for stopping users along with their other profile group members, and improves what happens when exceeding the maximum number of running users. * The UsersLru will now always list profiles *before* their parent * This makes sense since parents must be "used" for the profile to run * This ensures that if we exceed maxRunningUsers, we'll stop profiles before their parents (i.e. priotize keeping full users alive) * This ensures that if we exceed maxRunningUsers, we'll count the number of users we plan on stopping correctly (i.e. no overkill) * stopUsersLU, which stops a user as well as its "related users", formerly stopped a parent when called on its profile. This didn't make sense since stopping a profile shouldn't stop its parent. We change it to only stop a parent's profiles, not a profile's parent. This fixes the following bugs: * when exceeding maxRunningUsers, a user with profiles was much more likely to be killed, even if it was the main user * the stopProfile API would attempt to kill its parent too (!) * applying quiet mode to a profile of a background user would attempt to kill that background parent user too * Adds more documentation explaining a bunch of this Issues NOT tackled in this cl are: * The system user's profiles are still not stopped when maxRunningUsers is exceeded * When exceeding maxRunningUsers, we still don't prioritize keeping difficult-to-restart profiles (with separate challenges) alive * The entire notion of "force==true" is left alone, even though it doesn't make much sense Test: atest UserControllerTest#testRunningUsersListOrder_parentAfterProfile,testRunningUsersListOrder_currentAtEnd,testStopProfile_doesNotStopItsParent Test: atest UserControllerTest Bug: 324647580 Bug: 310249114 Change-Id: Ie08342bb77544117cab4423b543af74cbeb109e2
Showing
- services/core/java/com/android/server/am/UserController.java 71 additions, 28 deletionsservices/core/java/com/android/server/am/UserController.java
- services/tests/servicestests/src/com/android/server/am/UserControllerTest.java 169 additions, 15 deletions...estests/src/com/android/server/am/UserControllerTest.java
Loading
Please register or sign in to comment