Cleaning up resources on mount destruction.
DataLoaderStub's lifetime is controlled externally, but we want to
release resources ASAP.
Bug: b/153874006
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest
Change-Id: I34035f36d1fe4ed0e4916014d859feb7fe2c0a09
diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h
index 8b28bac..bd01d77 100644
--- a/services/incremental/IncrementalService.h
+++ b/services/incremental/IncrementalService.h
@@ -173,13 +173,14 @@
FileSystemControlParcel&& control,
const DataLoaderStatusListener* externalListener);
~DataLoaderStub();
+ // Cleans up the internal state and invalidates DataLoaderStub. Any subsequent calls will
+ // result in an error.
+ void cleanupResources();
bool requestCreate();
bool requestStart();
bool requestDestroy();
- bool waitForDestroy(Clock::duration duration = std::chrono::seconds(60));
-
void onDump(int fd);
MountId id() const { return mId; }
@@ -188,6 +189,8 @@
private:
binder::Status onStatusChanged(MountId mount, int newStatus) final;
+ bool isValid() const { return mId != kInvalidStorageId; }
+
bool create();
bool start();
bool destroy();
@@ -198,10 +201,10 @@
bool fsmStep();
IncrementalService& mService;
- MountId const mId;
- DataLoaderParamsParcel const mParams;
- FileSystemControlParcel const mControl;
- DataLoaderStatusListener const mListener;
+ MountId mId = kInvalidStorageId;
+ DataLoaderParamsParcel mParams;
+ FileSystemControlParcel mControl;
+ DataLoaderStatusListener mListener;
std::mutex mStatusMutex;
std::condition_variable mStatusCondition;