diff --git a/omaha_request_action.cc b/omaha_request_action.cc
index 8728f72..86d4b93 100644
--- a/omaha_request_action.cc
+++ b/omaha_request_action.cc
@@ -1366,11 +1366,13 @@
   // If EOL date attribute is not sent, don't delete the old persisted EOL
   // date information.
   auto eol_date_attr = attrs.find(kAttrEolDate);
-  if (eol_date_attr != attrs.end() &&
-      !system_state_->prefs()->SetString(kPrefsOmahaEolDate,
-                                         eol_date_attr->second)) {
-    LOG(ERROR) << "Setting EOL date failed.";
-    return false;
+  if (eol_date_attr != attrs.end()) {
+    const auto& eol_date = eol_date_attr->second;
+    if (!system_state_->prefs()->SetString(kPrefsOmahaEolDate, eol_date)) {
+      LOG(ERROR) << "Setting EOL date failed.";
+      return false;
+    }
+    LOG(INFO) << "Set EOL date to " << eol_date;
   }
   return true;
 }
diff --git a/update_attempter.cc b/update_attempter.cc
index 5256192..60c2c36 100644
--- a/update_attempter.cc
+++ b/update_attempter.cc
@@ -1505,7 +1505,9 @@
   out_status->is_install = is_install_;
 
   string str_eol_date;
-  system_state_->prefs()->GetString(kPrefsOmahaEolDate, &str_eol_date);
+  if (system_state_->prefs()->Exists(kPrefsOmahaEolDate) &&
+      !system_state_->prefs()->GetString(kPrefsOmahaEolDate, &str_eol_date))
+    LOG(ERROR) << "Failed to retrieve kPrefsOmahaEolDate pref.";
   out_status->eol_date = StringToEolDate(str_eol_date);
 
   // A powerwash will take place either if the install plan says it is required
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index 745bcc2..0086dd5 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -2343,6 +2343,7 @@
 
 TEST_F(UpdateAttempterTest, FutureEolTest) {
   EolDate eol_date = std::numeric_limits<int64_t>::max();
+  EXPECT_CALL(*prefs_, Exists(kPrefsOmahaEolDate)).WillOnce(Return(true));
   EXPECT_CALL(*prefs_, GetString(kPrefsOmahaEolDate, _))
       .WillOnce(
           DoAll(SetArgPointee<1>(EolDateToString(eol_date)), Return(true)));
@@ -2354,6 +2355,7 @@
 
 TEST_F(UpdateAttempterTest, PastEolTest) {
   EolDate eol_date = 1;
+  EXPECT_CALL(*prefs_, Exists(kPrefsOmahaEolDate)).WillOnce(Return(true));
   EXPECT_CALL(*prefs_, GetString(kPrefsOmahaEolDate, _))
       .WillOnce(
           DoAll(SetArgPointee<1>(EolDateToString(eol_date)), Return(true)));
@@ -2364,13 +2366,21 @@
 }
 
 TEST_F(UpdateAttempterTest, FailedEolTest) {
-  EolDate eol_date = kEolDateInvalid;
+  EXPECT_CALL(*prefs_, Exists(kPrefsOmahaEolDate)).WillOnce(Return(true));
   EXPECT_CALL(*prefs_, GetString(kPrefsOmahaEolDate, _))
       .WillOnce(Return(false));
 
   UpdateEngineStatus status;
   attempter_.GetStatus(&status);
-  EXPECT_EQ(eol_date, status.eol_date);
+  EXPECT_EQ(kEolDateInvalid, status.eol_date);
+}
+
+TEST_F(UpdateAttempterTest, MissingEolTest) {
+  EXPECT_CALL(*prefs_, Exists(kPrefsOmahaEolDate)).WillOnce(Return(false));
+
+  UpdateEngineStatus status;
+  attempter_.GetStatus(&status);
+  EXPECT_EQ(kEolDateInvalid, status.eol_date);
 }
 
 TEST_F(UpdateAttempterTest, CalculateDlcParamsInstallTest) {
