-
Notifications
You must be signed in to change notification settings - Fork 0
Logbook January 2026
paolino edited this page Jan 12, 2026
·
6 revisions
Issue: #7
Christmas time made me realize that csmt interface doesn't support clients to plug in operations inside the transactions.
Looking at cardano-utxo-csmt we need that in at least 2 cases
- changes comes in batches (one block -> multiple txs -> multiple changes for each tx)
- inverse operations tail queue has to be updated atomically with the csmt
The haskell library doesn't support that so I implemented a small library over it with 2 goals
- expose a monad (DSL) to track transaction building in memory
- have a way to index different rocksdb column-families when using the DSL inside the transaction
PRs: #8
- Updated tests
- Moved the rocksdb-transaction lib in a separate sub-package
- stop supporting arx format and mode to AppImage (arx doesn't build anymore 🤷 )
Issue: #7
PRs: #9
- Added support for cursor operations
- The DSL now supports cursors that can be opened inside a transaction and used to iterate over the tables contents
- The cursor DSL operations are mostly reflecting the rocksdb but as with the transaction DSL they are implementable by other KV backends https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/src/rocksdb-transactions/Database/KV/Cursor.hs#L50
- The transaction DSL now supports cursor operations https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/src/rocksdb-transactions/Database/KV/Transaction.hs#L105 . The trick is that the cursor DSL can lift the transaction DSL operations while itself being a transaction operation.
- Added an E2E test for cursor operations inside transactions https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/test/CSMT/Backend/RocksDB/TransactionSpec.hs#L102
Issue: #7
- Fixed a bug in the cursor implementation where the
seekoperation was not using the column type
Issue: #7
- Added support for iterating outside transactions
- Added synchronized runner for transactions. This should help with concurrent usage of the same DB instance across multiple threads.
- Added reset instruction to transaction DSL