crimson, os: prevent using ObjectStore instance deployed by wrong flavour of OSD#65209
crimson, os: prevent using ObjectStore instance deployed by wrong flavour of OSD#65209rzarzynski wants to merge 4 commits intoceph:mainfrom
Conversation
Config Diff Tool Output+ added: crimson_osd_objectstore (crimson.yaml.in)
! changed: osd_objectstore: old: ['bluestore', 'filestore', 'memstore', 'seastore', 'cyanstore'] (global.yaml.in)
! changed: osd_objectstore: new: ['bluestore', 'memstore'] (global.yaml.in)
The above configuration changes are found in the PR. Please update the relevant release documentation if necessary. |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
d517613 to
837f083
Compare
|
jenkins retest this please |
1 similar comment
|
jenkins retest this please |
|
|
jenkins test make check |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
| flags: | ||
| - startup | ||
|
|
||
| - name: crimson_osd_objectstore |
There was a problem hiding this comment.
could we hide the distinction from users? we're trying to avoid exposing the alienstore name anyway.
if we kept the osd_objectstore setting the same, and handled the different types of bluestore/memstore internallly, we wouldn't need to modify higher level tools like ceph-volume as well.
There was a problem hiding this comment.
@jdurgin, @Matan-B: it's hard. I see the point behind "candifying" the thing for users which, purely from the developer's point-of-view, I need to dislike because of complexity and unintended side-effects.
Technically speaking, these configurables are disjoint – crimson has its own set of values, completely different from classical's. Sure, by allowing a daemon to signal senseless choices (e.g. seastore for classical) on its own we can bail out. The price is complexity and ugliness – OSD would need to bypass the configuration subsystem's checks and implement its own.
I agree that alienstore-bluestore is too-technical to be exposed to users (maybe crimson-bluestore would be better?) but just blurring the distinction between bluestore and the crimson's variant brought the problem of unintended upgradeability.
Finally, we'll need to ensure that the OSD variants are able to co-exists for the sake of e.g. data migration. This also means testing with heterogeneous vstart.sh clusters where the need to control the configurables separately can be seen even now.
My intuition is that something is missed. Should we introduce a new entity class for crimson (to have dedicated category spanning all crimson instances in the config subsystem)? I bet that managing the mix on the osd-by-osd basis will be burdensome.
There was a problem hiding this comment.
@rzarzynski, I think we misunderstood each other here. Josh comment was regarding hiding the distinction from users prespective of the option name . Meaning to use osd_objectstore and not a dedicated crimson_osd_objectstore.
This change is already merged and is not related to the PR here - and shouldn't block by any means.
I agree with the suggestion above to use crimson-bluestore instead of alienstore-bluestore, as we try to keep alien an internal dev concept.
There was a problem hiding this comment.
I wrote precisely about hiding this distinction. From engineer's POV osd_objectstore is genuinely different from the now-removed crimson_osd_objectstore.
837f083 to
68e921e
Compare
68e921e to
d9f5999
Compare
Matan-B
left a comment
There was a problem hiding this comment.
I think we should try to preserve osd_objectstore for Crimson as well. This would make orch/vol Crimson integration much easier later on.
| // strip the "alienstore-" prefix | ||
| const auto real_type = type.substr(alien_prefix.length()); | ||
| return std::make_unique<AlienStore>(real_type, data, values); | ||
| } else { |
There was a problem hiding this comment.
Should we add an else if here when bluestore is used that crimson-bluestore should be used instead?
I'm afraid: unsupported objectstore type: bluestore might be confusing.
There was a problem hiding this comment.
Yeah, people may (and will) think "bluestore" while we really want to make a distinction at the naming.
This extra clause should be there. I will add a commit.
| enum_values: | ||
| - alienstore-bluestore | ||
| - alienstore-memstore | ||
| - seastore | ||
| - cyanstore | ||
| flags: | ||
| - create |
There was a problem hiding this comment.
This option name (crimson_osd_objectstore) is removed, I think these options should be added to the global osd_objectstore instead.
There was a problem hiding this comment.
What do you think about keeping the singular osd_objectstore but using a crimson- prefix for the dedicated crimson objcet stores?
enum_values:
- bluestore
- memstore
- crimson-bluestore
- crimson-memstore
- crimson-seastore
- crimson-cyanstore
There was a problem hiding this comment.
This looks nice from UI designer's POV.
After putting the engineer's hat I need to point some ugliness in bypassing the generic, config subsystem-level check for this enum.
There are also some worries about heterogeneous clusters and vstart.sh.
There was a problem hiding this comment.
The rebased branch preserves the approach with crimson prefixing at the name of the config option.
I don't see a possibility to unify with the classical – even in the alternative approach (crimson-bluestore, crimson-seastore...) the prefixing is present (just becomes prefixing of values) but at at overall higher cost IMHO: bringing non-sensual choices to classical and compromising the enum(we would have some unsupported values but differentiated depending on OSD). Having thealienstore` word is IMHO useful as it clearly divides what's native and what's ported.
There was a problem hiding this comment.
I'm ok with separating the two into a unique crimson backend option. However, merging this PR as-is would break higher level tools (cephadm/vol). What do you think about moving this change out of this PR and follow-up with a PR that would change the options and adjust the relevant tools usage?
Otherwise, main branch wouldn't be able to deploy crimson via cepadm due to the new option.
There was a problem hiding this comment.
Hmm, this might work as the object store's factory method seems to be decoupled from the type that BlueStore writes in its metadata.
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
|
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. |
d9f5999 to
ddc4f0c
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
…sical Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
ddc4f0c to
27c3f3f
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
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. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job Definition