Versions Compared

Key

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

Table of Contents

Status

Current state: Under DiscussionAccepted

Discussion thread: here [Change the link from the KIP proposal email archive to your own email thread]

Voting thread: here

JIRA:

Jira
serverASF JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyKAFKA-9126

...

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

...

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

Code Block
titleMethods Added to StreamJoined
public StreamJoined<K, V1, V2> withLoggingEnabled(final WindowBytesStoreSupplier otherStoreSupplier) {}

public StreamJoined<KMap<String, V1, V2> withLoggingDisabled(final WindowBytesStoreSupplier otherStoreSupplierString> config) {}

public StreamJoined<K, V1, V2> withCachingEnabled(final WindowBytesStoreSupplier otherStoreSupplier) {}

public StreamJoined<K, V1, V2> withCachingDisabled(final WindowBytesStoreSupplier otherStoreSupplierwithLoggingDisabled() {}

Proposed Changes

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

...

Rejected Alternatives

  • Including `withRetentionPeriodwithRetentionPeriod()` → 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 
    Jira
    serverASF JIRA
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId5aa69414-a9e9-3523-82ec-879b028fb15b
    keyKAFKA-9921
    )