Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
package org.apache.kafka.streams;
 
public enum StreamsUncaughtExceptionResponse {
	REPLACE_THREAD,
    SHUTDOWN_KAFKA_STREAMS_CLIENT,
    SHUTDOWN_KAFKA_STREAMS_APPLICATION;
}

 
public interface StreamsUncaughtExceptionHandler {
    StreamsUncaughtExceptionResponse handle(final Throwable exception);
}

KafkaStreams.java/**
* Set the handler invoked when a {@link StreamsConfig#NUM_STREAM_THREADS_CONFIG internal thread} abruptly
* terminates due to an uncaught exception.
*
* @param eh the uncaught exception handler of type {@link StreamsUncaughtExceptionHandler} for all internal threads; {@code null} deletes the current handler
* @throws IllegalStateException if this {@code KafkaStreams} instance is not in state {@link State#CREATED CREATED}.
*/public void setUncaughtExceptionHandler(final StreamsUncaughtExceptionHandler eh) ;

...

  • The current thread is shutdown and transits to state DEAD.

  • A new thread is started if the Kafka Streams client is in state RUNNING or REBALANCING.

  • For the Global thread this option will log an error and revert to shutting down the client until the option had been added

SHUTDOWN_CLIENT SHUTDOWN_KAFKA_STREAMS_CLIENT (for global thread this is the default)

  • All Stream Threads in the client are shutdown and they transit to state DEAD
  • The Global Thread is shutdown if the client has one
  • The Kafka Streams client transits to state NOT_RUNNING.

  • The State directory cleaner thread will stop 
  • The RocksDB metrics recording thread will stop.

SHUTDOWN_KAFKA_STREAMS_APPLICATION (default until Replace is ready)

  • The shutdown is communicated to the other Kafka Streams clients through the rebalance protocol.

  • All Stream Threads across the entire application are shutdown and they transit to state DEAD

  • All Global Threads across the entire application are shutdown
  • All Kafka Streams clients, i.e., the entire Kafka Streams application, is shutdown.

  • All Kafka Streams clients transit to state ERROR. 

  • The State directory cleaner thread stop
  • The RocksDB metrics recording thread will stop.

...