am 2fc4d811: am d6bcda99: am 02b4caf5: am 02d758a9: am 7caa51e6: Merge "Fix issue #17811029: Settings provider race when removing users" into lmp-dev

* commit '2fc4d81113d713022c5f31d7387e7687090168b4':
  Fix issue #17811029: Settings provider race when removing users
This commit is contained in:
Dianne Hackborn
2014-10-03 21:59:41 +00:00
committed by Android Git Automerger

View File

@@ -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,10 +618,15 @@ 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);
dbHelper = mOpenHelpers.get(callingUser);
synchronized (this) {
dbHelper = mOpenHelpers.get(callingUser);
}
}
return dbHelper;
} finally {