Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 3c1f216e authored by Adam Bookatz's avatar Adam Bookatz
Browse files

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
parent a0d8e5fb
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