Hey Uladzislau, thanks for the feedback.

On *changelog topics*: since they are regular topics like any others, we
didn’t need to call them out explicitly in the KIP. That said, I’m fine
adding a short note there as it doesn’t hurt.

On *non-timestamped state stores*: timestamped stores can also store
records without a timestamp, so there’s no strong reason to include
separate non-timestamped stores, and we may deprecate them at some point.

Bests,
Alieh

On Sun, Jan 25, 2026 at 5:50 PM Uladzislau Blok <[email protected]> wrote:

> Hello Alieh,
>
> Thanks for the KIP! The proposal looks very interesting.
>
> I have two questions/observations:
>
> bloku_1: It makes sense that headers in the changelog topic would be
> stored as native Kafka record headers. This became clear to me after
> following the discussion thread, but I couldn't find an explicit mention of
> it in the KIP document itself. Should we document this explicitly in the
> KIP to avoid any ambiguity?
>
> bloku_2: While I support the decision to move the DSL stores update to a
> separate KIP, I’m curious about the exclusion of non-timestamped stores. If
> we are already touching the PAPI (Processor API) for this change, wouldn't
> it make sense to include non-timestamped stores as well, or is there a
> specific technical constraint keeping them out of scope for now?
>
> Looking forward to your response,
> Uladzislau Blok
>
> On Fri, Jan 16, 2026 at 6:03 PM Alieh Saeedi via dev <[email protected]>
> wrote:
>
>> Updates to KIP
>>
>> -
>>
>> 1- A varint header_size field is introduced to enable lazy deserialization
>> when scanning large ranges.
>> -
>>
>> 2- The current serialization/deserialization methods in StateSerdes are
>> marked as deprecated to keep the class concise.
>> -
>>
>> 3- Note that VersionedKeyValueStoreWithHeaders cannot extend
>> VersionedKeyValueStore because their methods differ in input and/or output
>> types. In particular, the VersionedRecord returned by
>> VersionedKeyValueStore
>> methods is a final class and therefore cannot be subclassed.
>>
>> Thanks,
>> Alieh
>>
>> On Thu, Jan 15, 2026 at 4:46 PM Chia-Ping Tsai <[email protected]>
>> wrote:
>>
>> > chia_03: Regarding the header size, using a Varint is consistent with
>> > Kafka's serialization standards. It avoids the overhead of a large
>> > fixed-size field while still achieving the efficient skipping
>> capability we
>> > want.
>> >
>> > chia_04: That makes sense.
>> >
>> > Alieh Saeedi via dev <[email protected]> 於 2026年1月15日週四 下午10:59寫道:
>> >
>> >> Hi Chia-Ping Tsai,
>> >>
>> >> Thanks for the feedback.
>> >>
>> >> chia_03: The difficulty with adding a header length is deciding
>> between a
>> >> fixed-size field for all records or a configuration allowing users to
>> >> define a maximum. Alternatively, we could consider using a varint for
>> the
>> >> header length to remain flexible and space-efficient.
>> >>
>> >> chia_04:
>> >> It only makes sense to give the second column family its own RocksDB
>> >> config if its access pattern or data characteristics are materially
>> >> different.
>> >> Here we have the same keys, the
>> >> same or very similar read/write patterns (e.g., same get, put, range
>> >> queries),
>> >> and roughly comparable value sizes (CF2 slightly larger per entry).
>> >> Then from RocksDB’s perspective the two CFs behave very similarly:
>> >> both are generic key–value blobs, written and read with the same
>> >> pattern. Most of the important RocksDB options (compaction style,
>> >> write buffer sizes, block cache, bloom filters, etc.) would be tuned
>> >> the same way for both.
>> >> Do you see huge difference between these two?
>> >>
>> >> Thanks,
>> >> Alieh
>> >>
>> >> On Thu, Jan 15, 2026 at 3:03 AM Chia-Ping Tsai <[email protected]>
>> >> wrote:
>> >>
>> >> > hi
>> >> >
>> >> > chia_03: should we provide a more effective way to load the value
>> >> without
>> >> > scanning the header bytes? (e.g., by storing the total size of
>> headers)
>> >> >
>> >> > chia_04: Do we need to allow separate Rocksdb configuration for the
>> new
>> >> > column family
>> >> >
>> >> > Best,
>> >> > Chia-Ping
>> >> >
>> >> > On 2026/01/09 22:14:18 Alieh Saeedi via dev wrote:
>> >> > > Hi all,
>> >> > >
>> >> > > I’d like to start a discussion on KIP-1271, which proposes allowing
>> >> Kafka
>> >> > > Streams state stores to preserve record headers.
>> >> > > This would let header-based metadata like schema IDs, tracing info,
>> >> and
>> >> > > feature flags be stored and restored alongside values.
>> >> > > The KIP introduces header-aware store types and a small config to
>> cap
>> >> the
>> >> > > size of headers written into state.
>> >> > > Details are in the KIP:
>> >> > >
>> >> >
>> >>
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1271%3A+Allow+to+Store+Record+Headers+in+State+Stores
>> >> > > .
>> >> > > I’d appreciate your feedback and questions on the proposal.
>> >> > >
>> >> > > Thanks,
>> >> > > Alieh
>> >> > >
>> >> >
>> >>
>> >
>>
>

Reply via email to