wcarlson5 commented on code in PR #12465: URL: https://github.com/apache/kafka/pull/12465#discussion_r990331318
########## streams/src/main/java/org/apache/kafka/streams/KafkaStreams.java: ########## @@ -1096,7 +1096,7 @@ private Optional<String> removeStreamThread(final long timeoutMs) throws Timeout // make a copy of threads to avoid holding lock for (final StreamThread streamThread : new ArrayList<>(threads)) { final boolean callingThreadIsNotCurrentStreamThread = !streamThread.getName().equals(Thread.currentThread().getName()); - if (streamThread.isAlive() && (callingThreadIsNotCurrentStreamThread || getNumLiveStreamThreads() == 1)) { + if (callingThreadIsNotCurrentStreamThread || getNumLiveStreamThreads() == 1) { Review Comment: So this check is important and I don't think we can just remove it. The important thing this is doing is preventing a thread from being removed that is already dead. If a thread is removed but not finished cleaning up it is still in the thread list. If we then call remove threads and that dead thread is picked then no thread will really be removed so that call is broken. Even worse though the cache size of all the other threads are changed to some value that is not correct. Instead of just removing the check you can maybe change to do something like `thread.state() == StreamThread.State.DEAD` Maybe you can add a helper method to check that instead of using the native methods if w really need to. On a side note it is concerning to me that we can't mock native methods anymore that does not seem a good thing. Why are we removing this ablity? -- 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. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org