[fix][admin] Allow defaultNumPartitions for non-partitioned autoTopicCreation override #25163
+54
−4
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.
Fixes #24998
Motivation
The current namespace
autoTopicCreationoverride validation rejectsdefaultNumPartitionswhentopicType=non-partitioned. This forces clients and IaC tooling to conditionally omit a field based on topic type, which makes the API less consistent and more error-prone.Modifications
AutoTopicCreationOverridevalidation to allowdefaultNumPartitionsto be set whentopicType=non-partitioned(value is accepted and persisted).defaultNumPartitionsis still only used for partitioned auto-creation.Verifying this change
This change added tests and can be verified as follows:
mvn -pl pulsar-common -Dtest=AutoTopicCreationOverrideTest testmvn -pl pulsar-broker -am -Dtest=AdminApi2Test#testAutoTopicCreationOverrideNonPartitionedDefaultNumPartitionsIgnored -Dsurefire.failIfNoSpecifiedTests=false testDoes this pull request potentially affect one of the following parts:
Documentation
doc-not-neededNote: Updated
validateOverrideto preserve topic type validation and allowdefaultNumPartitionsfor NON_PARTITIONED topics only when the value isnull,0, or1. Updated unit tests to cover0,1, and to reject2.