am 02b4caf5: am 02d758a9: am 7caa51e6: Merge "Fix issue #17811029: Settings provider race when removing users" into lmp-dev
* commit '02b4caf5f74b9099a56f6e1ed30460f802657f41': Fix issue #17811029: Settings provider race when removing users
This commit is contained in:
@@ -506,7 +506,14 @@ public class SettingsProvider extends ContentProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void fullyPopulateCaches(final int userHandle) {
|
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
|
// Only populate the globals cache once, for the owning user
|
||||||
if (userHandle == UserHandle.USER_OWNER) {
|
if (userHandle == UserHandle.USER_OWNER) {
|
||||||
fullyPopulateCache(dbHelper, TABLE_GLOBAL, sGlobalCache);
|
fullyPopulateCache(dbHelper, TABLE_GLOBAL, sGlobalCache);
|
||||||
@@ -611,10 +618,15 @@ public class SettingsProvider extends ContentProvider {
|
|||||||
|
|
||||||
long oldId = Binder.clearCallingIdentity();
|
long oldId = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
DatabaseHelper dbHelper = mOpenHelpers.get(callingUser);
|
DatabaseHelper dbHelper;
|
||||||
|
synchronized (this) {
|
||||||
|
dbHelper = mOpenHelpers.get(callingUser);
|
||||||
|
}
|
||||||
if (null == dbHelper) {
|
if (null == dbHelper) {
|
||||||
establishDbTracking(callingUser);
|
establishDbTracking(callingUser);
|
||||||
dbHelper = mOpenHelpers.get(callingUser);
|
synchronized (this) {
|
||||||
|
dbHelper = mOpenHelpers.get(callingUser);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return dbHelper;
|
return dbHelper;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user