Refetch manifest/matrix on error.

Whether because of contention, I/O error, resource error, ENOMEM,
needing to re-read a file, or other issue, due to the criticality of
this path, re-fetching the manifest on error.

Bug: 151696835
Test: w/ patch simulating error on first hal manifest call.
Change-Id: If9c6e343c9ffc43987b03ce1fde5222867cabf0c
Merged-In: If9c6e343c9ffc43987b03ce1fde5222867cabf0c
diff --git a/VintfObject.cpp b/VintfObject.cpp
index 4bd684e..13e2f5c 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -57,6 +57,7 @@
         std::string error;
         status_t status = fetchAllInformation(ptr->object.get(), &error);
         if (status == OK) {
+            ptr->fetchedOnce = true;
             LOG(INFO) << id << ": Successfully processed VINTF information";
         } else {
             // Doubled because a malformed error std::string might cause us to
@@ -65,7 +66,6 @@
             LOG(ERROR) << id << ": " << status << " VINTF parse error: " << error;
             ptr->object = nullptr; // frees the old object
         }
-        ptr->fetchedOnce = true;
     }
     return ptr->object;
 }