fix data race: delay reset of data hooks until the next sendRequest()

This commit is contained in:
serxa 2024-08-02 13:19:00 +00:00
parent 8724c5ad52
commit 3bff7ddcf8

View File

@ -394,8 +394,12 @@ private:
// Reset data hooks for IO scheduling
if (ResourceLink link = CurrentThread::getReadResourceLink())
Session::setReceiveDataHooks(std::make_shared<ResourceGuardSessionDataHooks>(link, ResourceGuard::Metrics::getIORead(), log, request.getMethod(), request.getURI()));
else
Session::setReceiveDataHooks();
if (ResourceLink link = CurrentThread::getWriteResourceLink())
Session::setSendDataHooks(std::make_shared<ResourceGuardSessionDataHooks>(link, ResourceGuard::Metrics::getIOWrite(), log, request.getMethod(), request.getURI()));
else
Session::setSendDataHooks();
std::ostream & result = Session::sendRequest(request);
result.exceptions(std::ios::badbit);
@ -453,8 +457,6 @@ private:
}
}
response_stream = nullptr;
Session::setSendDataHooks();
Session::setReceiveDataHooks();
group->atConnectionDestroy();