Revert "Remove kPrefsDynamicPartitionMetadataInitialized."
This reverts commit 09f6e0f8f5340e2e8f6bf14e08adf25798eab360.
Reason for revert: Should not re-initialize metadata when resuming
from an update.
Bug: 120465293
Bug: 120775936
Test: manual OTA, interrupt and resume
Change-Id: Ib1626dfa4a766e9a5ffaf2d9d74ec2b04c76052d
diff --git a/common/constants.cc b/common/constants.cc
index 4bca105..3ae7a60 100644
--- a/common/constants.cc
+++ b/common/constants.cc
@@ -37,6 +37,8 @@
const char kPrefsDailyMetricsLastReportedAt[] =
"daily-metrics-last-reported-at";
const char kPrefsDeltaUpdateFailures[] = "delta-update-failures";
+const char kPrefsDynamicPartitionMetadataInitialized[] =
+ "dynamic-partition-metadata-initialized";
const char kPrefsFullPayloadAttemptNumber[] = "full-payload-attempt-number";
const char kPrefsInstallDateDays[] = "install-date-days";
const char kPrefsLastActivePingDay[] = "last-active-ping-day";
diff --git a/common/constants.h b/common/constants.h
index 1057a65..61e5ddd 100644
--- a/common/constants.h
+++ b/common/constants.h
@@ -41,6 +41,7 @@
extern const char kPrefsCurrentUrlIndex[];
extern const char kPrefsDailyMetricsLastReportedAt[];
extern const char kPrefsDeltaUpdateFailures[];
+extern const char kPrefsDynamicPartitionMetadataInitialized[];
extern const char kPrefsFullPayloadAttemptNumber[];
extern const char kPrefsInstallDateDays[];
extern const char kPrefsLastActivePingDay[];
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index 2ff9df0..3cce4d2 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -935,6 +935,14 @@
}
bool DeltaPerformer::InitPartitionMetadata() {
+ bool metadata_initialized;
+ if (prefs_->GetBoolean(kPrefsDynamicPartitionMetadataInitialized,
+ &metadata_initialized) &&
+ metadata_initialized) {
+ LOG(INFO) << "Skipping InitPartitionMetadata.";
+ return true;
+ }
+
BootControlInterface::PartitionMetadata partition_metadata;
if (manifest_.has_dynamic_partition_metadata()) {
std::map<string, uint64_t> partition_sizes;
@@ -968,6 +976,8 @@
<< BootControlInterface::SlotName(install_plan_->target_slot);
return false;
}
+ TEST_AND_RETURN_FALSE(
+ prefs_->SetBoolean(kPrefsDynamicPartitionMetadataInitialized, true));
LOG(INFO) << "InitPartitionMetadata done.";
return true;
@@ -1891,6 +1901,7 @@
prefs->SetInt64(kPrefsResumedUpdateFailures, 0);
prefs->Delete(kPrefsPostInstallSucceeded);
prefs->Delete(kPrefsVerityWritten);
+ prefs->Delete(kPrefsDynamicPartitionMetadataInitialized);
}
return true;
}
diff --git a/payload_consumer/delta_performer_integration_test.cc b/payload_consumer/delta_performer_integration_test.cc
index ba5fa18..9368e11 100644
--- a/payload_consumer/delta_performer_integration_test.cc
+++ b/payload_consumer/delta_performer_integration_test.cc
@@ -697,6 +697,8 @@
.WillRepeatedly(Return(true));
EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSignedSHA256Context, _))
.WillRepeatedly(Return(true));
+ EXPECT_CALL(prefs, SetBoolean(kPrefsDynamicPartitionMetadataInitialized, _))
+ .WillRepeatedly(Return(true));
if (op_hash_test == kValidOperationData && signature_test != kSignatureNone) {
EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSignatureBlob, _))
.WillOnce(Return(true));