From d0d7695ecbfd12aaecc8aec66aacb487b116ac0b Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Tue, 22 Aug 2017 13:08:37 -0700 Subject: Dumpstate: Add tombstone filtering Only package the ten latest tombstones. This recovers the old behavior when tombstones were limited to ten by tombstoned, and ensures that bugreports stay small in size. It is future work to optimize this, e.g., by packaging as many as possible. Bug: 64290162 Test: m Test: adb root && for ((i=0;i<50;i++)) ; do adb shell touch /data/tombstones/tombstone_$i ; done ; adb bugreport test.zip ; unzip -l test.zip | grep tomb Change-Id: I4072b5fbcf1e0314aa3eebeefbadc61d5ec10787 --- cmds/dumpstate/dumpstate.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'cmds/dumpstate/dumpstate.cpp') diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 9e77e8fbcb..b3d628cac5 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -144,10 +144,12 @@ static const CommandOptions AS_ROOT_20 = CommandOptions::WithTimeout(20).AsRoot( * Returns a vector of dump fds under |dir_path| with a given |file_prefix|. * The returned vector is sorted by the mtimes of the dumps. If |limit_by_mtime| * is set, the vector only contains files that were written in the last 30 minutes. + * If |limit_by_count| is set, the vector only contains the ten latest files. */ static std::vector* GetDumpFds(const std::string& dir_path, const std::string& file_prefix, - bool limit_by_mtime) { + bool limit_by_mtime, + bool limit_by_count = true) { const time_t thirty_minutes_ago = ds.now_ - 60 * 30; std::unique_ptr> dump_data(new std::vector()); @@ -190,6 +192,10 @@ static std::vector* GetDumpFds(const std::string& dir_path, std::sort(dump_data->begin(), dump_data->end()); + if (limit_by_count && dump_data->size() > 10) { + dump_data->erase(dump_data->begin() + 10, dump_data->end()); + } + return dump_data.release(); } -- cgit v1.2.3-59-g8ed1b