Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf716db0 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Automerger Merge Worker
Browse files

Merge "Clear data from failed commits and recommits properly." into rvc-dev am: fc424b9a

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

Change-Id: I9a403153cb6a4971e61d15b592b9893c99413867
parents 7c40fa81 fc424b9a
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -227,7 +227,8 @@ public class BlobStoreManagerService extends SystemService {
        int n = 0;
        long sessionId;
        do {
            sessionId = Math.abs(mRandom.nextLong());
            final long randomLong = mRandom.nextLong();
            sessionId = (randomLong == Long.MIN_VALUE) ? INVALID_BLOB_ID : Math.abs(randomLong);
            if (mKnownBlobIds.indexOf(sessionId) < 0 && sessionId != INVALID_BLOB_ID) {
                return sessionId;
            }
@@ -647,6 +648,17 @@ public class BlobStoreManagerService extends SystemService {
                                session.getOwnerUid(), blob.getBlobId(), blob.getSize(),
                                FrameworkStatsLog.BLOB_COMMITTED__RESULT__ERROR_DURING_COMMIT);
                        session.sendCommitCallbackResult(COMMIT_RESULT_ERROR);
                        // If the commit fails and this blob data didn't exist before, delete it.
                        // But if it is a recommit, just leave it as is.
                        if (session.getSessionId() == blob.getBlobId()) {
                            deleteBlobLocked(blob);
                            userBlobs.remove(blob.getBlobHandle());
                        }
                    }
                    // Delete redundant data from recommits.
                    if (session.getSessionId() != blob.getBlobId()) {
                        session.getSessionFile().delete();
                        mActiveBlobIds.remove(session.getSessionId());
                    }
                    getUserSessionsLocked(UserHandle.getUserId(session.getOwnerUid()))
                            .remove(session.getSessionId());
@@ -1543,7 +1555,7 @@ public class BlobStoreManagerService extends SystemService {
        public int handleShellCommand(@NonNull ParcelFileDescriptor in,
                @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
                @NonNull String[] args) {
            return (new BlobStoreManagerShellCommand(BlobStoreManagerService.this)).exec(this,
            return new BlobStoreManagerShellCommand(BlobStoreManagerService.this).exec(this,
                    in.getFileDescriptor(), out.getFileDescriptor(), err.getFileDescriptor(), args);
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ class BlobStoreSession extends IBlobStoreSession.Stub {
    private File mSessionFile;

    @GuardedBy("mRevocableFds")
    private ArrayList<RevocableFileDescriptor> mRevocableFds = new ArrayList<>();
    private final ArrayList<RevocableFileDescriptor> mRevocableFds = new ArrayList<>();

    // This will be accessed from only one thread at any point of time, so no need to grab
    // a lock for this.