Actions
Bug #37766
closedrados_shutdown hang forever in ~objecter()
Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
Performance/Resource Usage
Target version:
-
% Done:
0%
Source:
Community (dev)
Tags:
Backport:
luminous,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
rbd
Component(RADOS):
Objecter
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
we use tbd todo some test over, and shutdown our client, then it hang for a long time, and did't go on ever.
it looks like code has some question :
src/common/ceph_timer.h
void timer_thread() {
...
l.unlock();
e.f();
l.lock();
...
if (schedule.empty())
cond.wait(l);
else
cond.wait_until(l, schedule.begin()->t);
...
}
~timer() {
suspend();
cancel_all_events();
}
// Suspend operation of the timer (and let its thread die).
void suspend() {
unique_lock l(lock);
if (suspended)
return;
suspended = true;
cond.notify_one();
l.unlock();
thread.join();
}
once called suspend ,but thread is in e.f(),
and schedule is empty, it will hang forever.
shutdown will not go on.
Files
Updated by Kefu Chai over 5 years ago
- Status changed from New to Fix Under Review
- Target version deleted (
v10.2.11) - Backport set to luminous,mimic
Updated by Kefu Chai about 5 years ago
- Status changed from Fix Under Review to Pending Backport
Updated by Nathan Cutler about 5 years ago
- Copied to Backport #38398: mimic: rados_shutdown hang forever in ~objecter() added
Updated by Nathan Cutler about 5 years ago
- Copied to Backport #38400: luminous: rados_shutdown hang forever in ~objecter() added
Updated by Nathan Cutler about 5 years ago
- Status changed from Pending Backport to Resolved
Actions