-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rgw: disable RGWDataChangesLog::add_entry() when log_data is off #45357
Conversation
this restores a check for RGWZone::log_data in add_entry(). with per-bucket replication, this check was replaced by a call to `RGWBucketSyncPolicyHandler::bucket_exports_data()` this call has to consult two rados objects, `bucket.sync-source-hints.<bucketname>` and `bucket.sync-target-hints.<bucketname>` but if the zone is not configured for multisite, we should avoid these extra object reads and return early Fixes: https://tracker.ceph.com/issues/54531 Signed-off-by: Casey Bodley <cbodley@redhat.com>
@yehudasa i know that someday we'll be able to support sync between buckets in the same zone, but for now i don't think it's necessary to consult these sync policy objects outside of multisite? |
It is likely that you will break certain cases in bucket level sync this way. The "configured for multisite" hammer is too loosely defined and too big IMO. |
can you be more specific?
this particular hammer is |
ping @yehudasa |
The idea is not to need to configure sync in multiple places. How about you change that flag to a 3 state, and by default it's not defined (in which case it relies exclusively on sync policy). If true/false would mean that user explicitly had set it. In the case of sync policy, can check on init whether zone allows sync out, if it does not then can change flag to false. |
thanks @yehudasa. i'm still fuzzy on sync policy, can you please check my understanding here?
i'm guessing that 'allowed' is the default, so you can attach a new zone later without having to update this zone's policy? if that's the intent, shouldn't we at least make this 'allowed' behavior conditional on the presence of other zones? the 'presence of other zones' is essentially all that if i am understanding the intent of the 'allowed' sync policy here, then it seems to compose just fine with the
i'm not sure what you're suggesting with the third state for |
The decision depends on it iirc. A bucket policy by itself cannot know that there is/isn't another bucket that has a policy that fetches data from it, that's why we need the hints (that point at other buckets that may sync from us). |
ok, so back to if there's no other zone attached, then nobody is going to read those logs. if another zone attaches later, it must start with a full sync and skip past these entries anyway isn't |
do you have any suggestions here @yehudasa? |
jenkins test make check |
do we have bucket sync policy tests in teuthology? |
no, i merged #31686 for octopus under the condition that tests would follow, but they didn't |
Note this PR that is still pending: |
this is from the end of 2020 ! |
this restores a check for RGWZone::log_data in add_entry(). with per-bucket replication, this check was replaced by a call to
RGWBucketSyncPolicyHandler::bucket_exports_data()
this call has to consult two rados objects,
bucket.sync-source-hints.<bucketname>
andbucket.sync-target-hints.<bucketname>
but if the zone is not configured for multisite, we should avoid these extra object reads and return early
Fixes: https://tracker.ceph.com/issues/54531
Show available Jenkins commands
jenkins retest this please
jenkins test classic perf
jenkins test crimson perf
jenkins test signed
jenkins test make check
jenkins test make check arm64
jenkins test submodules
jenkins test dashboard
jenkins test dashboard cephadm
jenkins test api
jenkins test docs
jenkins render docs
jenkins test ceph-volume all
jenkins test ceph-volume tox
jenkins test windows