Repository navigation
feat(gateways): map Kafka topic configs and replication factor to Iggy - #4747
Open
krishvishal wants to merge 4 commits into
Open
krishvishal wants to merge 4 commits into
krishvishal wants to merge 4 commits into
Conversation
Frameworks create Kafka topics with configs and read them back, which the gateway refused (#4508).
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4747 +/- ##
=========================================
Coverage 91.03% 91.03%
Complexity 3878 3878
=========================================
Files 1561 1561
Lines 403726 403723 -3
Branches 337601 337598 -3
=========================================
+ Hits 367515 367533 +18
+ Misses 28851 28827 -24
- Partials 7360 7363 +3
🚀 New features to boost your workflow:
|
numinnex
requested changes
Nov 4, 2026
numinnex
approved these changes
Nov 4, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR address?
Relates to #4508
Rationale
Kafka frameworks create topics with specific configurations and read those configurations back. The gateway currently rejects most of them. As a result, Kafka Connect, Kafka Streams, MirrorMaker 2, Debezium, kafka-ui, Terraform, and the Strimzi Topic Operator can stop at startup or when they create their first topic.
This PR proposes the following answers to the three open questions in #4508.
cleanup.policy=compact, creates the topic without an expiry or size cap, and logs a warning. Until Iggy supports compaction (Kafka gateway: log compaction for compacted topics #4521), the gateway does not reportcompactinDescribeConfigs. Persisting the policy requires a new Iggy topic option with a typed field in all eight SDKs.replication_factortopic option introduced in feat(cluster)!: add per-topic replication factor #4692.DescribeConfigs. It returns error40formessage.timestamp.type=LogAppendTimeand non-default values ofmax.message.bytes, because these settings change what clients receive.The following gaps keep #4508 open.
cleanup.policyon its second startup and stops unlesskafkastore.topic.skip.validation=trueis set.cleanup.policy=deleteon every startup and fails to start.compactif the alter request omitscleanup.policy.What changed?
CreateTopicspreviously returned error40for any configuration entry and error38for any replication factor other than1or-1. It now storesretention.ms,retention.bytes,segment.bytes, and the replication factor as Iggy topic options. It also validates every Kafka 4.4 topic key using Kafka's validation rules and error messages.DescribeConfigspreviously returned onlyretention.msfor topics and error42for aBROKERresource. It now returns the Kafka 4.4 topic keys for topics and the keys the Strimzi Topic Operator reads for brokers.Two changes affect existing clients.
AlterConfigsnow replaces the full topic configuration, matching Kafka's behavior. An empty list resets the topic configuration to its defaults.retention.bytesvalue smaller than one segment now returns error40because Iggy always retains one sealed segment per partition.gateways/kafka/docs/CONFIGS.mddocuments each key, the gateway's response, and its limitations.