Skip to content

Commit a2ccaa2

Browse files
committed
Merge pull request #31679 from m-kay
* pr/31679: Polish "Add config property for KafkaAdmin modifyTopicConfigs" Add config property for KafkaAdmin modifyTopicConfigs Closes gh-31679
2 parents 8e3aaf1 + 4ae4698 commit a2ccaa2

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ public KafkaJaasLoginModuleInitializer kafkaJaasInitializer() throws IOException
142142
public KafkaAdmin kafkaAdmin() {
143143
KafkaAdmin kafkaAdmin = new KafkaAdmin(this.properties.buildAdminProperties());
144144
kafkaAdmin.setFatalIfBrokerNotAvailable(this.properties.getAdmin().isFailFast());
145+
kafkaAdmin.setModifyTopicConfigs(this.properties.getAdmin().isModifyTopicConfigs());
145146
return kafkaAdmin;
146147
}
147148

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,11 @@ public static class Admin {
647647
*/
648648
private boolean failFast;
649649

650+
/**
651+
* Whether to enable modification of existing topic configuration.
652+
*/
653+
private boolean modifyTopicConfigs;
654+
650655
public Ssl getSsl() {
651656
return this.ssl;
652657
}
@@ -671,6 +676,14 @@ public void setFailFast(boolean failFast) {
671676
this.failFast = failFast;
672677
}
673678

679+
public boolean isModifyTopicConfigs() {
680+
return this.modifyTopicConfigs;
681+
}
682+
683+
public void setModifyTopicConfigs(boolean modifyTopicConfigs) {
684+
this.modifyTopicConfigs = modifyTopicConfigs;
685+
}
686+
674687
public Map<String, String> getProperties() {
675688
return this.properties;
676689
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,15 +209,14 @@ void producerProperties() {
209209

210210
@Test
211211
void adminProperties() {
212-
this.contextRunner
213-
.withPropertyValues("spring.kafka.clientId=cid", "spring.kafka.properties.foo.bar.baz=qux.fiz.buz",
214-
"spring.kafka.admin.fail-fast=true", "spring.kafka.admin.properties.fiz.buz=fix.fox",
215-
"spring.kafka.admin.security.protocol=SSL", "spring.kafka.admin.ssl.key-password=p4",
216-
"spring.kafka.admin.ssl.key-store-location=classpath:ksLocP",
217-
"spring.kafka.admin.ssl.key-store-password=p5", "spring.kafka.admin.ssl.key-store-type=PKCS12",
218-
"spring.kafka.admin.ssl.trust-store-location=classpath:tsLocP",
219-
"spring.kafka.admin.ssl.trust-store-password=p6",
220-
"spring.kafka.admin.ssl.trust-store-type=PKCS12", "spring.kafka.admin.ssl.protocol=TLSv1.2")
212+
this.contextRunner.withPropertyValues("spring.kafka.clientId=cid",
213+
"spring.kafka.properties.foo.bar.baz=qux.fiz.buz", "spring.kafka.admin.fail-fast=true",
214+
"spring.kafka.admin.properties.fiz.buz=fix.fox", "spring.kafka.admin.security.protocol=SSL",
215+
"spring.kafka.admin.ssl.key-password=p4", "spring.kafka.admin.ssl.key-store-location=classpath:ksLocP",
216+
"spring.kafka.admin.ssl.key-store-password=p5", "spring.kafka.admin.ssl.key-store-type=PKCS12",
217+
"spring.kafka.admin.ssl.trust-store-location=classpath:tsLocP",
218+
"spring.kafka.admin.ssl.trust-store-password=p6", "spring.kafka.admin.ssl.trust-store-type=PKCS12",
219+
"spring.kafka.admin.ssl.protocol=TLSv1.2", "spring.kafka.admin.modify-topic-configs=true")
221220
.run((context) -> {
222221
KafkaAdmin admin = context.getBean(KafkaAdmin.class);
223222
Map<String, Object> configs = admin.getConfigurationProperties();
@@ -239,6 +238,7 @@ void adminProperties() {
239238
assertThat(configs.get("foo.bar.baz")).isEqualTo("qux.fiz.buz");
240239
assertThat(configs.get("fiz.buz")).isEqualTo("fix.fox");
241240
assertThat(admin).hasFieldOrPropertyWithValue("fatalIfBrokerNotAvailable", true);
241+
assertThat(admin).hasFieldOrPropertyWithValue("modifyTopicConfigs", true);
242242
});
243243
}
244244

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaPropertiesTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
import org.apache.kafka.common.config.SslConfigs;
2222
import org.junit.jupiter.api.Test;
2323

24+
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Admin;
2425
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Cleanup;
2526
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.IsolationLevel;
2627
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Listener;
2728
import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException;
2829
import org.springframework.core.io.ClassPathResource;
2930
import org.springframework.kafka.core.CleanupConfig;
31+
import org.springframework.kafka.core.KafkaAdmin;
3032
import org.springframework.kafka.listener.ContainerProperties;
3133

3234
import static org.assertj.core.api.Assertions.assertThat;
@@ -51,6 +53,14 @@ void isolationLevelEnumConsistentWithKafkaVersion() {
5153
assertThat(original).hasSize(IsolationLevel.values().length);
5254
}
5355

56+
@Test
57+
void adminDefaultValuesAreConsistent() {
58+
KafkaAdmin admin = new KafkaAdmin(Map.of());
59+
Admin adminProperties = new KafkaProperties().getAdmin();
60+
assertThat(admin).hasFieldOrPropertyWithValue("fatalIfBrokerNotAvailable", adminProperties.isFailFast());
61+
assertThat(admin).hasFieldOrPropertyWithValue("modifyTopicConfigs", adminProperties.isModifyTopicConfigs());
62+
}
63+
5464
@Test
5565
void listenerDefaultValuesAreConsistent() {
5666
ContainerProperties container = new ContainerProperties("test");

0 commit comments

Comments
 (0)