From f3c258c49ff6899433e742b10554c83413d64a8a Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 20 Sep 2018 11:34:42 -0400 Subject: [PATCH] rgw: add BucketChangeObserver to RGWDataChangesLog this means that BucketTrimManager will track active buckets based on local changes, rather than changes in remote datalogs or error repos Fixes: http://tracker.ceph.com/issues/36034 Signed-off-by: Casey Bodley --- src/rgw/rgw_bucket.cc | 4 ++++ src/rgw/rgw_bucket.h | 9 +++++++++ src/rgw/rgw_rados.cc | 1 + 3 files changed, 14 insertions(+) diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 14828ce9bad43..fc44adeac669c 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -1799,6 +1799,10 @@ int RGWDataChangesLog::add_entry(rgw_bucket& bucket, int shard_id) { if (!store->need_to_log_data()) return 0; + if (observer) { + observer->on_bucket_changed(bucket.get_key()); + } + rgw_bucket_shard bs(bucket, shard_id); int index = choose_oid(bs); diff --git a/src/rgw/rgw_bucket.h b/src/rgw/rgw_bucket.h index f66295eb797cb..f878097c65f25 100644 --- a/src/rgw/rgw_bucket.h +++ b/src/rgw/rgw_bucket.h @@ -408,9 +408,14 @@ struct RGWDataChangesLogInfo { void decode_json(JSONObj *obj); }; +namespace rgw { +struct BucketChangeObserver; +} + class RGWDataChangesLog { CephContext *cct; RGWRados *store; + rgw::BucketChangeObserver *observer = nullptr; int num_shards; string *oids; @@ -521,6 +526,10 @@ public: void mark_modified(int shard_id, const rgw_bucket_shard& bs); void read_clear_modified(map > &modified); + void set_observer(rgw::BucketChangeObserver *observer) { + this->observer = observer; + } + bool going_down(); }; diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 69f4f64384e94..0e7346a3529f4 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -4666,6 +4666,7 @@ int RGWRados::init_complete() ldout(cct, 0) << "ERROR: failed to start bucket trim manager" << dendl; return ret; } + data_log->set_observer(&*bucket_trim); Mutex::Locker dl(data_sync_thread_lock); for (auto iter : zone_data_sync_from_map) { -- 2.39.5