Skip to content

KAFKA-15922: Bump MetadataVersion to support JBOD with KRaft#14984

Merged
rondagostino merged 9 commits intoapache:trunkfrom
pprovenzano:KAFKA-15922
Dec 14, 2023
Merged

KAFKA-15922: Bump MetadataVersion to support JBOD with KRaft#14984
rondagostino merged 9 commits intoapache:trunkfrom
pprovenzano:KAFKA-15922

Conversation

@pprovenzano
Copy link
Copy Markdown
Contributor

@pprovenzano pprovenzano commented Dec 11, 2023

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.

Copy link
Copy Markdown
Contributor

@rondagostino rondagostino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM assuming tests pass.

Copy link
Copy Markdown
Contributor

@OmniaGM OmniaGM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@rondagostino
Copy link
Copy Markdown
Contributor

@pprovenzano Can you look at the test failures?
60 tests have failed. There are 0 new tests failing, 60 existing failing
https://ci-builds.apache.org/blue/organizations/jenkins/Kafka%2Fkafka-pr/detail/PR-14984/2/tests

There is no short version of 4.0 until 4.0 becomes a stable version
@pprovenzano
Copy link
Copy Markdown
Contributor Author

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.
Copy link
Copy Markdown
Contributor

@rondagostino rondagostino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that makes sense.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I updated the comment to try to make it clearer. This is where we really need the KIP.

Copy link
Copy Markdown
Member

@jolshan jolshan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left one small nit, but otherwise lgtm assuming tests look good.

Copy link
Copy Markdown
Member

@jsancio jsancio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Comment on lines +197 to +204
// 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);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor Author

@pprovenzano pprovenzano Dec 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Member

@jsancio jsancio Dec 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You just need to return false for isElrSupported(). Is that what you are asking?

Copy link
Copy Markdown
Contributor Author

@pprovenzano pprovenzano Dec 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@pprovenzano
Copy link
Copy Markdown
Contributor Author

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?

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.

@ijuma
Copy link
Copy Markdown
Member

ijuma commented Dec 14, 2023

Java 21 build passed, others have failures that look unrelated:

Build / JDK 11 and Scala 2.13 / org.apache.kafka.connect.mirror.integration.MirrorConnectorsIntegrationBaseTest.testSyncTopicConfigs()
Build / JDK 11 and Scala 2.13 / kafka.network.ConnectionQuotasTest.testListenerConnectionRateLimitWhenActualRateAboveLimit()
Build / JDK 11 and Scala 2.13 / kafka.network.SocketServerTest.testSaslReauthenticationFailureWithKip152SaslAuthenticate()
Build / JDK 11 and Scala 2.13 / org.apache.kafka.trogdor.coordinator.CoordinatorTest.testTaskRequestWithOldStartMsGetsUpdated()
Build / JDK 17 and Scala 2.13 / kafka.api.ConsumerBounceTest.testConsumptionWithBrokerFailures()
Build / JDK 17 and Scala 2.13 / org.apache.kafka.tiered.storage.integration.TransactionsWithTieredStoreTest.testBumpTransactionalEpoch(String).quorum=kraft
Build / JDK 8 and Scala 2.12 / org.apache.kafka.connect.mirror.integration.MirrorConnectorsIntegrationTransactionsTest.testSyncTopicConfigs()
Build / JDK 8 and Scala 2.12 / kafka.api.DelegationTokenEndToEndAuthorizationWithOwnerTest.testProduceConsumeWithWildcardAcls(String).quorum=kraft
Build / JDK 8 and Scala 2.12 / kafka.api.SaslMultiMechanismConsumerTest.testCoordinatorFailover(String, String).quorum=zk.groupProtocol=generic
Build / JDK 8 and Scala 2.12 / kafka.network.ConnectionQuotasTest.testListenerConnectionRateLimitWhenActualRateAboveLimit()
Build / JDK 8 and Scala 2.12 / org.apache.kafka.controller.QuorumControllerTest.testBalancePartitionLeaders()
Build / JDK 8 and Scala 2.12 / org.apache.kafka.tiered.storage.integration.TransactionsWithTieredStoreTest.testBumpTransactionalEpoch(String).quorum=kraft
Build / JDK 8 and Scala 2.12 / org.apache.kafka.tiered.storage.integration.TransactionsWithTieredStoreTest.testSendOffsetsToTransactionTimeout(String).quorum=kraft
Build / JDK 8 and Scala 2.12 / org.apache.kafka.tools.MetadataQuorumCommandTest.testDescribeQuorumStatusSuccessful [5] Type=Raft-Combined, MetadataVersion=3.8-IV0, Security=PLAINTEXT
Build / JDK 11 and Scala 2.13 / kafka.api.TransactionsBounceTest.testWithGroupId()

Copy link
Copy Markdown
Contributor

@rondagostino rondagostino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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!

Comment on lines -396 to +403
if (this.isAtLeast(IBP_3_7_IV0)) {
if (this.isAtLeast(IBP_3_7_IV4)) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@rondagostino rondagostino merged commit b0e99b5 into apache:trunk Dec 14, 2023
rondagostino pushed a commit that referenced this pull request Dec 14, 2023
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>
@rondagostino
Copy link
Copy Markdown
Contributor

Merged to 3.7

gaurav-narula pushed a commit to gaurav-narula/kafka that referenced this pull request Jan 24, 2024
…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>
yyu1993 pushed a commit to yyu1993/kafka that referenced this pull request Feb 15, 2024
…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>
AnatolyPopov pushed a commit to aiven/kafka that referenced this pull request Feb 16, 2024
…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>
clolov pushed a commit to clolov/kafka that referenced this pull request Apr 5, 2024
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants