Journaler::_trim is called in the routine:
PurgeQueue::_execute_item
==>Journaler::write_head
==>Journaler::_finish_write_head
==>Journaler::_trim
so do not register callback in PurgeQueue::_execute_item
to call Journaler::_trim again.
Signed-off-by: Tang Junhui <tangjunhui@sangfor.com>
Fixes: http://tracker.ceph.com/issues/37566
// expire_pos doesn't fall too far behind our progress when consuming
// a very long queue.
if (in_flight.empty() || journaler.write_head_needed()) {
- journaler.write_head(new FunctionContext([this](int r){
- journaler.trim();
- }));
+ journaler.write_head(nullptr);
}
}), &finisher));