Uh oh!
There was an error while loading. Please reload this page.
HDDS-11596. Add Feature Bitmap to OzoneManagerVersion for Compatibility Checks - #7326
HDDS-11596. Add Feature Bitmap to OzoneManagerVersion for Compatibility Checks#7326xichen01 wants to merge 1 commit into
Conversation
xichen01
commented
Oct 18, 2024
@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 |
adoroszlai
commented
Oct 18, 2024
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. |
adoroszlai
commented
Oct 18, 2024
Proposed fixes:
I'll open PRs if runs are successful. |
adoroszlai
commented
Oct 18, 2024
This would fix the compatibility issue, but would disable |
xichen01
commented
Oct 19, 2024
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. |
xichen01
commented
Oct 19, 2024
@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 |
adoroszlai
commented
Oct 21, 2024
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 |
sumitagrawl
commented
Oct 21, 2024
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. |
errose28
commented
Oct 22, 2024
+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. |
adoroszlai
commented
Oct 24, 2024
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.