Versions Compared

Key

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

...

Currently, Kafka Streams does not support ProcessingExceptionHandler for GlobalKTable processors. When a processing exception occurs during GlobalKTable record processing, the GlobalStreamThread fails and terminates, causing the entire Kafka Streams application to shut down. This behaviour is inconsistent with regular KStream/KTable processing, where ProcessingExceptionHandler allows applications to handle exceptions gracefully and continue processing.

Public Interfaces

New property:

NameTypeDefaultDescription

default.processing.exception.handler.invoke.for.global



BooleanFalse

When false (default), maintains backwards-compatible behaviour where global exceptions terminate or gracefully shut down the application. When true, enables the ProcessingExceptionHandler for GlobalKTable exceptions. This config will be removed in Kafka Streams 5.0, where global exception handling will be enabled by default

Proposed Changes

This KIP extends the applicability of the existing ProcessingExceptionHandler to GlobalKTable processors. Currently, this exception handler only applies to regular stream processing (KStream/KTable). After this KIP, the same handler will also handle processing exceptions in GlobalKTable. The feature is gated behind a configuration flag to prevent unexpected behaviour in existing handler implementations that may not be designed to handle GlobalKTable exceptions, which could cause crashes or undesired side effects. This provides a safe migration path for users to test and adapt their exception handling logic.

...

The infrastructure for configuration and instantiation of the ProcessingExceptionHandler already exists. However, it is currently only passed to regular stream tasks, not to global state update tasks. This KIP extends the existing pattern to pass ProcessingExceptionHandler to GlobalStateUpdateTask, mirroring how DeserializationExceptionHandler is already passed to both regular and global tasks. This enables exception handling during GlobalKTable during GlobalKTable processor execution.

Implementation

...