Merge "Ensure the generation is not changed before put value to cache"
am: 11ae580f81
Change-Id: I5bf2c557f6f46f1455204761a9045b8b90d7ea32
This commit is contained in:
@@ -1749,6 +1749,10 @@ public final class Settings {
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getCurrentGeneration() {
|
||||
return mCurrentGeneration;
|
||||
}
|
||||
|
||||
private int readCurrentGeneration() {
|
||||
try {
|
||||
return mArray.get(mIndex);
|
||||
@@ -1857,6 +1861,7 @@ public final class Settings {
|
||||
|
||||
public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
|
||||
final boolean isSelf = (userHandle == UserHandle.myUserId());
|
||||
int currentGeneration = -1;
|
||||
if (isSelf) {
|
||||
synchronized (NameValueCache.this) {
|
||||
if (mGenerationTracker != null) {
|
||||
@@ -1870,6 +1875,9 @@ public final class Settings {
|
||||
} else if (mValues.containsKey(name)) {
|
||||
return mValues.get(name);
|
||||
}
|
||||
if (mGenerationTracker != null) {
|
||||
currentGeneration = mGenerationTracker.getCurrentGeneration();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1960,7 +1968,10 @@ public final class Settings {
|
||||
});
|
||||
}
|
||||
}
|
||||
mValues.put(name, value);
|
||||
if (mGenerationTracker != null && currentGeneration ==
|
||||
mGenerationTracker.getCurrentGeneration()) {
|
||||
mValues.put(name, value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle
|
||||
@@ -2001,7 +2012,10 @@ public final class Settings {
|
||||
|
||||
String value = c.moveToNext() ? c.getString(0) : null;
|
||||
synchronized (NameValueCache.this) {
|
||||
mValues.put(name, value);
|
||||
if(mGenerationTracker != null &&
|
||||
currentGeneration == mGenerationTracker.getCurrentGeneration()) {
|
||||
mValues.put(name, value);
|
||||
}
|
||||
}
|
||||
if (LOCAL_LOGV) {
|
||||
Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " +
|
||||
|
||||
Reference in New Issue
Block a user