Status

Current state: Accepted

Discussion thread: here

Voting thread: here

JIRA: Unable to render Jira issues macro, execution error.

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

KIP-479, implemented in Kafka 2.4.0, added StreamJoined to Kafka Streams as a way to extend features of Materialized to stream-stream joins. During the KIP discussion, adding the option to disable logging was discussed but not implemented through KIP-479. Adding this feature allows users more flexibility over their store and fits with the original goal of extending Materialized features to stream-stream joins.

Public Interfaces

This KIP will add the following two methods as well as a loggingEnabled variable and a topicConfig variable to store any configs passed in when enabling logging.

Methods Added to StreamJoined
public StreamJoined<K, V1, V2> withLoggingEnabled(final Map<String, String> config) {}

public StreamJoined<K, V1, V2> withLoggingDisabled() {}

Proposed Changes

We will add two new methods to StreamJoined to allow users to determine whether they want logging for their stores. This config sets the logging decision for both stores, meaning that if logging is disabled for thisWindowStore, it will also be disabled for otherWindowStore. The default value for loggingEnabled will be true, enabling logging for both stores if the user does not set the values manually.

Compatibility, Deprecation, and Migration Plan

As this is not deprecating or changing default behavior there should be no compatibility issues

Rejected Alternatives

  • Including withRetentionPeriod() → skipped as there is no reason for a user to configure a certain retention time for joins
  • Including withCachingEnabled/Disabled → skipped because joins always retain duplicates which is incompatible with caching (see  Unable to render Jira issues macro, execution error. )
  • No labels