KAFKA-16968: Make 3.8-IV0 a stable MetadataVersion and create 3.9-IV0#16347
KAFKA-16968: Make 3.8-IV0 a stable MetadataVersion and create 3.9-IV0#16347cmccabe merged 16 commits intoapache:trunkfrom
Conversation
- Make 3.8-IV0 a stable MetadataVersion - Move KIP-966 out of 3.8, reflecting the fact that it's not ready yet. - Remove IBP_4_0_IV0 since we won't need it until 3.9 is stabilized.
|
cc @jlprat We need this on in 3.8. |
|
Thanks @dajac! Let's get this to 3.8 once merged |
|
@cmccabe @AndrewJSchofield @dajac , there is another PR adding a new metadata version of 3.8.IV1(it will be the next production ready MV), it also tries to move KIP-966 from 3.8IV0 to 4.0IV0. https://github.com/apache/kafka/pull/15673/files |
Thanks for pointing out this existing PR. As discussed on the mailnig list, 3.8 is done at this point. No new features are going into it. The changes from #15673 can be done in 3.9-IV0 once this PR creates it. |
|
hi @junrao I marked https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-16480 as a blocker for 3.8 |
dajac
left a comment
There was a problem hiding this comment.
Thanks for the update. I left a few small comments. Many tests failed too. It looks like that you have to bring back MV 4.0 to a few more places.
|
@junrao wrote:
The discussion thread here seems to suggest that #15673 is adding a new feature.:
Additionally, the PR title is "KAFKA-16480: Bump ListOffsets version, IBP version and mark last version of ListOffsets as unstable #15673". But when I look at clients/src/main/resources/common/message/ListOffsetsRequest.json in the PR, I do not see Maybe someone can explain more about what #15673 does exactly. |
|
@cmccabe I don't see the last changes. Did you push? |
|
@dajac Just pushed. I was running a few tests locally as a check. |
@cmccabe : The main issue that #15673 fixes So, let's hold off on merging this PR until we understand how to consolidate it with #15673. |
|
@junrao @clolov @dajac @jlprat : It seems like the client side of the KIP-1005 changes is not implemented. So I would propose we revert #15213 from 3.8 since the KIP is only half-complete, and feature freeze has come and gone. This will unblock the 3.8.0 release. We can then retarget KIP-1005 at 3.9.0 as usual. As part of that, we can bump the ListOffsets version and mark the latest version of ListOffsets as unstable. This will all be in 3.9-IV0. I'll update this PR in a moment with those changes |
|
Hi @cmccabe
Is this the accepted way forward to unlock the 3.8 release? If so, I'll prepare a revert PR. |
|
|
||
| @ClusterTemplate("testApiVersionsRequestValidationV0Template") | ||
| @ClusterTest(types = Array(Type.KRAFT, Type.CO_KRAFT), metadataVersion = MetadataVersion.IBP_3_7_IV4, serverProperties = Array( | ||
| @ClusterTest(types = Array(Type.KRAFT, Type.CO_KRAFT), metadataVersion = MetadataVersion.IBP_3_8_IV0, serverProperties = Array( |
There was a problem hiding this comment.
Could we add a comment that we should use latest production MV for this test?
| } | ||
|
|
||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_7_IV4) | ||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_8_IV0) |
There was a problem hiding this comment.
Could we add a comment that we should use latest production MV for this test?
| } | ||
|
|
||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_7_IV4) | ||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_8_IV0) |
There was a problem hiding this comment.
Ok. Could we add a comment on what MV should be used for this test so that it's clear for future developers?
|
|
||
| public short listOffsetRequestVersion() { | ||
| if (this.isAtLeast(IBP_3_5_IV0)) { | ||
| if (this.isAtLeast(IBP_3_9_IV0)) { |
There was a problem hiding this comment.
- The following test failed because of this. I guess we need to use IBP_3_9_IV0 in the test.
kafka.server.ReplicaFetcherThreadTest.shouldSendLatestRequestVersionsByDefault()
org.opentest4j.AssertionFailedError: expected: <9> but was: <8>
at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:134)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:129)
at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:329)
at app//kafka.server.ReplicaFetcherThreadTest.shouldSendLatestRequestVersionsByDefault(ReplicaFetcherThreadTest.scala:132)
- The following test failed because of this. I guess we need to enable unstable.feature.versions.enable.
org.opentest4j.AssertionFailedError: Expected follower to discover new log start offset 3
at app//org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:38)
at app//org.junit.jupiter.api.Assertions.fail(Assertions.java:138)
at app//kafka.api.PlaintextAdminIntegrationTest.waitForFollowerLog$1(PlaintextAdminIntegrationTest.scala:846)
at app//kafka.api.PlaintextAdminIntegrationTest.testReplicaCanFetchFromLogStartOffsetAfterDeleteRecords(PlaintextAdminIntegrationTest.scala:868)
org.apache.kafka.common.errors.InvalidRequestException: Received request api key LIST_OFFSETS with version 9 which is not enabled
org.apache.kafka.tiered.storage.integration.ReassignReplicaExpandTest.executeTieredStorageTestseems to fail consistently now for similar reasons.
org.apache.kafka.common.errors.InvalidRequestException: Received request api key LIST_OFFSETS with version 9 which is not enabled
There was a problem hiding this comment.
It seems that you reverted the fix for ReplicaFetcherThreadTest during merging. Also, PlaintextAdminIntegrationTest.testReplicaCanFetchFromLogStartOffsetAfterDeleteRecords still fails.
There was a problem hiding this comment.
Both of these tests should pass now.
|
|
||
| public short listOffsetRequestVersion() { | ||
| if (this.isAtLeast(IBP_3_5_IV0)) { | ||
| if (this.isAtLeast(IBP_3_9_IV0)) { |
There was a problem hiding this comment.
It seems that you reverted the fix for ReplicaFetcherThreadTest during merging. Also, PlaintextAdminIntegrationTest.testReplicaCanFetchFromLogStartOffsetAfterDeleteRecords still fails.
| } | ||
|
|
||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_7_IV4) | ||
| @ClusterTest(types = {Type.KRAFT}, metadataVersion = MetadataVersion.IBP_3_8_IV0) |
There was a problem hiding this comment.
Was this comment addressed?
jolshan
left a comment
There was a problem hiding this comment.
lgtm as long as the tests look good.
|
@cmccabe Do we need to cherry-pick it to 3.8 branch too? |
|
My understanding is that we still need to create |
|
I added those commits to #16400 as well. |
|
Ah, missed them. Then, we're all good. Thanks! |
|
I decided to add both things in the same PR in an attempt to simplify blockers |
| */ | ||
| @ParameterizedTest | ||
| @ValueSource(strings = {"3.4-IV0", "3.5-IV2", "3.6-IV0", "3.7-IV4"}) | ||
| @ValueSource(strings = {"3.4-IV0", "3.5-IV2", "3.6-IV0", "3.7-IV2"}) |
There was a problem hiding this comment.
@cmccabe : Is it intentional that we leave out "3.9-IV1" in this test?
LATEST_PRODUCTION version in MetadataVersion.java was updated in both apache#16347 and apache#16400, but it was left unchanged in the system tests.
…pache#16533) LATEST_PRODUCTION version in MetadataVersion.java was updated in both apache#16347 and apache#16400, but it was left unchanged in the system tests. Reviewers: Josep Prat <josep.prat@aiven.io>
Make 3.8-IV0 a stable MetadataVersion
Move KIP-966 out of 3.8, reflecting the fact that it's not ready yet.
Create IBP_3_9_IV0.
Remove IBP_4_0_IV0 since we won't need it until 3.9 is stabilized.