[ https://issues.apache.org/jira/browse/KAFKA-14922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17714770#comment-17714770 ]
Matthias J. Sax commented on KAFKA-14922: ----------------------------------------- {quote}We could add a warning with the list of internal topics found to delete and ask for a confirmation to make it harder to inadvertently delete internal topics of other application IDs. {quote} There is already a `--dry-run` option, but we could of course also try adding a `--execute` one and flip it around... Would need a KIP of course. {quote}An _improvement_ would be to only return topics that exactly contains the applicationId provided.{quote} {color:#172b4d}I don't believe it's possible to implement this.{color} {quote}Would not cover the case where other applicationIds starts with applicationId provided (foo-v1 would delete foo-v1-2 topics, etc) {quote} Both seem to be the same issue? Note: we already do `topicName.startsWith(options.valueOf(applicationIdOption) + "-")`, ie, we add the expected `-` – if your app.id uses a dash like `myApp-v1` there is nothing we can do about it. It provides a protection for `appV1` vs `appV2` and if you pass in `app` it won't match either of them, but if `-` is use inside app.id, it seems there is nothing we can do about it. > kafka-streams-application-reset deletes topics not belonging to specified > application-id > ---------------------------------------------------------------------------------------- > > Key: KAFKA-14922 > URL: https://issues.apache.org/jira/browse/KAFKA-14922 > Project: Kafka > Issue Type: Bug > Components: streams, tools > Affects Versions: 3.4.0 > Reporter: Jørgen > Priority: Major > > 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: > {code:java} > 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.{code} > 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. -- This message was sent by Atlassian Jira (v8.20.10#820010)