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

Commit f18d183f authored by Gavin Corkery's avatar Gavin Corkery
Browse files

Extend dumpstate.dry_run restrictions

Ensure that dumpstate runs quicker in dry run mode by
only printing the dumpsys headers/footers, and not
adding ANRs or tombstones to the bugreport.

Test: adb shell setprop dumpstate.dry_run true; adb bugreport
Bug: 196864582
Change-Id: Ib43a5e55ea05db368c9b84a3b9f32a263b9224bd
parent b329eca2
Loading
Loading
Loading
Loading
+26 −17
Original line number Original line Diff line number Diff line
@@ -1236,6 +1236,10 @@ static Dumpstate::RunStatus RunDumpsysTextByPriority(const std::string& title, i
        std::string path(title);
        std::string path(title);
        path.append(" - ").append(String8(service).c_str());
        path.append(" - ").append(String8(service).c_str());
        size_t bytes_written = 0;
        size_t bytes_written = 0;
        if (PropertiesHelper::IsDryRun()) {
             dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority);
             dumpsys.writeDumpFooter(STDOUT_FILENO, service, std::chrono::milliseconds(1));
        } else {
            status_t status = dumpsys.startDumpThread(Dumpsys::TYPE_DUMP, service, args);
            status_t status = dumpsys.startDumpThread(Dumpsys::TYPE_DUMP, service, args);
            if (status == OK) {
            if (status == OK) {
                dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority);
                dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority);
@@ -1244,15 +1248,18 @@ static Dumpstate::RunStatus RunDumpsysTextByPriority(const std::string& title, i
                    service == String16("meminfo")) {
                    service == String16("meminfo")) {
                    // Use a longer timeout for meminfo, since 30s is not always enough.
                    // Use a longer timeout for meminfo, since 30s is not always enough.
                    status = dumpsys.writeDump(STDOUT_FILENO, service, 60s,
                    status = dumpsys.writeDump(STDOUT_FILENO, service, 60s,
                                           /* as_proto = */ false, elapsed_seconds, bytes_written);
                                               /* as_proto = */ false, elapsed_seconds,
                                                bytes_written);
                } else {
                } else {
                    status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout,
                    status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout,
                                           /* as_proto = */ false, elapsed_seconds, bytes_written);
                                               /* as_proto = */ false, elapsed_seconds,
                                                bytes_written);
                }
                }
                dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds);
                dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds);
                bool dump_complete = (status == OK);
                bool dump_complete = (status == OK);
                dumpsys.stopDumpThread(dump_complete);
                dumpsys.stopDumpThread(dump_complete);
            }
            }
        }


        auto elapsed_duration = std::chrono::duration_cast<std::chrono::milliseconds>(
        auto elapsed_duration = std::chrono::duration_cast<std::chrono::milliseconds>(
            std::chrono::steady_clock::now() - start);
            std::chrono::steady_clock::now() - start);
@@ -1831,8 +1838,10 @@ Dumpstate::RunStatus Dumpstate::DumpstateDefaultAfterCritical() {
    }
    }


    /* Run some operations that require root. */
    /* Run some operations that require root. */
    if (!PropertiesHelper::IsDryRun()) {
        ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping());
        ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping());
        ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping());
        ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping());
    }


    ds.AddDir(RECOVERY_DIR, true);
    ds.AddDir(RECOVERY_DIR, true);
    ds.AddDir(RECOVERY_DATA_DIR, true);
    ds.AddDir(RECOVERY_DATA_DIR, true);