iorap: Terminate IORap if system_server is down.
Crashing IORap leads to red herring and it's better to terminate it
gracefully.
Bug: 173120206
Test: make and run 'adb shell stop'
Change-Id: I9a9607c02307d0cfb3d7bee7200b63bf9bf55354
diff --git a/src/binder/iiorap_impl.cc b/src/binder/iiorap_impl.cc
index de5a55d..13adcc0 100644
--- a/src/binder/iiorap_impl.cc
+++ b/src/binder/iiorap_impl.cc
@@ -291,8 +291,9 @@
package_manager_ = PackageManagerRemote::Create();
if (package_manager_ == nullptr) {
- LOG(FATAL) << "Failed to get package manager service in IIorapImpl::Impl";
- return;
+ LOG(ERROR) << "Failed to get package manager service in IIorapImpl::Impl."
+ << " Is system_server down?";
+ exit(1);
}
package_change_observer_ =
diff --git a/src/binder/package_manager_remote.cc b/src/binder/package_manager_remote.cc
index daeb6af..46671eb 100644
--- a/src/binder/package_manager_remote.cc
+++ b/src/binder/package_manager_remote.cc
@@ -115,7 +115,7 @@
package_service_ = GetPackageService();
std::this_thread::sleep_for(interval);
if (count * interval >= timeout) {
- LOG(FATAL) << "Fail to create version map in "
+ LOG(ERROR) << "Fail to create version map in "
<< timeout.count()
<< " milliseconds."
<< " Reason: Failed to connect to package manager service."
@@ -151,7 +151,8 @@
});
if (!status.isOk()) {
- LOG(FATAL) << "Cannot register package change observer.";
+ LOG(ERROR) << "Cannot register package change observer. Is system_server down?";
+ exit(1);
}
}
@@ -181,7 +182,8 @@
if (!ReconnectWithTimeout(kTimeoutMs) ||
android::OK != android::IInterface::asBinder(
package_service_.get())->linkToDeath(death_recipient)) {
- LOG(FATAL) << "Failed to register package manager death recipient.";
+ LOG(ERROR) << "Failed to register package manager death recipient. Is system_server down?";
+ exit(1);
}
}