Details
Description
Slack-thread: https://confluentcommunity.slack.com/archives/C48AHTCUQ/p1681908267206849
When running the command kafka-streams-application-reset --bootstrap-servers $BOOTSTRAP --application-id foo all internal topics that starts with foo is deleted. This happens even if there's no application-id named foo.
Example:
Application IDs: foo-v1 foo-v2 Internal topics: foo-v1-repartition-topic-repartition foo-v2-repartition-topic-repartition Application reset: kafka-streams-application-reset --bootstrap-servers $BOOTSTRAP --application-id foo > No input or intermediate topics specified. Skipping seek. Deleting inferred internal topics [foo-v2-repartition-topic-repartition, foo-v1-repartition-topic-repartition] Done.
Expected behaviour is that the command fails as there are no application-id's with the name foo instead of deleting all foo* topics.
This is critical on typos or if application-ids starts with the same name as others (for example if we had foo-v21 and wanted to reset foo-v2)
The bug should be located here: https://github.com/apache/kafka/blob/c14f56b48461f01743146d58987bc8661ba0d459/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java#L693
Should check that the topics matches the application-id exactly instead of checking that it starts with the application-id.