You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Guozhang Wang (JIRA)" <ji...@apache.org> on 2019/02/12 01:29:00 UTC

[jira] [Commented] (KAFKA-7918) Streams store cleanup: inline byte-store generic parameters

    [ https://issues.apache.org/jira/browse/KAFKA-7918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16765583#comment-16765583 ] 

Guozhang Wang commented on KAFKA-7918:
--------------------------------------

I made a quick pass on the current code base, and it seems at least the following classes can get rid of generics as they are all internal classes and there's no public APIs that could get them out of a generic type (need to have another pair of eyes to validate):

1) RocksDBWindowStore
2) RocksDBSessionStore
3) InMemoryKeyValueStore
4) LRUStore

> Streams store cleanup: inline byte-store generic parameters
> -----------------------------------------------------------
>
>                 Key: KAFKA-7918
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7918
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: John Roesler
>            Assignee: Sophie Blee-Goldman
>            Priority: Major
>
> Currently, the fundamental layer of stores in Streams is the "bytes store".
> The easiest way to identify this is in `org.apache.kafka.streams.state.Stores`, all the `StoreBuilder`s require a `XXBytesStoreSupplier`. 
> We provide several implementations of these bytes stores, typically an in-memory one and a persistent one (aka RocksDB).
> Inside these bytes stores, the key is always `Bytes` and the value is always `byte[]` (serialization happens at a higher level). However, the store implementations are generically typed, just `K` and `V`.
> This is good for flexibility, but it makes the code a little harder to understand. I think that we used to do serialization at a lower level, so the generics are a hold-over from that.
> It would simplify the code if we just inlined the actual k/v types and maybe even renamed the classes from (e.g.) `InMemoryKeyValueStore<K,V>` to `InMemoryKeyValueBytesStore`, and so forth.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)