v0.4.0
Breaking Changes
-
get_multiple
has been changed to accept an Iterator over borrowed byte slices. -
ExecutingTransaction::tree
now returns aLockedTransactionTree
, which
holds a shared reference to the transaction now. Previouslytree()
required
an exclusive reference to the transaction, preventing consumers of Nebari from
using multiple threads to process more complicated transactions.This API is paired by a new addition:
ExecutingTransaction::unlocked_tree
.
This API returns anUnlockedTransactionTree
which can be sent across thread
boundaries safely. It offers alock()
function to return a
LockedTransactionTree
when the tread is ready to operate on the tree. -
TransactionManager::push
has been made private. This is a result of the
previous breaking change.TransactionManager::new_transaction()
is a new
function that returns aManagedTransaction
.ManagedTransaction::commit()
is the new way to commit a transaction in a transaction manager.
Fixed
TransactionManager
now enforces that transaction log entries are written
sequentially. The ACID-compliance of Nebari was never broken when
non-sequential log entries are written, but scanning the log file could fail
to retrieve items as the scanning algorithm expects the file to be ordered
sequentially.
Added
ThreadPool::new(usize)
allows creating a thread pool with a maximum number
of threads set.ThreadPool::default()
continues to usenum_cpus::get
to
configure this value automatically.