Fix ApexManager#snapshotCeData (3/n)

Now it returns a boolean to indicate if the snapshot was successful or
not since we no longer use inode to delete snapshots.

Bug: 154897348
Test: atest RollbackUnitTest RollbackStoreTest AppDataRollbackHelperTest
Change-Id: I10ed0e3adef88a27ee239c183d99a836b623d0d1
This commit is contained in:
JW Wang
2020-06-01 15:17:51 +08:00
parent 1a1eea681a
commit 6d8e4e5a40
2 changed files with 9 additions and 11 deletions

View File

@@ -321,9 +321,9 @@ public abstract class ApexManager {
* Copies the CE apex data directory for the given {@code userId} to a backup location, for use
* in case of rollback.
*
* @return long inode for the snapshot directory if the snapshot was successful, or -1 if not
* @return boolean true if the snapshot was successful
*/
public abstract long snapshotCeData(int userId, int rollbackId, String apexPackageName);
public abstract boolean snapshotCeData(int userId, int rollbackId, String apexPackageName);
/**
* Restores the snapshot of the CE apex data directory for the given {@code userId}.
@@ -817,7 +817,7 @@ public abstract class ApexManager {
}
@Override
public long snapshotCeData(int userId, int rollbackId, String apexPackageName) {
public boolean snapshotCeData(int userId, int rollbackId, String apexPackageName) {
String apexModuleName;
synchronized (mLock) {
Preconditions.checkState(mPackageNameToApexModuleName != null,
@@ -826,13 +826,14 @@ public abstract class ApexManager {
}
if (apexModuleName == null) {
Slog.e(TAG, "Invalid apex package name: " + apexPackageName);
return -1;
return false;
}
try {
return waitForApexService().snapshotCeData(userId, rollbackId, apexModuleName);
waitForApexService().snapshotCeData(userId, rollbackId, apexModuleName);
return true;
} catch (Exception e) {
Slog.e(TAG, e.getMessage(), e);
return -1;
return false;
}
}
@@ -1106,7 +1107,7 @@ public abstract class ApexManager {
}
@Override
public long snapshotCeData(int userId, int rollbackId, String apexPackageName) {
public boolean snapshotCeData(int userId, int rollbackId, String apexPackageName) {
throw new UnsupportedOperationException();
}

View File

@@ -127,11 +127,8 @@ public class AppDataRollbackHelper {
if (packageRollbackInfo.isApex()) {
// For APEX, only snapshot CE here
if ((flags & Installer.FLAG_STORAGE_CE) != 0) {
long ceSnapshotInode = mApexManager.snapshotCeData(
return mApexManager.snapshotCeData(
userId, rollbackId, packageRollbackInfo.getPackageName());
if (ceSnapshotInode <= 0) {
return false;
}
}
} else {
// APK