Loading init/builtins.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -1304,8 +1304,7 @@ static Result<void> do_perform_apex_config(const BuiltinArguments& args) { } if (!bootstrap) { // Now start delayed services ServiceList::GetInstance().MarkServicesUpdate(); ServiceList::GetInstance().StartDelayedServices(); } return {}; } Loading init/service.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -420,7 +420,7 @@ Result<void> Service::ExecStart() { } }); if (is_updatable() && !ServiceList::GetInstance().IsServicesUpdated()) { if (is_updatable() && !IsDefaultMountNamespaceReady()) { // Don't delay the service for ExecStart() as the semantic is that // the caller might depend on the side effect of the execution. return Error() << "Cannot start an updatable service '" << name_ Loading Loading @@ -581,7 +581,7 @@ Result<void> Service::Start() { } }); if (is_updatable() && !ServiceList::GetInstance().IsServicesUpdated()) { if (is_updatable() && !IsDefaultMountNamespaceReady()) { ServiceList::GetInstance().DelayService(*this); return Error() << "Cannot start an updatable service '" << name_ << "' before configs from APEXes are all loaded. " Loading init/service_list.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -76,10 +76,7 @@ bool ServiceList::IsPostData() { return post_data_; } void ServiceList::MarkServicesUpdate() { services_update_finished_ = true; // start the delayed services void ServiceList::StartDelayedServices() { for (const auto& name : delayed_service_names_) { Service* service = FindService(name); if (service == nullptr) { Loading @@ -94,7 +91,7 @@ void ServiceList::MarkServicesUpdate() { } void ServiceList::DelayService(const Service& service) { if (services_update_finished_) { if (IsDefaultMountNamespaceReady()) { LOG(ERROR) << "Cannot delay the start of service '" << service.name() << "' because all services are already updated. Ignoring."; return; Loading init/service_list.h +2 −7 Original line number Diff line number Diff line Loading @@ -85,14 +85,10 @@ class ServiceList { void MarkPostData(); bool IsPostData(); void MarkServicesUpdate(); bool IsServicesUpdated() const { return services_update_finished_; } void DelayService(const Service& service); void StartDelayedServices(); void ResetState() { post_data_ = false; services_update_finished_ = false; } void ResetState() { post_data_ = false; } auto size() const { return services_.size(); } Loading @@ -100,7 +96,6 @@ class ServiceList { std::vector<std::unique_ptr<Service>> services_; bool post_data_ = false; bool services_update_finished_ = false; std::vector<std::string> delayed_service_names_; }; Loading Loading
init/builtins.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -1304,8 +1304,7 @@ static Result<void> do_perform_apex_config(const BuiltinArguments& args) { } if (!bootstrap) { // Now start delayed services ServiceList::GetInstance().MarkServicesUpdate(); ServiceList::GetInstance().StartDelayedServices(); } return {}; } Loading
init/service.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -420,7 +420,7 @@ Result<void> Service::ExecStart() { } }); if (is_updatable() && !ServiceList::GetInstance().IsServicesUpdated()) { if (is_updatable() && !IsDefaultMountNamespaceReady()) { // Don't delay the service for ExecStart() as the semantic is that // the caller might depend on the side effect of the execution. return Error() << "Cannot start an updatable service '" << name_ Loading Loading @@ -581,7 +581,7 @@ Result<void> Service::Start() { } }); if (is_updatable() && !ServiceList::GetInstance().IsServicesUpdated()) { if (is_updatable() && !IsDefaultMountNamespaceReady()) { ServiceList::GetInstance().DelayService(*this); return Error() << "Cannot start an updatable service '" << name_ << "' before configs from APEXes are all loaded. " Loading
init/service_list.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -76,10 +76,7 @@ bool ServiceList::IsPostData() { return post_data_; } void ServiceList::MarkServicesUpdate() { services_update_finished_ = true; // start the delayed services void ServiceList::StartDelayedServices() { for (const auto& name : delayed_service_names_) { Service* service = FindService(name); if (service == nullptr) { Loading @@ -94,7 +91,7 @@ void ServiceList::MarkServicesUpdate() { } void ServiceList::DelayService(const Service& service) { if (services_update_finished_) { if (IsDefaultMountNamespaceReady()) { LOG(ERROR) << "Cannot delay the start of service '" << service.name() << "' because all services are already updated. Ignoring."; return; Loading
init/service_list.h +2 −7 Original line number Diff line number Diff line Loading @@ -85,14 +85,10 @@ class ServiceList { void MarkPostData(); bool IsPostData(); void MarkServicesUpdate(); bool IsServicesUpdated() const { return services_update_finished_; } void DelayService(const Service& service); void StartDelayedServices(); void ResetState() { post_data_ = false; services_update_finished_ = false; } void ResetState() { post_data_ = false; } auto size() const { return services_.size(); } Loading @@ -100,7 +96,6 @@ class ServiceList { std::vector<std::unique_ptr<Service>> services_; bool post_data_ = false; bool services_update_finished_ = false; std::vector<std::string> delayed_service_names_; }; Loading