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 <cbodley@redhat.com>
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);
void decode_json(JSONObj *obj);
};
+namespace rgw {
+struct BucketChangeObserver;
+}
+
class RGWDataChangesLog {
CephContext *cct;
RGWRados *store;
+ rgw::BucketChangeObserver *observer = nullptr;
int num_shards;
string *oids;
void mark_modified(int shard_id, const rgw_bucket_shard& bs);
void read_clear_modified(map<int, set<string> > &modified);
+ void set_observer(rgw::BucketChangeObserver *observer) {
+ this->observer = observer;
+ }
+
bool going_down();
};
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) {