Merge "Fixed to prevent usagestats file corruption when writing" am: 98fc96fc65 am: acb36aadda am: 9d58180bfa

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1550659

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Idd140356f26f89fa8b182946cde729f2fb0df490
This commit is contained in:
Varun Shah
2021-01-30 00:53:53 +00:00
committed by Automerger Merge Worker

View File

@@ -1026,6 +1026,8 @@ public class UsageStatsDatabase {
writeLocked(fos, stats, version, packagesTokenData);
file.finishWrite(fos);
fos = null;
} catch (Exception e) {
// Do nothing. Exception has already been handled.
} finally {
// When fos is null (successful write), this will no-op
file.failWrite(fos);
@@ -1033,7 +1035,7 @@ public class UsageStatsDatabase {
}
private static void writeLocked(OutputStream out, IntervalStats stats, int version,
PackagesTokenData packagesTokenData) throws RuntimeException {
PackagesTokenData packagesTokenData) throws Exception {
switch (version) {
case 1:
case 2:
@@ -1045,6 +1047,7 @@ public class UsageStatsDatabase {
UsageStatsProto.write(out, stats);
} catch (Exception e) {
Slog.e(TAG, "Unable to write interval stats to proto.", e);
throw e;
}
break;
case 5:
@@ -1053,6 +1056,7 @@ public class UsageStatsDatabase {
UsageStatsProtoV2.write(out, stats);
} catch (Exception e) {
Slog.e(TAG, "Unable to write interval stats to proto.", e);
throw e;
}
break;
default: