summaryrefslogtreecommitdiff
path: root/src/mongo/transport/baton_asio_linux.h
diff options
context:
space:
mode:
authorBen Caimano <ben.caimano@mongodb.com>2020-01-14 01:51:01 +0000
committerevergreen <evergreen@mongodb.com>2020-01-14 01:51:01 +0000
commit62c19f930324492012d728c075b6fcd008cb4809 (patch)
treeab9e5d7a84aba9bd61e39f281a184dc59260cdcf /src/mongo/transport/baton_asio_linux.h
parent884e039ff713afedb32b8f49109b95f67cd88525 (diff)
downloadmongo-62c19f930324492012d728c075b6fcd008cb4809.tar.gz
SERVER-45547 Baton::run() should destroy Tasks outside of lock
Diffstat (limited to 'src/mongo/transport/baton_asio_linux.h')
-rw-r--r--src/mongo/transport/baton_asio_linux.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mongo/transport/baton_asio_linux.h b/src/mongo/transport/baton_asio_linux.h
index 96cf7019523..d036a8a278b 100644
--- a/src/mongo/transport/baton_asio_linux.h
+++ b/src/mongo/transport/baton_asio_linux.h
@@ -267,8 +267,11 @@ public:
auto toRun = std::exchange(_scheduled, {});
lk.unlock();
- for (auto& job : toRun) {
+ while (toRun.size()) {
+ // While there are jobs to run, run and dtor in sequence
+ auto& job = toRun.back();
job(Status::OK());
+ toRun.pop_back();
}
lk.lock();
}