DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
| Table of Contents |
|---|
Status
Current state: "Under Discussion" Accepted
Discussion thread: here
JIRA: here
...
Public Interfaces
New property:
| Name | Type | Default | Importance | Deprecated | Removed | Description |
|---|---|---|---|---|---|---|
processing.exception.handler.global.enabled | Boolean | False | HIGH | 4.3 | 5.0 | 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.
...
Add ProcessingExceptionHandler as a constructor parameter to GlobalStateUpdateTask and pass it to processor initialisation, mirroring the existing DeserializationExceptionHandler implementation. When invoked, the ProcessingExceptionHandler instance will call the handleError() method (not handle()). This provides automatic backward compatibility through the implementation defined in KIP-1034.
Limitation
In this KIP, DLQ records returned by the handler will be logged with full metadata but NOT sent to Kafka for GlobalKTable processors. This is because GlobalKTable processing does not currently have producer infrastructure. We will cover DLQ in a separate KIP.
...
- Fully backwards compatible by default - existing behaviour is preserved unless config is explicitly enabled
- New configuration `default.`processing.exception.handler.invoke.for.global` global.enabled` defaults to `false`
- Config is deprecated immediately upon introduction
- In Kafka Streams 5.0, this config will be removed, and the handler will always be invoked for GlobalKTable exceptions
- Migration path: Users should test with the config enabled before upgrading to 5.0
...