Skip to content

Commit 97a83fa

Browse files
Restrict kafka-consumer-groups --list to valid consumer group types
1 parent 67b3d69 commit 97a83fa

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,11 @@ static Set<GroupState> groupStatesFromString(String input) {
177177

178178
@SuppressWarnings("Regexp")
179179
static Set<GroupType> consumerGroupTypesFromString(String input) {
180+
Set<GroupType> validTypes = Set.of(GroupType.CLASSIC, GroupType.CONSUMER);
180181
Set<GroupType> parsedTypes = Stream.of(input.toLowerCase().split(",")).map(s -> GroupType.parse(s.trim())).collect(Collectors.toSet());
181-
if (parsedTypes.contains(GroupType.UNKNOWN)) {
182-
List<String> validTypes = Arrays.stream(GroupType.values()).filter(t -> t != GroupType.UNKNOWN).map(Object::toString).collect(Collectors.toList());
183-
throw new IllegalArgumentException("Invalid types list '" + input + "'. Valid types are: " + String.join(", ", validTypes));
182+
if (!validTypes.containsAll(parsedTypes)) {
183+
throw new IllegalArgumentException("Invalid types list '" + input + "'. Valid types are: " +
184+
String.join(", ", validTypes.stream().map(GroupType::toString).collect(Collectors.toSet())));
184185
}
185186
return parsedTypes;
186187
}

tools/src/test/java/org/apache/kafka/tools/consumer/group/ListConsumerGroupTest.java

+4
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,10 @@ public void testConsumerGroupTypesFromString() {
662662
result = ConsumerGroupCommand.consumerGroupTypesFromString("Consumer, Classic");
663663
Assertions.assertEquals(ListConsumerGroupTest.set(Arrays.asList(GroupType.CONSUMER, GroupType.CLASSIC)), result);
664664

665+
Assertions.assertThrows(IllegalArgumentException.class, () -> ConsumerGroupCommand.consumerGroupTypesFromString("Share"));
666+
667+
Assertions.assertThrows(IllegalArgumentException.class, () -> ConsumerGroupCommand.consumerGroupTypesFromString("streams"));
668+
665669
Assertions.assertThrows(IllegalArgumentException.class, () -> ConsumerGroupCommand.consumerGroupTypesFromString("bad, wrong"));
666670

667671
Assertions.assertThrows(IllegalArgumentException.class, () -> ConsumerGroupCommand.consumerGroupTypesFromString(" bad, generic"));

0 commit comments

Comments
 (0)