[ 
https://issues.apache.org/jira/browse/KAFKA-14922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18094094#comment-18094094
 ] 

Preethi KCS commented on KAFKA-14922:
-------------------------------------

Based on the latest comments, I think we have converged on the design, but I 
wanted to summarize it to make sure we're all aligned before I update the PR.

There were two possible approaches:
 # *Reuse the existing* {{*--force*}} *flag* to bypass the new application-id 
existence validation.
 # *Introduce a separate flag* (for example, 
{{{}--skip-application-id-validation{}}}) while keeping {{--force}} only for 
removing active consumer group members.

>From the discussion, my understanding is that reusing {{--force}} is the 
>preferred approach.

The reasoning is that {{--force}} is intended to mean {*}"force the reset"{*}, 
rather than {*}"force remove members"{*}. Removing active members is simply one 
implementation detail that allows the reset to proceed. Similarly, bypassing 
the application-id existence validation is another check that can block the 
reset. Since these two scenarios are mutually exclusive in practice (if the 
group doesn't exist, there are no members to remove; if there are active 
members, the group necessarily exists), a single {{--force}} does not introduce 
ambiguous runtime behavior.

Given that understanding, this appears to be an implementation change rather 
than introducing new CLI semantics, so I don't think a KIP is necessary for 
this fix.

I'll proceed with updating the PR and documentation accordingly. Please let me 
know if you have any questions or concerns.
[~mjsax] [~alisa23] 

> 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
>            Assignee: Preethi KCS
>            Priority: Major
>              Labels: beginner, needs-kip, newbie
>
> 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)

Reply via email to