rgw: finalize reqs through a temporary set

can't call _finish_request() on iter->second when iterating, it clobbers the
map.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
This commit is contained in:
Yehuda Sadeh 2016-03-16 11:45:53 -07:00
parent 40832718fa
commit 1f741716cc

View File

@ -632,9 +632,9 @@ void *RGWHTTPManager::reqs_thread_entry()
}
RWLock::WLocker rl(reqs_lock);
map<uint64_t, rgw_http_req_data *>::iterator iter = reqs.begin();
for (; iter != reqs.end(); ++iter) {
_finish_request(iter->second, -ECANCELED);
auto all_reqs = std::move(reqs);
for (auto iter : all_reqs) {
_finish_request(iter.second, -ECANCELED);
}
reqs.clear();