diff options
| -rw-r--r-- | cmds/dumpstate/DumpPool.cpp | 4 | ||||
| -rw-r--r-- | cmds/dumpstate/DumpPool.h | 5 | ||||
| -rw-r--r-- | cmds/dumpstate/dumpstate.cpp | 9 |
3 files changed, 18 insertions, 0 deletions
diff --git a/cmds/dumpstate/DumpPool.cpp b/cmds/dumpstate/DumpPool.cpp index e174c8eff3..e15ac3fe82 100644 --- a/cmds/dumpstate/DumpPool.cpp +++ b/cmds/dumpstate/DumpPool.cpp @@ -100,6 +100,10 @@ void DumpPool::waitForTask(const std::string& task_name, const std::string& titl } } +void DumpPool::deleteTempFiles() { + deleteTempFiles(tmp_root_); +} + void DumpPool::setLogDuration(bool log_duration) { log_duration_ = log_duration; } diff --git a/cmds/dumpstate/DumpPool.h b/cmds/dumpstate/DumpPool.h index a4ea875541..0c3c2cc0d7 100644 --- a/cmds/dumpstate/DumpPool.h +++ b/cmds/dumpstate/DumpPool.h @@ -134,6 +134,11 @@ class DumpPool { */ void waitForTask(const std::string& task_name, const std::string& title, int out_fd); + /* + * Deletes temporary files created by DumpPool. + */ + void deleteTempFiles(); + static const std::string PREFIX_TMPFILE_NAME; private: diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 0fba40e2e7..eefc84f0f1 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -2689,6 +2689,15 @@ void Dumpstate::Cancel() { } tombstone_data_.clear(); anr_data_.clear(); + + // Instead of shutdown the pool, we delete temporary files directly since + // shutdown blocking the call. + if (dump_pool_) { + dump_pool_->deleteTempFiles(); + } + if (zip_entry_tasks_) { + zip_entry_tasks_->run(/*do_cancel =*/ true); + } } /* |