Bug #14256 ยป bugfix.patch
src/osdc/Objecter.cc | ||
---|---|---|
cop->put();
|
||
}
|
||
if (tick_event) {
|
||
if (timer.cancel_event(tick_event)) {
|
||
if (tick_event.read()) {
|
||
if (timer.cancel_event(tick_event.read())) {
|
||
ldout(cct, 10) << " successfully canceled tick" << dendl;
|
||
tick_event = 0;
|
||
}
|
||
}
|
||
tick_event.set(0);
|
||
if (m_request_state_hook) {
|
||
AdminSocket* admin_socket = cct->get_admin_socket();
|
||
... | ... | |
// Let go of Objecter write lock so timer thread can shutdown
|
||
rwlock.unlock();
|
||
assert(tick_event == 0);
|
||
// Make sure it didn't get rescheduled
|
||
assert(tick_event.read() == 0);
|
||
}
|
||
void Objecter::_send_linger(LingerOp *info)
|
||
... | ... | |
void Objecter::start_tick()
|
||
{
|
||
assert(tick_event == 0);
|
||
tick_event =
|
||
assert(tick_event.read() == 0);
|
||
tick_event.set(
|
||
timer.add_event(ceph::make_timespan(cct->_conf->objecter_tick_interval),
|
||
&Objecter::tick, this);
|
||
&Objecter::tick, this));
|
||
}
|
||
void Objecter::tick()
|
||
... | ... | |
ldout(cct, 10) << "tick" << dendl;
|
||
// we are only called by C_Tick
|
||
assert(tick_event);
|
||
tick_event = 0;
|
||
assert(tick_event.read());
|
||
tick_event.set(0);
|
||
if (!initialized.read()) {
|
||
// we raced with shutdown
|
||
... | ... | |
}
|
||
}
|
||
// reschedule
|
||
tick_event = timer.reschedule_me(ceph::make_timespan(
|
||
cct->_conf->objecter_tick_interval));
|
||
// Make sure we don't resechedule if we wake up after shutdown
|
||
if (initialized.read()) {
|
||
tick_event.set(timer.reschedule_me(ceph::make_timespan(
|
||
cct->_conf->objecter_tick_interval)));
|
||
}
|
||
}
|
||
void Objecter::resend_mon_ops()
|
||
... | ... | |
assert(check_latest_map_ops.empty());
|
||
assert(check_latest_map_commands.empty());
|
||
assert(!tick_event);
|
||
assert(!tick_event.read());
|
||
assert(!m_request_state_hook);
|
||
assert(!logger);
|
||
}
|
src/osdc/Objecter.h | ||
---|---|---|
PerfCounters *logger;
|
||
uint64_t tick_event;
|
||
atomic_t tick_event;
|
||
void start_tick();
|
||
void tick();
|