KAFKA-20337: Make all GroupConfig fields Optional and clean up validation#22003
Open
dajac wants to merge 1 commit intoapache:trunkfrom
Open
KAFKA-20337: Make all GroupConfig fields Optional and clean up validation#22003dajac wants to merge 1 commit intoapache:trunkfrom
dajac wants to merge 1 commit intoapache:trunkfrom
Conversation
…tion All GroupConfig fields are now Optional<T>, storing only explicitly provided values. Broker-level defaults are resolved at access time via flatMap().orElse(brokerDefault), eliminating stale-capture issues when broker configs change dynamically. Key changes: - All 21 GroupConfig fields are private Optional, using optionalInt/Boolean/String helpers based on originals(). - GroupConfigManager no longer needs a defaultConfig; constructor simplified. - GroupCoordinatorConfig.extractGroupConfigMap(ShareGroupConfig) removed. - All consumers (GroupMetadataManager, ShareGroupConfigProvider, KafkaApis) use flatMap. - validate() uses CONFIG_DEF.parse() directly instead of constructing a GroupConfig, keeping validation independent from GroupConfig construction. - validateValues refactored with validateIntRange/Max/Min helpers operating on a single filtered parsed map. - Cross-field checks use broker defaults for missing values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Member
Author
|
@squah-confluent I have been playing with those dynamic configs and I came up with this patch. Please take a look. |
Contributor
squah-confluent
left a comment
There was a problem hiding this comment.
Thanks for the refactor, looks good!
The approach to validate() where we only pass in the present parsed values is nice.
| public ShareGroupAutoOffsetResetStrategy shareAutoOffsetReset() { | ||
| return ShareGroupAutoOffsetResetStrategy.fromString(shareAutoOffsetReset); | ||
| public Optional<ShareGroupAutoOffsetResetStrategy> shareAutoOffsetReset() { | ||
| return shareAutoOffsetReset.map(ShareGroupAutoOffsetResetStrategy::fromString); |
Contributor
There was a problem hiding this comment.
Minor suggestion: I would propose also moving the shareAutoOffsetReset and shareIsolationLevel parsing to the constructor.
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.
All GroupConfig fields are now Optional, storing only explicitly
provided values. Broker-level defaults are resolved at access time via
flatMap().orElse(brokerDefault), eliminating stale-capture issues when
broker configs change dynamically.
Key changes:
optionalInt/Boolean/String helpers based on originals().
simplified.
removed.
KafkaApis) use flatMap.
operating on a single filtered parsed map.