-
Notifications
You must be signed in to change notification settings - Fork 588
HDDS-11596. Add Feature Bitmap to OzoneManagerVersion for Compatibility Checks #7326
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
Conversation
|
@adoroszlai @tanvipenumudy @fapifta PTAL thanks. |
|
I think #7161 shouldn't have added a new version. It should have used the first version that was added after #5275 (i.e. Since |
|
Version numbering is sequential. Limiting to 63 versions, especially encoding this limitation in the proto message, sounds wrong. If we want to support subsets of features, drop numeric scheme and use feature flags. In any case, I don't think this is something we can do in a patch release, even if the goal is to make it possible to backport a fix. Please see my previous comment on how to resolve this both for 1.4.1 and 2.0.0. |
|
Proposed fixes:
I'll open PRs if runs are successful. |
This would fix the compatibility issue, but would disable |
Do you mean that we should set the version of LIGHTWEIGHT_LIST_STATUS to 5 (to be the same as OBJECT_TAG(5)) in the master and ozone-1.4 branches?
For this issue, user can upgrade the server side to ozone-1.4.1 to fix the issue. |
|
@adoroszlai However, for the current version checking logic to work accurately, it is a prerequisite that the versions must be consecutive, but this is not always guaranteed.
I think this PR is a solution to the above problem, for the ID is limited to a maximum of 63, we should be able to achieve this by transmitting multiple bitmaps |
Yes, I thought we could make the feature version backportable that way, but it has the problem I mentioned:
OM 1.4.x cannot report it is at So we have two choices:
We shouldn't backport features, only bugfixes. |
Therefore, whether we set |
If Server and client is already upgraded to For specific compatibility fix, a client of 1.4.1 can take a decision if there is a failure, fall back to older way as that client specific code for compatibility. Bitwise map of feature --
IMO, keeping versioning simple will help reduce complexity of getting bigger issue later on. |
|
+1 to Sumit's comment. We discussed this at the US community sync yesterday. This issue shows that we already sometimes make mistakes with our current cross compatibility model, so the solution should not be to make it more complicated. Sequential versioning is much easier to manage since changes can depend on each other, and greatly reduces the test matrix. The simplest fix for this problem looks to be to patch the 1.4.1 client to retry using the old list keys API if list keys light fails. |
|
Closing based on discussion. |
What changes were proposed in this pull request?
This PR introduces "feature bitmap" support in OzoneManagerVersion, enabling the Client check OM feature use the "feature bitmap" instead of the
versionwhich was the OM latest version.Issue
If only the latest
versionis used for feature checks, there is a risk of misjudging compatibility when versions are not sequential. For example, if certain intermediate versions are skipped (e.g., [1, 2, 3, 5]), relying on simple version comparisons might incorrectly assume support for all earlier versions.We need backport this #7161 patch to ozone-1.4 branch, #7161 introduce the
OzoneManagerVersion#LIGHTWEIGHT_LIST_STATUS(8), if we backport the #7161, then the ozone-1.4 OzoneManagerVersion will be [1,2,3,4,8], no the feature [5, 6, 7]. Current logic which base on the latest OzoneManagerVersion#version to judge whether OM support a specific feature, will cause the client think the OM support the features [5, 6, 7], but ozone-1.4 not support.What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-11596
How was this patch tested?
Existing tests. Newly added unit test.