0xffff-zhiyan commented on code in PR #21053:
URL: https://github.com/apache/kafka/pull/21053#discussion_r2771112463


##########
core/src/main/scala/kafka/server/ControllerConfigurationValidator.scala:
##########
@@ -44,7 +47,33 @@ import scala.collection.mutable
  * in the same RPC, BROKER_LOGGER is not really a dynamic configuration in the 
same sense
  * as the others. It is not persisted to the metadata log.
  */
-class ControllerConfigurationValidator(kafkaConfig: KafkaConfig) extends 
ConfigurationValidator {
+class ControllerConfigurationValidator(private val kafkaConfig: KafkaConfig) 
+    extends ConfigurationValidator with SupportedConfigChecker {
+  private val validConfigsByType: Map[ConfigResource.Type, util.Set[String]] = 
{
+    val topicConfigs = LogConfig.nonInternalConfigNames.asScala.toSet
+    val brokerConfigs = DynamicConfig.Broker.names.asScala.toSet
+    val clientMetricsConfigs = 
ClientMetricsConfigs.configDef().names.asScala.toSet
+    val groupConfigs = GroupConfig.configDef().names.asScala.toSet
+    // Quota configs can be used with different resource types, so we include 
them for all types
+    val allQuotaConfigs = 
QuotaConfig.scramMechanismsPlusUserAndClientQuotaConfigs().names.asScala ++
+                          
QuotaConfig.userAndClientQuotaConfigs().names.asScala ++
+                          QuotaConfig.ipConfigs.names.asScala
+
+    Map(
+      ConfigResource.Type.TOPIC -> (topicConfigs ++ allQuotaConfigs).asJava,
+      ConfigResource.Type.BROKER -> (brokerConfigs ++ allQuotaConfigs).asJava,
+      ConfigResource.Type.CLIENT_METRICS -> (clientMetricsConfigs ++ 
allQuotaConfigs).asJava,
+      ConfigResource.Type.GROUP -> (groupConfigs ++ allQuotaConfigs).asJava
+    )

Review Comment:
   Yes you are right. I found that `User/Client quota configs` 
(producer_byte_rate, consumer_byte_rate, request_percentage, 
controller_mutation_rate) and `IP quota configs` (connection_creation_rate) are 
managed via `ClientQuotaRecord`, not `ConfigRecord`. They should not appear in 
the configuration for TOPIC, BROKER, CLIENT_METRICS, or GROUP resource types.
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to