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

Matthias J. Sax commented on KAFKA-19724:
-----------------------------------------

OutOfMemoryError is also a Throwable. – Yes, in general, Error / Throwable 
should not be caught. But if you just try to log, it should be ok?

The problem with the Java uncaught exception handler is, that the thread is 
already dead. So I think you can do even less? – I am also not objecting to use 
the Java uncaught exception handler as a last line of defense (but I am not 
sure if we need to do this, when we can also get it done by catching 
Throwable), but if we go this route, we should do it for all threads, including 
`StreamThread` and `StateUpdaterThread`?

Maybe [~lucasbru] or [~cadonna] have an opinion?

> Global stream thread ignores all exceptions
> -------------------------------------------
>
>                 Key: KAFKA-19724
>                 URL: https://issues.apache.org/jira/browse/KAFKA-19724
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 3.4.0
>            Reporter: Mikołaj Bul
>            Assignee: Fatih Celik
>            Priority: Major
>              Labels: beginner, newbie
>
> {{globalStreamThread}} in {{KafkaStreams}} class ignores all exceptions and 
> fails to apply the user-provided {{StreamsUncaughtExceptionHandler}} in:
> {code:java}
> public void setUncaughtExceptionHandler(final StreamsUncaughtExceptionHandler 
> userStreamsUncaughtExceptionHandler)
> {code}
> This can lead to streams being stuck in faulty state after an exception is 
> thrown during their initialization phase (e.g. failure to load the RocksDB 
> native library). The exception isn't logged, so debugging such problem is 
> difficult.
> From my understanding of the {{b62d8b97}} commit message, the following code 
> is unnecessary as the {{globalStreamThread}} can't be replaced and the issue 
> description from KAFKA-12699 doesn't apply to it. Removing it should help.
> {code:java}
> if (globalStreamThread != null) {
>     globalStreamThread.setUncaughtExceptionHandler((t, e) -> { }
>     );
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to