Merge "Fixes dumpstate crashed when shutdown the thread pool" am: 6fe1d3d3bb
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1641960 Change-Id: I125ff9bfa76a681d4cd951c390c86189f9ac0726
This commit is contained in:
commit
bb0e037a24
2 changed files with 22 additions and 1 deletions
|
@ -64,8 +64,8 @@ void DumpPool::shutdown() {
|
|||
if (shutdown_ || threads_.empty()) {
|
||||
return;
|
||||
}
|
||||
while (!tasks_.empty()) tasks_.pop();
|
||||
futures_map_.clear();
|
||||
while (!tasks_.empty()) tasks_.pop();
|
||||
|
||||
shutdown_ = true;
|
||||
condition_variable_.notify_all();
|
||||
|
|
|
@ -1762,6 +1762,27 @@ TEST_F(DumpPoolTest, EnqueueTask_withDurationLog) {
|
|||
EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0));
|
||||
}
|
||||
|
||||
TEST_F(DumpPoolTest, Shutdown_withoutCrash) {
|
||||
bool run_1 = false;
|
||||
auto dump_func_1 = [&]() {
|
||||
run_1 = true;
|
||||
};
|
||||
auto dump_func = []() {
|
||||
sleep(1);
|
||||
};
|
||||
|
||||
dump_pool_->start(/* thread_counts = */1);
|
||||
dump_pool_->enqueueTask(/* task_name = */"1", dump_func_1);
|
||||
dump_pool_->enqueueTask(/* task_name = */"2", dump_func);
|
||||
dump_pool_->enqueueTask(/* task_name = */"3", dump_func);
|
||||
dump_pool_->enqueueTask(/* task_name = */"4", dump_func);
|
||||
dump_pool_->waitForTask("1", "", out_fd_.get());
|
||||
dump_pool_->shutdown();
|
||||
|
||||
EXPECT_TRUE(run_1);
|
||||
EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0));
|
||||
}
|
||||
|
||||
class TaskQueueTest : public DumpstateBaseTest {
|
||||
public:
|
||||
void SetUp() {
|
||||
|
|
Loading…
Reference in a new issue