diff options
author | Ben Caimano <ben.caimano@mongodb.com> | 2020-01-14 01:51:01 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2020-01-14 01:51:01 +0000 |
commit | 62c19f930324492012d728c075b6fcd008cb4809 (patch) | |
tree | ab9e5d7a84aba9bd61e39f281a184dc59260cdcf /src/mongo/transport/baton_asio_linux.h | |
parent | 884e039ff713afedb32b8f49109b95f67cd88525 (diff) | |
download | mongo-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.h | 5 |
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(); } |