You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Bill Bejeck (Jira)" <ji...@apache.org> on 2026/04/17 18:25:00 UTC

[jira] [Created] (KAFKA-20471) KIP-892: Implement Generic Transaction Buffer (Phase 0)

Bill Bejeck created KAFKA-20471:
-----------------------------------

             Summary: KIP-892: Implement Generic Transaction Buffer (Phase 0)
                 Key: KAFKA-20471
                 URL: https://issues.apache.org/jira/browse/KAFKA-20471
             Project: Kafka
          Issue Type: Sub-task
            Reporter: Bill Bejeck


Deliver the TransactionBuffer abstraction as a standalone, independently mergeable piece before KIP-892 core work begins. This must land and stabilize before Phase 1 begins. Can proceed in parallel with the StateStore.java interface design.

Files to create:
- state/internals/TransactionBuffer.java — interface
- state/internals/AbstractTransactionBuffer.java — shared ConcurrentSkipListMap + ReentrantReadWriteLock logic
- state/internals/RocksDBTransactionBuffer.java — RocksDB implementation (plain WriteBatch)
- state/internals/InMemoryTransactionBuffer.java — in-memory implementation
- state/internals/StagedMergeIterator.java — merge iterator over staging snapshot + base iterator

Files to modify:
- StreamsConfig.java — add transactional.state.stores boolean config
- state/internals/RocksDBStore.java — add TransactionalDBAccessor inner class; wire in init()
- state/internals/InMemoryKeyValueStore.java — wire InMemoryTransactionBuffer in init()

Unit tests:
- RocksDBTransactionBufferTest — stage/get/commit/rollback, cross-thread read correctness
- InMemoryTransactionBufferTest — same for in-memory
- StagedMergeIteratorTest — overlapping keys, tombstones, ordering
- TransactionBufferConcurrencyTest — concurrent scan creation vs. commit, no duplicates

Integration tests:
- RocksDBStoreWithGTBIntegrationTest — IQ sees staged writes before commit; committed state correct after



--
This message was sent by Atlassian Jira
(v8.20.10#820010)