Bug #42217
closedrgw:dmclock: When test rgw dmclock function, it cannot work well.
0%
Description
When I port the rgw dmclock code into our project and test it, I found it doesn't work. All rgw thread will be blocked, and rgw can not proccess any request anymore.
I track this issue, found the process thread is blocked in SyncScheduler::handle_request_cb function, and it is blocked by std::lock_guard<std::mutex> lg(req->req_mtx).
I continue track this issue and found the root cause is in rgw_dmclock_sync_scheduler.cc:line30.
- if (std::unique_lock<std::mutex> lk(req_mtx); rstate != ReqState::Wait) {
+ if (std::unique_lock<std::mutex> lk(req_mtx); rstate == ReqState::Wait) {
the restate initial value is ReqState::Wait, so when rgw_dmclock_sync_scheduler.cc:line 30 , it should wait the mutex lock and block the process request thread. the origin code is !=, it is unreasonable.
I changed it as above, and the dmclock function work well.
Updated by Patrick Donnelly over 4 years ago
- Status changed from 7 to Fix Under Review
Updated by Abhishek Lekshmanan almost 4 years ago
- Status changed from Fix Under Review to Pending Backport
- Backport set to Nautilus, Octopus
Updated by Nathan Cutler almost 4 years ago
- Backport changed from Nautilus, Octopus to nautilus, octopus
ERROR:root:https://tracker.ceph.com/issues/42217 requires backport to unknown release Nautilus
Updated by Nathan Cutler almost 4 years ago
- Copied to Backport #45436: nautilus: rgw:dmclock: When test rgw dmclock function, it cannot work well. added
Updated by Nathan Cutler almost 4 years ago
- Backport changed from nautilus, octopus to nautilus
Already in octopus as of 15.1.1
Updated by Nathan Cutler almost 4 years ago
- Status changed from Pending Backport to Resolved
While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".