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

Commit 02d758a9 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 7caa51e6: Merge "Fix issue #17811029: Settings provider race when removing users" into lmp-dev

* commit '7caa51e6':
  Fix issue #17811029: Settings provider race when removing users
parents 2d553e95 7caa51e6
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -506,7 +506,14 @@ public class SettingsProvider extends ContentProvider {
    }

    private void fullyPopulateCaches(final int userHandle) {
        DatabaseHelper dbHelper = mOpenHelpers.get(userHandle);
        DatabaseHelper dbHelper;
        synchronized (this) {
            dbHelper = mOpenHelpers.get(userHandle);
        }
        if (dbHelper == null) {
            // User is gone.
            return;
        }
        // Only populate the globals cache once, for the owning user
        if (userHandle == UserHandle.USER_OWNER) {
            fullyPopulateCache(dbHelper, TABLE_GLOBAL, sGlobalCache);
@@ -611,11 +618,16 @@ public class SettingsProvider extends ContentProvider {

        long oldId = Binder.clearCallingIdentity();
        try {
            DatabaseHelper dbHelper = mOpenHelpers.get(callingUser);
            DatabaseHelper dbHelper;
            synchronized (this) {
                dbHelper = mOpenHelpers.get(callingUser);
            }
            if (null == dbHelper) {
                establishDbTracking(callingUser);
                synchronized (this) {
                    dbHelper = mOpenHelpers.get(callingUser);
                }
            }
            return dbHelper;
        } finally {
            Binder.restoreCallingIdentity(oldId);