Skip to content

v0.4.0

Compare
Choose a tag to compare
@ecton ecton released this 01 Mar 18:35
· 51 commits to main since this release
cd71cf5

Breaking Changes

  • get_multiple has been changed to accept an Iterator over borrowed byte slices.

  • ExecutingTransaction::tree now returns a LockedTransactionTree, which
    holds a shared reference to the transaction now. Previously tree() 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 an UnlockedTransactionTree which can be sent across thread
    boundaries safely. It offers a lock() 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 a ManagedTransaction. 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 use num_cpus::get to
    configure this value automatically.