diff options
author | 2021-09-14 14:32:29 +0000 | |
---|---|---|
committer | 2021-09-14 14:32:29 +0000 | |
commit | 2d231cebb7627746259eaca13c39fa6baba47ed3 (patch) | |
tree | 1cdb94e3141fc4c0b83fb0f005e4aeac9cdc24ac | |
parent | a6efb77a590aba4bc7929b0e87a506c74e27e05d (diff) | |
parent | c9de1851a3d15955a8aa8c5db3ec51dd2b3f06b0 (diff) |
Merge "Extend dumpstate.dry_run restrictions" am: a938daa1c6 am: 17852592f0 am: f4b83741a8 am: c9de1851a3
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1808918
Change-Id: I3d93a25f7c457b00bb6900602ba9935e87589f5b
-rw-r--r-- | cmds/dumpstate/dumpstate.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 75505f37a8..eab72f48b0 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -1237,22 +1237,29 @@ static Dumpstate::RunStatus RunDumpsysTextByPriority(const std::string& title, i std::string path(title); path.append(" - ").append(String8(service).c_str()); size_t bytes_written = 0; - status_t status = dumpsys.startDumpThread(Dumpsys::TYPE_DUMP, service, args); - if (status == OK) { - dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority); - std::chrono::duration<double> elapsed_seconds; - if (priority == IServiceManager::DUMP_FLAG_PRIORITY_HIGH && - service == String16("meminfo")) { - // Use a longer timeout for meminfo, since 30s is not always enough. - status = dumpsys.writeDump(STDOUT_FILENO, service, 60s, - /* as_proto = */ false, elapsed_seconds, bytes_written); - } else { - status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout, - /* as_proto = */ false, elapsed_seconds, bytes_written); + 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); + if (status == OK) { + dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority); + std::chrono::duration<double> elapsed_seconds; + if (priority == IServiceManager::DUMP_FLAG_PRIORITY_HIGH && + service == String16("meminfo")) { + // Use a longer timeout for meminfo, since 30s is not always enough. + status = dumpsys.writeDump(STDOUT_FILENO, service, 60s, + /* as_proto = */ false, elapsed_seconds, + bytes_written); + } else { + status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout, + /* as_proto = */ false, elapsed_seconds, + bytes_written); + } + dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds); + bool dump_complete = (status == OK); + dumpsys.stopDumpThread(dump_complete); } - dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds); - bool dump_complete = (status == OK); - dumpsys.stopDumpThread(dump_complete); } auto elapsed_duration = std::chrono::duration_cast<std::chrono::milliseconds>( @@ -1836,8 +1843,10 @@ Dumpstate::RunStatus Dumpstate::DumpstateDefaultAfterCritical() { } /* Run some operations that require root. */ - ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping()); - ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping()); + if (!PropertiesHelper::IsDryRun()) { + ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping()); + ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping()); + } ds.AddDir(RECOVERY_DIR, true); ds.AddDir(RECOVERY_DATA_DIR, true); |