KAFKA-15922: Bump MetadataVersion to support JBOD with KRaft#14984
KAFKA-15922: Bump MetadataVersion to support JBOD with KRaft#14984rondagostino merged 9 commits intoapache:trunkfrom
Conversation
This just moved 3.7_IV3 to 4.0_IV0
rondagostino
left a comment
There was a problem hiding this comment.
LGTM assuming tests pass.
|
@pprovenzano Can you look at the test failures? |
There is no short version of 4.0 until 4.0 becomes a stable version
|
Okay, I think I have addresses the issues. |
3.7-IV0 (15): Controller Registration 3.7-IV1 (16): burned in AK, reused in CE for CL fail-back 3.7-IV2 (17): JBOD 3.7-IV4 (19): Fetch RPC change (<-- “Production Ready”) 3.8-IV0 (20): ELR MVs of non Production Ready items cannot be recyled but the feature itself can be removed and consume a later MV. This is the case with ELR which is no longer 3-7-IV3 (18) and has been moved to 3-8-IV0 which is not production ready.
rondagostino
left a comment
There was a problem hiding this comment.
Left a few comments based on latest changes.
| // Add JBOD support for KRaft. | ||
| IBP_3_7_IV2(17, "3.7", "IV2", true), | ||
|
|
||
| // IBP_3_7_IV3 was ELR related supports (KIP-966) and has been moved forward |
There was a problem hiding this comment.
I think we should keep the value and just not have anything associated with it. Call it "reserved", similar to IBP_3_7_IV1. WDYT?
There was a problem hiding this comment.
very small nit here -- but the comment could be a little clearer. Something like
IBP_3_7_IV3 was reserved for ELR changes (KIP-966) but has been deferred to a later MV
There was a problem hiding this comment.
Okay, I updated the comment to try to make it clearer. This is where we really need the KIP.
jolshan
left a comment
There was a problem hiding this comment.
left one small nit, but otherwise lgtm assuming tests look good.
jsancio
left a comment
There was a problem hiding this comment.
Please update the PR description to explain what issue is being fixed. The description doesn't match the changes included in this PR.
Same with the PR title. Is the KAFKA-15922 also related to this PR?
| // IBP_3_7_IV3 was ELR related supports (KIP-966) and has been moved forward | ||
| IBP_3_7_IV3(18, "3.7", "IV3", false), | ||
|
|
||
| // Add new fetch request version for KIP-951 | ||
| IBP_3_7_IV4(19, "3.7", "IV4", false), | ||
|
|
||
| // Add ELR related supports (KIP-966). | ||
| IBP_3_7_IV3(18, "3.7", "IV3", true); | ||
| IBP_3_8_IV0(20, "3.8", "IV0", true); |
There was a problem hiding this comment.
Can you split this change into two PRs/commits? One that fixes the MV in 3.7 and one that introduced the new 3.8 MV. The one that fixes the 3.7 versions should be cherry picked to the 3.7 branch.
There was a problem hiding this comment.
If we remove the tag from here should we also remove all the other code associated with ELR from the 3.7 branch?
I don't think removing it from the 3.7 branch really buys us much of anything except more code churn.
There was a problem hiding this comment.
You just need to return false for isElrSupported(). Is that what you are asking?
There was a problem hiding this comment.
No, you asked to split this PR into two separate PRs, one for 3.7 without any reference to 3.8 and this one. I am saying that doing that has no value because 3.8 is labeled as unstable so having it in 3.7 isn't an issue. Customers cannot use 3.8 unless they explicitly allow unstable metadata versions.
If we want 3.7 to be clean then you would also need to remove all ELR code not just the MV referencing it. This would be a BIG change because it removes tests and updates the JSON files representing the record format.
The original PRs for KAFKA-15922 are what got us to this point. My PR here was just meant to bump the latest stable version to the MV supporting JBOD. I've added a little more to reduce the number of PRs that need to be committed to streamline things. All the changes though are related to KAFKA-15922. I have updated the comment to try to reflect the current state of changes. I have no idea what to change the title to. |
|
Java 21 build passed, others have failures that look unrelated:
|
rondagostino
left a comment
There was a problem hiding this comment.
LGTM. One missing test that we can add separately (it was always missing -- it is not missing due to this PR). I will merge this and then cherry-pick it to 3.7. Thanks for the adjustments!
| if (this.isAtLeast(IBP_3_7_IV0)) { | ||
| if (this.isAtLeast(IBP_3_7_IV4)) { |
There was a problem hiding this comment.
Noting that we do not have a test for this. In the interest of time, let's add a test for this in a follow-on PR rather than here unless we find other issues.
| } | ||
|
|
||
| @ClusterTest(clusterType = Type.KRAFT, metadataVersion = MetadataVersion.IBP_3_7_IV0) | ||
| @ClusterTest(clusterType = Type.KRAFT, metadataVersion = MetadataVersion.IBP_3_7_IV4) |
There was a problem hiding this comment.
Seem that this change is unnecessary, but it doesn't hurt, either - so let's leave it alone in the interest of time unless we find something else that definitely needs fixing.
Moves ELR from MetadataVersion IBP_3_7_IV3 into the new IBP_3_8_IV0 because the ELR feature was not completed before 3.7 reached feature freeze. Leaves IBP_3_7_IV3 empty -- it is a no-op and is not reused for anything. Adds the new MetadataVersion IBP_3_7_IV4 for the FETCH request changes from KIP-951, which were mistakenly never associated with a MetadataVersion. Updates the LATEST_PRODUCTION MetadataVersion to IBP_3_7_IV4 to declare both KRaft JBOD and the KIP-951 changes ready for production use. Reviewers: Omnia G H Ibrahim <o.g.h.ibrahim@gmail.com>, Ron Dagostino <rdagostino@confluent.io>, Ismael Juma <ismael@juma.me.uk>, José Armando García Sancio <jsancio@apache.org>, Justine Olshan <jolshan@confluent.io>
|
Merged to 3.7 |
…14984) Moves ELR from MetadataVersion IBP_3_7_IV3 into the new IBP_3_8_IV0 because the ELR feature was not completed before 3.7 reached feature freeze. Leaves IBP_3_7_IV3 empty -- it is a no-op and is not reused for anything. Adds the new MetadataVersion IBP_3_7_IV4 for the FETCH request changes from KIP-951, which were mistakenly never associated with a MetadataVersion. Updates the LATEST_PRODUCTION MetadataVersion to IBP_3_7_IV4 to declare both KRaft JBOD and the KIP-951 changes ready for production use. Reviewers: Omnia G H Ibrahim <o.g.h.ibrahim@gmail.com>, Ron Dagostino <rdagostino@confluent.io>, Ismael Juma <ismael@juma.me.uk>, José Armando García Sancio <jsancio@apache.org>, Justine Olshan <jolshan@confluent.io>
…14984) Moves ELR from MetadataVersion IBP_3_7_IV3 into the new IBP_3_8_IV0 because the ELR feature was not completed before 3.7 reached feature freeze. Leaves IBP_3_7_IV3 empty -- it is a no-op and is not reused for anything. Adds the new MetadataVersion IBP_3_7_IV4 for the FETCH request changes from KIP-951, which were mistakenly never associated with a MetadataVersion. Updates the LATEST_PRODUCTION MetadataVersion to IBP_3_7_IV4 to declare both KRaft JBOD and the KIP-951 changes ready for production use. Reviewers: Omnia G H Ibrahim <o.g.h.ibrahim@gmail.com>, Ron Dagostino <rdagostino@confluent.io>, Ismael Juma <ismael@juma.me.uk>, José Armando García Sancio <jsancio@apache.org>, Justine Olshan <jolshan@confluent.io>
…14984) Moves ELR from MetadataVersion IBP_3_7_IV3 into the new IBP_3_8_IV0 because the ELR feature was not completed before 3.7 reached feature freeze. Leaves IBP_3_7_IV3 empty -- it is a no-op and is not reused for anything. Adds the new MetadataVersion IBP_3_7_IV4 for the FETCH request changes from KIP-951, which were mistakenly never associated with a MetadataVersion. Updates the LATEST_PRODUCTION MetadataVersion to IBP_3_7_IV4 to declare both KRaft JBOD and the KIP-951 changes ready for production use. Reviewers: Omnia G H Ibrahim <o.g.h.ibrahim@gmail.com>, Ron Dagostino <rdagostino@confluent.io>, Ismael Juma <ismael@juma.me.uk>, José Armando García Sancio <jsancio@apache.org>, Justine Olshan <jolshan@confluent.io>
…14984) Moves ELR from MetadataVersion IBP_3_7_IV3 into the new IBP_3_8_IV0 because the ELR feature was not completed before 3.7 reached feature freeze. Leaves IBP_3_7_IV3 empty -- it is a no-op and is not reused for anything. Adds the new MetadataVersion IBP_3_7_IV4 for the FETCH request changes from KIP-951, which were mistakenly never associated with a MetadataVersion. Updates the LATEST_PRODUCTION MetadataVersion to IBP_3_7_IV4 to declare both KRaft JBOD and the KIP-951 changes ready for production use. Reviewers: Omnia G H Ibrahim <o.g.h.ibrahim@gmail.com>, Ron Dagostino <rdagostino@confluent.io>, Ismael Juma <ismael@juma.me.uk>, José Armando García Sancio <jsancio@apache.org>, Justine Olshan <jolshan@confluent.io>
Update the LATEST_PRODUCTION to include JBOD and fetch request for KIP-951.
Remove ELR MetadataVersion from 3.7 and push it to 3.8. Since it was not considered stable the MV is burned.
Add 3.8-IV0 as the next MetadataVersion which is currently not considered stable.
Fix tests to reflect this state.