diff options
author | Sudheer Shanka <sudheersai@google.com> | 2020-06-05 22:42:56 -0700 |
---|---|---|
committer | Sudheer Shanka <sudheersai@google.com> | 2020-06-16 15:35:52 -0700 |
commit | 7535154473d9b88a3fc0cfbbd9cf8e49ffe0b886 (patch) | |
tree | dcd24cf006049b3fc76da01a7bde0c43e59d1443 /apex/blobstore | |
parent | 384982ef624aa2da3129455546978a3c18551c3a (diff) |
Include blob sizes in blob_store service dump.
+ Correctly synchronize a couple of methods
(used for debugging) which were missing the locking.
+ Log entries deleted during idle maintenance window
which happens at most once every 24 hrs.
Fixes: 158351456
Test: atest --test-mapping apex/blobstore
Change-Id: I5d1a1ffc28b009274d981d1ccdac30092d4c3732
Diffstat (limited to 'apex/blobstore')
3 files changed, 56 insertions, 48 deletions
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java b/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java index 7e8c90632fd9..1193ae9cf990 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java @@ -29,6 +29,8 @@ import static android.app.blob.XmlTags.TAG_COMMITTER; import static android.app.blob.XmlTags.TAG_LEASEE; import static android.os.Process.INVALID_UID; import static android.system.OsConstants.O_RDONLY; +import static android.text.format.Formatter.FLAG_IEC_UNITS; +import static android.text.format.Formatter.formatFileSize; import static com.android.server.blob.BlobStoreConfig.TAG; import static com.android.server.blob.BlobStoreConfig.XML_VERSION_ADD_COMMIT_TIME; @@ -335,7 +337,9 @@ class BlobMetadata { } void forEachLeasee(Consumer<Leasee> consumer) { - mLeasees.forEach(consumer); + synchronized (mMetadataLock) { + mLeasees.forEach(consumer); + } } File getBlobFile() { @@ -460,54 +464,57 @@ class BlobMetadata { } void dump(IndentingPrintWriter fout, DumpArgs dumpArgs) { - fout.println("blobHandle:"); - fout.increaseIndent(); - mBlobHandle.dump(fout, dumpArgs.shouldDumpFull()); - fout.decreaseIndent(); - - fout.println("Committers:"); - fout.increaseIndent(); - if (mCommitters.isEmpty()) { - fout.println("<empty>"); - } else { - for (int i = 0, count = mCommitters.size(); i < count; ++i) { - final Committer committer = mCommitters.valueAt(i); - fout.println("committer " + committer.toString()); - fout.increaseIndent(); - committer.dump(fout); - fout.decreaseIndent(); + synchronized (mMetadataLock) { + fout.println("blobHandle:"); + fout.increaseIndent(); + mBlobHandle.dump(fout, dumpArgs.shouldDumpFull()); + fout.decreaseIndent(); + fout.println("size: " + formatFileSize(mContext, getSize(), FLAG_IEC_UNITS)); + + fout.println("Committers:"); + fout.increaseIndent(); + if (mCommitters.isEmpty()) { + fout.println("<empty>"); + } else { + for (int i = 0, count = mCommitters.size(); i < count; ++i) { + final Committer committer = mCommitters.valueAt(i); + fout.println("committer " + committer.toString()); + fout.increaseIndent(); + committer.dump(fout); + fout.decreaseIndent(); + } } - } - fout.decreaseIndent(); + fout.decreaseIndent(); - fout.println("Leasees:"); - fout.increaseIndent(); - if (mLeasees.isEmpty()) { - fout.println("<empty>"); - } else { - for (int i = 0, count = mLeasees.size(); i < count; ++i) { - final Leasee leasee = mLeasees.valueAt(i); - fout.println("leasee " + leasee.toString()); - fout.increaseIndent(); - leasee.dump(mContext, fout); - fout.decreaseIndent(); + fout.println("Leasees:"); + fout.increaseIndent(); + if (mLeasees.isEmpty()) { + fout.println("<empty>"); + } else { + for (int i = 0, count = mLeasees.size(); i < count; ++i) { + final Leasee leasee = mLeasees.valueAt(i); + fout.println("leasee " + leasee.toString()); + fout.increaseIndent(); + leasee.dump(mContext, fout); + fout.decreaseIndent(); + } } - } - fout.decreaseIndent(); - - fout.println("Open fds:"); - fout.increaseIndent(); - if (mRevocableFds.isEmpty()) { - fout.println("<empty>"); - } else { - for (int i = 0, count = mRevocableFds.size(); i < count; ++i) { - final String packageName = mRevocableFds.keyAt(i); - final ArraySet<RevocableFileDescriptor> packageFds = - mRevocableFds.valueAt(i); - fout.println(packageName + "#" + packageFds.size()); + fout.decreaseIndent(); + + fout.println("Open fds:"); + fout.increaseIndent(); + if (mRevocableFds.isEmpty()) { + fout.println("<empty>"); + } else { + for (int i = 0, count = mRevocableFds.size(); i < count; ++i) { + final String packageName = mRevocableFds.keyAt(i); + final ArraySet<RevocableFileDescriptor> packageFds = + mRevocableFds.valueAt(i); + fout.println(packageName + "#" + packageFds.size()); + } } + fout.decreaseIndent(); } - fout.decreaseIndent(); } void writeToXml(XmlSerializer out) throws IOException { diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java index 381efc10b416..78eab0b0a21e 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java @@ -1070,10 +1070,8 @@ public class BlobStoreManagerService extends SystemService { return shouldRemove; }); } - if (LOGV) { - Slog.v(TAG, "Completed idle maintenance; deleted " - + Arrays.toString(deletedBlobIds.toArray())); - } + Slog.d(TAG, "Completed idle maintenance; deleted " + + Arrays.toString(deletedBlobIds.toArray())); writeBlobSessionsAsync(); } diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java index 77ca4aa7a9e6..00983058841c 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java @@ -27,6 +27,8 @@ import static android.system.OsConstants.O_CREAT; import static android.system.OsConstants.O_RDONLY; import static android.system.OsConstants.O_RDWR; import static android.system.OsConstants.SEEK_SET; +import static android.text.format.Formatter.FLAG_IEC_UNITS; +import static android.text.format.Formatter.formatFileSize; import static com.android.server.blob.BlobStoreConfig.TAG; import static com.android.server.blob.BlobStoreConfig.XML_VERSION_ADD_SESSION_CREATION_TIME; @@ -533,6 +535,7 @@ class BlobStoreSession extends IBlobStoreSession.Stub { fout.println("ownerUid: " + mOwnerUid); fout.println("ownerPkg: " + mOwnerPackageName); fout.println("creation time: " + BlobStoreUtils.formatTime(mCreationTimeMs)); + fout.println("size: " + formatFileSize(mContext, getSize(), FLAG_IEC_UNITS)); fout.println("blobHandle:"); fout.increaseIndent(); |