ijuma opened a new pull request, #18291:
URL: https://github.com/apache/kafka/pull/18291

   Included in this change:
   1. Remove deprecated protocol api versions from json files.
   3. Remove fields that are no longer used from json files (affects 
ListOffsets, OffsetCommit, DescribeConfigs).
   4. Remove record down-conversion support from KafkaApis.
   5. No longer return `Errors.UNSUPPORTED_COMPRESSION_TYPE` on the fetch 
path[1].
   6. Deprecate `TopicConfig. MESSAGE_DOWNCONVERSION_ENABLE_CONFIG` and made 
the relevant
   configs (`message.downconversion.enable` and 
`log.message.downcoversion.enable`) no-ops since
   down-conversion is no longer supported. It was an oversight not to deprecate 
this via KIP-724.
   7. Fix `shouldRetainsBufferReference` to handle null request schemas for a 
given version.
   8. Simplify producer logic since it only supports the v2 record format now.
   9. Fix tests so they don't exercise protocol api versions that have been 
removed.
   10. Add upgrade note.
   
   Testing:
   1. System tests have a lot of failures, but those tests fail for trunk too 
and I didn't see any issues specific to this change - it's hard to be sure 
given the number of failing tests, but let's not block on that given the other 
testing that has been done (see below).
   3. Java producers and consumers with version 0.9-0.10.1 don't have api 
versions support and hence they fail in an ungraceful manner: the broker 
disconnects and the clients reconnect until the relevant timeout is triggered.
   4. Same thing seems to happen for the console producer 0.10.2 although it's 
unclear why since api versions should be supported. I will look into this 
separately, it's unlikely to be related to this PR.
   5. Console consumer 0.10.2 fails with the expected error and a reasonable 
message[2].
   6. Console producer and consumer 0.11.0 works fine, newer versions should 
naturally also work fine.
   7. kcat 1.5.0 (based on librdkafka 1.1.0) produce and consume fail with a 
reasonable message[3][4].
   8. kcat 1.6.0-1.7.0 (based on librdkafka 1.5.0 and 1.7.0 respectively) 
consume fails with a reasonable message[5].
   9. kcat 1.6.0-1.7.0 produce works fine.
   10. kcat 1.7.1  (based on librdkafka 1.8.2) works fine for consumer and 
produce.
   11. confluent-go-client (librdkafka based) 1.8.2 works fine for consumer and 
produce.
   12. I will test more clients, but I don't think we need to block the PR on 
that.
   
   Note that this also completes part of KIP-724: produce v2 and lower as well 
as fetch v3 and lower are no longer supported.
   
   Future PRs will remove conditional code that is no longer needed (some of 
that has been done in KafkaApis,
   but only what was required due to the schema changes). We can probably do 
that in master only as it does
   not change behavior.
   
   Note that I did not touch `ignorable` fields even though some of them could 
have been
   changed. The reasoning is that this could result in incompatible changes for 
clients
   that use new protocol versions without setting such fields _if_ we don't 
manually
   validate their presence. I will file a JIRA ticket to look into this 
carefully for each
   case (i.e. if we do validate their presence for the appropriate versions, we 
can
   set them to ignorable=false in the json file).
   
   [1] We would return this error if a fetch < v10 was used and the compression 
topic config was set
   to zstd, but we would not do the same for the case where zstd was compressed 
at the producer
   level (the most common case). Since there is no efficient way to do the 
check for the common
   case, I made it consistent for both by having no checks.
   [2] ```org.apache.kafka.common.errors.UnsupportedVersionException: The 
broker is too new to support JOIN_GROUP version 1```
   [3]```METADATA|rdkafka#producer-1| [thrd:main]: localhost:9092/bootstrap: 
Metadata request failed: connected: Local: Required feature not supported by 
broker (0ms): Permanent```
   [4]```METADATA|rdkafka#consumer-1| [thrd:main]: localhost:9092/bootstrap: 
Metadata request failed: connected: Local: Required feature not supported by 
broker (0ms): Permanent```
   [5] `ERROR: Topic test-topic [0] error: Failed to query logical offset END: 
Local: Required feature not supported by broker`
   
   Cherry-pick was clean, minor changes required to `LogOffsetTest` due to a 
commit that is in `master`, but not `4.0`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to