Kafka Streams time-ordered / dual-schema RocksDB stores (used for stream-stream joins and suppression buffers) are the remaining KIP-892 segmented stores without transactional support and isolation-aware interactive queries. A READ_COMMITTED interactive query against a time-ordered window or session store currently returns writes that are still staged in an uncommitted transaction. The standard (non-time-ordered) window and session RocksDB stores already implement the correct transactional staging and isolation behavior.
Extend that same behavior to the AbstractDualSchemaRocksDBSegmentedBytesStore family — time-ordered window and session stores, including with-headers / indexed variants — so that:
1. While a transactional store has staged but uncommitted puts, READ_COMMITTED interactive-query reads observe only committed data; READ_UNCOMMITTED observes the staged data (point gets and range fetches).
2. After commit, both isolation levels converge on the now-durable data.
3. The position used to bound READ_COMMITTED queries excludes staged writes until commit; the owner / READ_UNCOMMITTED position view may include them, and commit publishes staged position atomically with flushing staged segment writes.
4. The stream-thread owner keeps reading through the normal live store methods; interactive queries read through an isolation-level read-only view (wired from RocksDBTimeOrderedWindowStore / RocksDBTimeOrderedSessionStore into StoreQueryUtils dispatch).
5. For indexed dual-schema stores, index iteration and the subsequent base-store value lookup must use the same isolation snapshot. Interactive-query reads must never mutate the store (in particular, skip owner-path stale-index repair).
6. Non-transactional stores must read identically under both isolation levels.
The plain time-ordered key-value suppression-buffer store need not grow an interactive-query surface, but must remain correct on the transactional write/commit path. Do not add an isolation surface to the SegmentedBytesStore interface; keep isolation plumbing as package-private utilities shared by the live methods and the read view, matching the existing non-time-ordered stores.
Interface contract — the change must expose exactly this surface:
Transactional dual-schema time-ordered bytes stores must expose: (1) readOnly(IsolationLevel) on AbstractRocksDBTimeOrderedSegmentedBytesStore returning a view with get(Bytes) and fetch(Bytes, long, long) that honor READ_COMMITTED vs READ_UNCOMMITTED; (2) getCommittedPosition() that excludes staged writes until commit, while getPosition() includes them when transactional; (3) approximateNumUncommittedBytes() aggregating per-segment staged bytes. Wrapping RocksDBTimeOrderedWindowStore / RocksDBTimeOrderedSessionStore must implement readOnly(IsolationLevel) and pass committed vs live position into StoreQueryUtils for IQ.
Work only inside this repository checkout. Make the code change the task
describes, keeping the diff focused — no drive-by refactors.
When you are done, leave your changes committed or in the working tree;
they are collected automatically.
Stay on this snapshot checkout (`task/ycb_kafka_c75e66426bf53`). Never checkout, pull, or rebase onto `main`. That branch is a README-only orphan.
Stay on this HEAD. Do not fetch another default branch. Push only on the Cursor-created `crazy-cursor/…` side branch from this HEAD.
Some past runs of this task were launched with a different prompt (the prompt template changed since, or those runs predate this benchmark's stored prompt). Each run persists the exact prompt it sent at launch — that per-launch record is the audit trail; this page shows only the current one.
Reference diff
The task commit's diff against its first parent — the judge's comparison target.