Thanks for the KIP. Overall I like the idea to close this gap.

However, I am wondering if we should close others gaps first? In particular, IIRC, we have a few cases for which we only have a RocksDB implementation for a store, and thus, adding an in-memory version for these stores first, to make the current `IN_MEMORY` parameter work, might be the first step?

In particular, this holds for the new versioned-store (but I actually believe the is some other internal store with no in-memory implementation). -- For `suppress()` it's actually other way around we we only have an in-memory implementation. Do you aim to allow custom stores for `suppress()`, too?

Btw: Should versioned stores also be covered by the KIP (ie, `StoreTypeSpec`)? We did consider to add a new option `VERSIONED` to the existing `default.dsl.store` config, but opted out for various reasons.

Last, I am not sure if the new parameter replacing the existing one is the best way to go? Did you put the idea to add `CUSTOM` to the existing config into rejected alternative. Personally, I would prefer to add `CUSTOM` as I would like to optimize to easy of use for the majority of users (which don't implement a custom store), but only switch to in-memory sometimes. -- As an alternative, you would also just extend `dsl.default.store` (it's just a String) and allow to pass in anything. If it's matches existing `ROCKS_DB` or `IN_MEMORY` we just process it as we do know, and if know we assume it's a fully qualified class name and try to instantiate it? -- Given that we plan to keep the store-enum, is seems cleaner to keep the existing config and keep both the config and enum aligned to each other?


It's just preliminary thought. I will need to go back an take a more detailed look into the code to grok how the propose `StoreTypeSpec` falls into place. Also wondering how it would related to the existing `Stores` factory?

-Matthias


On 7/21/23 6:45 AM, Colt McNealy wrote:
Sophie—

Thanks for chiming in here. +1 to the idea of specifying the ordering
guarantees that we make in the StorageTypeSpec javadocs.

Quick question then. Is the javadoc that says:

Order is not guaranteed as bytes lexicographical ordering might not
represent key order.

no longer correct, and should say:

Order guarantees depend on the underlying implementation of the
ReadOnlyKeyValueStore. For more information, please consult the
[StorageTypeSpec javadocs](....)

Thanks,
Colt McNealy

*Founder, LittleHorse.dev*


On Thu, Jul 20, 2023 at 9:28 PM Sophie Blee-Goldman <ableegold...@gmail.com>
wrote:

Hey Almog, first off, thanks for the KIP! I (and others) raised concerns
over how restrictive the default.dsl.store config would be if not
extendable to custom store types, especially given that this seems to be
the primary userbase of such a feature. At the time we didn't really have
any better ideas for a clean way to achieve that, but what you proposed
makes a lot of sense to me. Happy to see a good solution to this, and
hopefully others will share my satisfaction :P

I did have one quick piece of feedback which arose from an unrelated
question posed to the dev mailing list w/ subject line
"ReadOnlyKeyValueStore#range()
Semantics"
<https://lists.apache.org/thread/jbckmth8d3mcgg0rd670cpvsgwzqlwrm>. I
recommend checking out the full thread for context, but it made me think
about how we can leverage the new StoreTypeSpec concept as an answer to the
long-standing question in Streams: where can we put guarantees of the
public contract for RocksDB (or other store implementations) when all the
RocksDB stuff is technically internal.

Basically, I'm suggesting two things: first, call out in some way (perhaps
the StoreTypeSpec javadocs) that each StoreTypeSpec is considered a public
contract in itself and should outline any semantic guarantees it does, or
does not, make. Second, we should add a note on ordering guarantees in the
two OOTB specs: for RocksDB we assert that range queries will honor
serialized byte ordering, whereas the InMemory flavor gives no ordering
guarantee whatsoever at this time.

Thoughts?

-Sophie

On Thu, Jul 20, 2023 at 4:28 PM Almog Gavra <almog.ga...@gmail.com> wrote:

Hi All,

I would like to propose a KIP to expand support for default store types
(KIP-591) to encompass custom store implementations:


https://cwiki.apache.org/confluence/display/KAFKA/KIP-954%3A+expand+default+DSL+store+configuration+to+custom+types

Looking forward to your feedback!

Cheers,
Almog



Reply via email to