aloknnikhil commented on a change in pull request #9916:
URL: https://github.com/apache/kafka/pull/9916#discussion_r561315012
##########
File path: core/src/test/scala/unit/kafka/server/KafkaConfigTest.scala
##########
@@ -941,4 +950,38 @@ class KafkaConfigTest {
})
}
+ @Test
+ def testInvalidQuorumVotersConfig(): Unit = {
+ assertInvalidQuorumVoters("1")
+ assertInvalidQuorumVoters("1@")
+ assertInvalidQuorumVoters("1:")
+ assertInvalidQuorumVoters("blah@")
+ assertInvalidQuorumVoters("1@kafka1")
+ assertInvalidQuorumVoters("1@kafka1:9092,")
+ assertInvalidQuorumVoters("1@kafka1:9092,")
+ assertInvalidQuorumVoters("1@kafka1:9092,2")
+ assertInvalidQuorumVoters("1@kafka1:9092,2@")
+ assertInvalidQuorumVoters("1@kafka1:9092,2@blah")
+ assertInvalidQuorumVoters("1@kafka1:9092,2@blah,")
+ }
+
+ private def assertInvalidQuorumVoters(value: String): Unit = {
+ val props = TestUtils.createBrokerConfig(0, TestUtils.MockZkConnect)
+ props.put(RaftConfig.QUORUM_VOTERS_CONFIG, value)
+ assertThrows(classOf[ConfigException], () => KafkaConfig.fromProps(props))
+ }
+
+ @Test
+ def testValidQuorumVotersConfig(): Unit = {
+ assertValidQuorumVoters("", 0)
+ assertValidQuorumVoters("[email protected]:9092", 1)
+ assertValidQuorumVoters("1@kafka1:9092,2@kafka2:9092,3@kafka3:9092", 3)
+ }
+
+ private def assertValidQuorumVoters(value: String, expectedVoterCount: Int):
Unit = {
+ val props = TestUtils.createBrokerConfig(0, TestUtils.MockZkConnect)
+ props.put(RaftConfig.QUORUM_VOTERS_CONFIG, value)
+ assertDoesNotThrow(() => KafkaConfig.fromProps(props))
Review comment:
Makes sense. Removed.
##########
File path: raft/src/main/java/org/apache/kafka/raft/RaftConfig.java
##########
@@ -236,4 +176,31 @@ private static Integer parseVoterId(String idString) {
return voterMap;
}
+ public static class ControllerQuorumVotersValidator implements
ConfigDef.Validator {
+ @Override
+ public void ensureValid(String name, Object value) {
+ if (value == null) {
+ throw new ConfigException(name, null);
+ }
+
+ @SuppressWarnings("unchecked")
+ List<String> voterStrings = (List) value;
+
+ if (voterStrings.size() == 0) {
+ // TODO: Add a flag to skip validation for an empty voter
string, conditionally.
+ // For now, skip anyway. See
https://github.com/apache/kafka/pull/9916#discussion_r560611932
Review comment:
Fair enough. Removed.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]