From 7dc5b9d2f351ce53968308b9c89acc59970b9d90 Mon Sep 17 00:00:00 2001 From: Tolga Dur Date: Tue, 9 Mar 2021 18:21:54 +0000 Subject: [PATCH] fix: ksql.service.id should not be usable as a query parameter --- .../main/java/io/confluent/ksql/cli/Cli.java | 1 - .../properties/DenyListPropertyValidator.java | 5 +++-- .../DenyListPropertyValidatorTest.java | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ksqldb-cli/src/main/java/io/confluent/ksql/cli/Cli.java b/ksqldb-cli/src/main/java/io/confluent/ksql/cli/Cli.java index 66c0b65896a7..4bfe7ed5187b 100644 --- a/ksqldb-cli/src/main/java/io/confluent/ksql/cli/Cli.java +++ b/ksqldb-cli/src/main/java/io/confluent/ksql/cli/Cli.java @@ -521,7 +521,6 @@ private void setPropertyFromCtxt( private void setProperty(final String property, final String value) { final Object priorValue = restClient.setProperty(property, value); - terminal.writer().printf( "Successfully changed local property '%s'%s to '%s'.%s%n", property, diff --git a/ksqldb-common/src/main/java/io/confluent/ksql/properties/DenyListPropertyValidator.java b/ksqldb-common/src/main/java/io/confluent/ksql/properties/DenyListPropertyValidator.java index 5d6dde7f503a..1b07ae2f67da 100644 --- a/ksqldb-common/src/main/java/io/confluent/ksql/properties/DenyListPropertyValidator.java +++ b/ksqldb-common/src/main/java/io/confluent/ksql/properties/DenyListPropertyValidator.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import io.confluent.ksql.util.KsqlConfig; import io.confluent.ksql.util.KsqlException; import java.util.Collection; @@ -32,8 +33,8 @@ public class DenyListPropertyValidator { private final Set immutableProps; public DenyListPropertyValidator(final Collection immutableProps) { - this.immutableProps = ImmutableSet.copyOf( - Objects.requireNonNull(immutableProps, "immutableProps")); + this.immutableProps = ImmutableSet.builder().addAll( + Objects.requireNonNull(immutableProps, "immutableProps")).add(KsqlConfig.KSQL_SERVICE_ID_CONFIG).build(); } /** diff --git a/ksqldb-common/src/test/java/io/confluent/ksql/properties/DenyListPropertyValidatorTest.java b/ksqldb-common/src/test/java/io/confluent/ksql/properties/DenyListPropertyValidatorTest.java index 9a2b32cde98f..76934106eb55 100644 --- a/ksqldb-common/src/test/java/io/confluent/ksql/properties/DenyListPropertyValidatorTest.java +++ b/ksqldb-common/src/test/java/io/confluent/ksql/properties/DenyListPropertyValidatorTest.java @@ -64,4 +64,21 @@ public void shouldNotThrowOnAllowedProp() { "anything", "v2" )); } + + @Test + public void shouldThrowOnKsqlServiceIdProperty() { + // When: + final KsqlException e = assertThrows( + KsqlException.class, + () -> validator.validateAll(ImmutableMap.of( + "ksql.service.id", "v1" + )) + ); + + // Then: + assertThat(e.getMessage(), containsString( + "One or more properties overrides set locally are prohibited by the KSQL server " + + "(use UNSET to reset their default value): [ksql.service.id]" + )); + } }