Merge "Attempt to fix deadlock on saveOverrides" into sc-dev

This commit is contained in:
Andrei-Valentin Onea
2021-06-17 23:50:54 +00:00
committed by Android (Google) Code Review

View File

@@ -257,8 +257,8 @@ final class CompatConfig {
addChange(c);
}
c.addPackageOverride(packageName, overrides, allowedState, versionCode);
invalidateCache();
}
invalidateCache();
return alreadyKnown;
}
@@ -379,9 +379,9 @@ final class CompatConfig {
CompatChange change = mChanges.valueAt(i);
removeOverrideUnsafe(change, packageName, versionCode);
}
saveOverrides();
invalidateCache();
}
saveOverrides();
invalidateCache();
}
/**
@@ -626,7 +626,18 @@ final class CompatConfig {
if (mOverridesFile == null) {
return;
}
Overrides overrides = new Overrides();
synchronized (mChanges) {
List<ChangeOverrides> changeOverridesList = overrides.getChangeOverrides();
for (int idx = 0; idx < mChanges.size(); ++idx) {
CompatChange c = mChanges.valueAt(idx);
ChangeOverrides changeOverrides = c.saveOverrides();
if (changeOverrides != null) {
changeOverridesList.add(changeOverrides);
}
}
}
synchronized (mOverridesFile) {
// Create the file if it doesn't already exist
try {
mOverridesFile.createNewFile();
@@ -636,15 +647,6 @@ final class CompatConfig {
}
try (PrintWriter out = new PrintWriter(mOverridesFile)) {
XmlWriter writer = new XmlWriter(out);
Overrides overrides = new Overrides();
List<ChangeOverrides> changeOverridesList = overrides.getChangeOverrides();
for (int idx = 0; idx < mChanges.size(); ++idx) {
CompatChange c = mChanges.valueAt(idx);
ChangeOverrides changeOverrides = c.saveOverrides();
if (changeOverrides != null) {
changeOverridesList.add(changeOverrides);
}
}
XmlWriter.write(writer, overrides);
} catch (IOException e) {
Slog.e(TAG, e.toString());