common, doc: document retirement of client-exposed feature bits#51488
common, doc: document retirement of client-exposed feature bits#51488rzarzynski wants to merge 1 commit intoceph:mainfrom
Conversation
| * 2) For feature bits that were *anyhow* exposed to clients (even through | ||
| * a common part like OSDMap), the requirements are stricter: instead of | ||
| * the n-2 rule we have for the inter-daemon communication, for clients | ||
| * we *guarantee* compatibility up n-3 major upstream versions. To exemplify: |
There was a problem hiding this comment.
Hmm, if the DEPRECATED macros and MASK stuff doesn't make it "do the right thing" for random clients, I think feature bits which are client-visible are just...not reusable or able to be retired.
@athanatos @jdurgin do either of you remember much of the planning around feature bit retirement? I don't think I got involved in its development, but I think I would have noticed if we went from "all clients meeting the admin-configurable min_compat_client" to "3 versions, and incredibly messy for the kernel". I'm sure @idryomov has thoughts about that.
There was a problem hiding this comment.
Hrm, I don't remember, I'd need to take a bit of time and think it through.
There was a problem hiding this comment.
Client-facing feature bits can't really be retired in an orderly fashion, so any N-<something> rule is bound to not work, exactly because
we have little control over kernel versions and user-space libraries within third party's containers (old librbd, ceph-fuse and so on).
We have done this only once before, slurping up all argonaut-ish feature bits. I suppose we could do this again for pre-hammer feature bits some time soon but this would have to be an ad-hoc, review each feature bit sort of thing. If the intent is to document the procedure, I would rather document that there is no procedure and go with something like
For feature bits that were anyhow exposed to clients (even through a common part like OSDMap): don't touch the ones that are already there, think hard before introducing a new one, assume a lifetime of at least 10 years.
There was a problem hiding this comment.
Thanks for the input, Ilya!
My intention is just to document the state of the thing – discover & document. I'm aware that another views (i.e. n - 3 as as hard guarantee) also exist. I think it would be good to describe also how mon_osd_initial_require_min_compat_client interplays here.
CC: @gregsfortytwo, @athanatos, @jdurgin.
There was a problem hiding this comment.
require_min_compat_client is only tangentially related: it's a setting that is intended to prevent an administrator from accidentally enabling features that older clients would choke on (i.e. features that would prevent older clients from connection to the cluster). The fact that it's set to luminous by default doesn't mean much: in the end it's based on the same feature bits, many of which can be manipulated in isolation.
There was a problem hiding this comment.
To be clear: it's possible to have e.g. hammer-era clients connect to a reef cluster after making some adjustments (mostly regarding CRUSH tunables) no matter what require_min_compat_client is set to.
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
17a0cbf to
c6d871c
Compare
c6d871c to
3d0a182
Compare
3d0a182 to
6aeeb21
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
d22fa85 to
d3be8b0
Compare
|
I dissected the kick off related commit into #53191 and renamed the PR to keep the discussion on about client-exposed feature bits. |
|
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
|
This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution! |
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "pacific"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windows