Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d221c251 authored by Steven Moreland's avatar Steven Moreland
Browse files

servicemanager: remove performance hack

See details in TODO.

This hack is either causing a bug or may be preventing us from solving
another bug. Until the more critical bug can be fixed, avoiding
early-boot reads of VINTF manifest files.

Bug: 151696835
Test: run, boot, check manifest logs that HAL services register
Change-Id: Iba34afe451026a30e695d6728b4172007aaf7fbd
Merged-In: Iba34afe451026a30e695d6728b4172007aaf7fbd
parent d838f693
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -72,13 +72,20 @@ static bool meetsDeclarationRequirements(const sp<IBinder>& binder, const std::s
#endif  // !VENDORSERVICEMANAGER

ServiceManager::ServiceManager(std::unique_ptr<Access>&& access) : mAccess(std::move(access)) {
#ifndef VENDORSERVICEMANAGER
    // can process these at any times, don't want to delay first VINTF client
    std::thread([] {
        vintf::VintfObject::GetDeviceHalManifest();
        vintf::VintfObject::GetFrameworkHalManifest();
    }).detach();
#endif  // !VENDORSERVICEMANAGER
// TODO(b/151696835): reenable performance hack when we solve bug, since with
//     this hack and other fixes, it is unlikely we will see even an ephemeral
//     failure when the manifest parse fails. The goal is that the manifest will
//     be read incorrectly and cause the process trying to register a HAL to
//     fail. If this is in fact an early boot kernel contention issue, then we
//     will get no failure, and by its absence, be signalled to invest more
//     effort in re-adding this performance hack.
// #ifndef VENDORSERVICEMANAGER
//     // can process these at any times, don't want to delay first VINTF client
//     std::thread([] {
//         vintf::VintfObject::GetDeviceHalManifest();
//         vintf::VintfObject::GetFrameworkHalManifest();
//     }).detach();
// #endif  // !VENDORSERVICEMANAGER
}
ServiceManager::~ServiceManager() {
    // this should only happen in tests