Skip to content

Commit a78a931

Browse files
KAFKA-18854 remove DynamicConfig inner class (#19487)
This PR is a umbrella of [KAFKA-18854. ](https://issues.apache.org/jira/browse/KAFKA-18854) The previous PR encountered some compatibility issues, so we decided to split it and proceed with the migration step by step. see #19019 Reviewers: PoAn Yang <[email protected]>, Chia-Ping Tsai <[email protected]>
1 parent b94c7f9 commit a78a931

File tree

2 files changed

+12
-52
lines changed

2 files changed

+12
-52
lines changed

Diff for: core/src/main/scala/kafka/admin/ConfigCommand.scala

+12-10
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717

1818
package kafka.admin
1919

20-
import java.nio.charset.StandardCharsets
21-
import java.util.concurrent.{ExecutionException, TimeUnit}
22-
import java.util.{Collections, Properties}
2320
import joptsimple._
2421
import kafka.server.DynamicConfig
2522
import kafka.utils.Implicits._
@@ -32,13 +29,18 @@ import org.apache.kafka.common.protocol.ApiKeys
3229
import org.apache.kafka.common.quota.{ClientQuotaAlteration, ClientQuotaEntity, ClientQuotaFilter, ClientQuotaFilterComponent}
3330
import org.apache.kafka.common.security.scram.internals.ScramMechanism
3431
import org.apache.kafka.common.utils.{Exit, Utils}
32+
import org.apache.kafka.coordinator.group.GroupConfig
3533
import org.apache.kafka.server.config.{ConfigType, QuotaConfig}
34+
import org.apache.kafka.server.metrics.ClientMetricsConfigs
3635
import org.apache.kafka.server.util.{CommandDefaultOptions, CommandLineUtils}
3736
import org.apache.kafka.storage.internals.log.LogConfig
3837

3938
import java.net.{InetAddress, UnknownHostException}
40-
import scala.jdk.CollectionConverters._
39+
import java.nio.charset.StandardCharsets
40+
import java.util.concurrent.{ExecutionException, TimeUnit}
41+
import java.util.{Collections, Properties}
4142
import scala.collection._
43+
import scala.jdk.CollectionConverters._
4244

4345
/**
4446
* This script can be used to change configs for topics/clients/users/brokers/ips/client-metrics/groups dynamically
@@ -250,7 +252,7 @@ object ConfigCommand extends Logging {
250252
}
251253

252254
case IpType =>
253-
val unknownConfigs = (configsToBeAdded.keys ++ configsToBeDeleted).filterNot(key => DynamicConfig.Ip.names.contains(key))
255+
val unknownConfigs = (configsToBeAdded.keys ++ configsToBeDeleted).filterNot(key => QuotaConfig.ipConfigs.names.contains(key))
254256
if (unknownConfigs.nonEmpty)
255257
throw new IllegalArgumentException(s"Only connection quota configs can be added for '$IpType' using --bootstrap-server. Unexpected config names: ${unknownConfigs.mkString(",")}")
256258
alterQuotaConfigs(adminClient, entityTypes, entityNames, configsToBeAddedMap, configsToBeDeleted)
@@ -529,11 +531,11 @@ object ConfigCommand extends Logging {
529531
val addConfig: OptionSpec[String] = parser.accepts("add-config", "Key Value pairs of configs to add. Square brackets can be used to group values which contain commas: 'k1=v1,k2=[v1,v2,v2],k3=v3'. The following is a list of valid configurations: " +
530532
"For entity-type '" + TopicType + "': " + LogConfig.configNames.asScala.map("\t" + _).mkString(nl, nl, nl) +
531533
"For entity-type '" + BrokerType + "': " + DynamicConfig.Broker.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
532-
"For entity-type '" + UserType + "': " + DynamicConfig.User.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
533-
"For entity-type '" + ClientType + "': " + DynamicConfig.Client.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
534-
"For entity-type '" + IpType + "': " + DynamicConfig.Ip.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
535-
"For entity-type '" + ClientMetricsType + "': " + DynamicConfig.ClientMetrics.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
536-
"For entity-type '" + GroupType + "': " + DynamicConfig.Group.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
534+
"For entity-type '" + UserType + "': " + QuotaConfig.scramMechanismsPlusUserAndClientQuotaConfigs().names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
535+
"For entity-type '" + ClientType + "': " + QuotaConfig.userAndClientQuotaConfigs().names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
536+
"For entity-type '" + IpType + "': " + QuotaConfig.ipConfigs.names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
537+
"For entity-type '" + ClientMetricsType + "': " + ClientMetricsConfigs.configDef().names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
538+
"For entity-type '" + GroupType + "': " + GroupConfig.configDef().names.asScala.toSeq.sorted.map("\t" + _).mkString(nl, nl, nl) +
537539
s"Entity types '$UserType' and '$ClientType' may be specified together to update config for clients of a specific user.")
538540
.withRequiredArg
539541
.ofType(classOf[String])

Diff for: core/src/main/scala/kafka/server/DynamicConfig.scala

-42
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import kafka.server.DynamicBrokerConfig.AllDynamicConfigs
2121

2222
import java.util.Properties
2323
import org.apache.kafka.common.config.ConfigDef
24-
import org.apache.kafka.coordinator.group.GroupConfig
2524
import org.apache.kafka.server.config.QuotaConfig
2625

2726
import java.util
@@ -54,47 +53,6 @@ object DynamicConfig {
5453
def validate(props: Properties): util.Map[String, AnyRef] = DynamicConfig.validate(brokerConfigs, props, customPropsAllowed = true)
5554
}
5655

57-
object Client {
58-
private val clientConfigs = QuotaConfig.userAndClientQuotaConfigs()
59-
60-
def configKeys: util.Map[String, ConfigDef.ConfigKey] = clientConfigs.configKeys
61-
62-
def names: util.Set[String] = clientConfigs.names
63-
64-
def validate(props: Properties): util.Map[String, AnyRef] = DynamicConfig.validate(clientConfigs, props, customPropsAllowed = false)
65-
}
66-
67-
object User {
68-
private val userConfigs = QuotaConfig.scramMechanismsPlusUserAndClientQuotaConfigs()
69-
70-
def configKeys: util.Map[String, ConfigDef.ConfigKey] = userConfigs.configKeys
71-
72-
def names: util.Set[String] = userConfigs.names
73-
74-
def validate(props: Properties): util.Map[String, AnyRef] = DynamicConfig.validate(userConfigs, props, customPropsAllowed = false)
75-
}
76-
77-
object Ip {
78-
private val ipConfigs = QuotaConfig.ipConfigs
79-
80-
def configKeys: util.Map[String, ConfigDef.ConfigKey] = ipConfigs.configKeys
81-
82-
def names: util.Set[String] = ipConfigs.names
83-
84-
def validate(props: Properties): util.Map[String, AnyRef] = DynamicConfig.validate(ipConfigs, props, customPropsAllowed = false)
85-
}
86-
87-
object ClientMetrics {
88-
private val clientConfigs = org.apache.kafka.server.metrics.ClientMetricsConfigs.configDef()
89-
90-
def names: util.Set[String] = clientConfigs.names
91-
}
92-
93-
object Group {
94-
private val groupConfigs = GroupConfig.configDef()
95-
96-
def names: util.Set[String] = groupConfigs.names
97-
}
9856

9957
private def validate(configDef: ConfigDef, props: Properties, customPropsAllowed: Boolean) = {
10058
// Validate Names

0 commit comments

Comments
 (0)