Clean up lifecycle thread

Make sure that the lifecycle thread is terminated and all memory is
cleaned up on shutdown.

Signed-off-by: Daniel Gryniewicz <dang@redhat.com>
This commit is contained in:
Daniel Gryniewicz 2016-07-28 14:39:07 -04:00
parent bacc5b089c
commit bc299e56e4
3 changed files with 9 additions and 1 deletions

View File

@ -474,6 +474,7 @@ void RGWLC::start_processor()
void RGWLC::stop_processor()
{
down_flag.set(1);
if (worker) {
worker->stop();
worker->join();
@ -490,7 +491,7 @@ void RGWLC::LCWorker::stop()
bool RGWLC::going_down()
{
return false;
return (down_flag.read() != 0);
}
bool RGWLC::LCWorker::should_work(utime_t& now)

View File

@ -179,6 +179,7 @@ class RGWLC {
RGWRados *store;
int max_objs;
string *obj_names;
atomic_t down_flag;
class LCWorker : public Thread {
CephContext *cct;

View File

@ -3176,6 +3176,12 @@ void RGWRados::finalize()
delete gc;
gc = NULL;
if (use_lc_thread) {
lc->stop_processor();
}
delete lc;
lc = NULL;
delete obj_expirer;
obj_expirer = NULL;