You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/08/31 14:04:00 UTC
[jira] [Commented] (KAFKA-5650) Provide a simple way for custom
storage engines to use streams wrapped stores (KIP-182)
[ https://issues.apache.org/jira/browse/KAFKA-5650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16149020#comment-16149020 ]
ASF GitHub Bot commented on KAFKA-5650:
---------------------------------------
GitHub user dguy opened a pull request:
https://github.com/apache/kafka/pull/3767
KAFKA-5650: add StateStoreBuilder interface and implementations
Part of KIP-182
- Add `StateStoreBuilder` interface and `WindowStateStoreBuilder`, `KeyValueStateStoreBuilder`, and `SessionStateStoreBuilder` implementations
- Add `StoreSupplier`, `WindowBytesStoreSupplier`, `KeyValueBytesStoreSupplier`, `SessionBytesStoreSupplier` interfaces and implementations
- Add new methods to `Stores` to create the newly added `StoreSupplier` and `StateStoreBuilder` implementations
- Update `Topology` and `InternalTopology` to use the interfaces
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/dguy/kafka kafka-5650
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/3767.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #3767
----
commit ee543690317581dc09d3d3f06d52df0685501960
Author: Damian Guy <da...@gmail.com>
Date: 2017-08-25T16:10:35Z
add StateStoreBuilder interface and implementations
----
> Provide a simple way for custom storage engines to use streams wrapped stores (KIP-182)
> ---------------------------------------------------------------------------------------
>
> Key: KAFKA-5650
> URL: https://issues.apache.org/jira/browse/KAFKA-5650
> Project: Kafka
> Issue Type: Sub-task
> Reporter: Damian Guy
> Assignee: Damian Guy
>
> As per KIP-182:
> A new interface will be added:
> {code}
> /**
> * Implementations of this will provide the ability to wrap a given StateStore
> * with or without caching/loggging etc.
> */
> public interface StateStoreBuilder<T extends StateStore> {
>
> StateStoreBuilder<T> withCachingEnabled();
> StateStoreBuilder<T> withCachingDisabled();
> StateStoreBuilder<T> withLoggingEnabled(Map<String, String> config);
> StateStoreBuilder<T> withLoggingDisabled();
> T build();
> }
> {code}
> This interface will be used to wrap stores with caching, logging etc.
> Additionally some convenience methods on the {{Stores}} class:
> {code}
> public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> persistentKeyValueStore(final String name,
> final Serde<K> keySerde,
> final Serde<V> valueSerde)
>
> public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> inMemoryKeyValueStore(final String name,
> final Serde<K> keySerde,
> final Serde<V> valueSerde)
>
> public static <K, V> StateStoreSupplier<KeyValueStore<K, V>> lruMap(final String name,
> final int capacity,
> final Serde<K> keySerde,
> final Serde<V> valueSerde)
>
> public static <K, V> StateStoreSupplier<WindowStore<K, V>> persistentWindowStore(final String name,
> final Windows windows,
> final Serde<K> keySerde,
> final Serde<V> valueSerde)
>
> public static <K, V> StateStoreSupplier<SessionStore<K, V>> persistentSessionStore(final String name,
> final SessionWindows windows,
> final Serde<K> keySerde,
> final Serde<V> valueSerde)
>
> /**
> * The following methods are for use with the PAPI. They allow building of StateStores that can be wrapped with
> * caching, logging, and any other convenient wrappers provided by the KafkaStreams library
> */
> public <K, V> StateStoreBuilder<WindowStore<K, V>> windowStoreBuilder(final StateStoreSupplier<WindowStore<K, V>> supplier)
>
> public <K, V> StateStoreBuilder<KeyValueStore<K, V>> keyValueStoreBuilder(final StateStoreSupplier<KeyValueStore<K, V>> supplier)
>
> public <K, V> StateStoreBuilder<SessionStore<K, V>> sessionStoreBuilder(final StateStoreSupplier<SessionStore<K, V>> supplier)
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)