pub struct TransactionManager { /* private fields */ }Expand description
Manages transactions and MVCC versioning.
Implementations§
Source§impl TransactionManager
impl TransactionManager
Sourcepub fn record_write(
&self,
tx_id: TxId,
entity: impl Into<EntityId>,
) -> Result<()>
pub fn record_write( &self, tx_id: TxId, entity: impl Into<EntityId>, ) -> Result<()>
Records a write operation for the transaction.
§Errors
Returns an error if the transaction is not active.
Sourcepub fn record_read(
&self,
tx_id: TxId,
entity: impl Into<EntityId>,
) -> Result<()>
pub fn record_read( &self, tx_id: TxId, entity: impl Into<EntityId>, ) -> Result<()>
Records a read operation for the transaction (for serializable isolation).
§Errors
Returns an error if the transaction is not active.
Sourcepub fn commit(&self, tx_id: TxId) -> Result<EpochId>
pub fn commit(&self, tx_id: TxId) -> Result<EpochId>
Commits a transaction with conflict detection.
§Errors
Returns an error if:
- The transaction is not active
- There’s a write-write conflict with another committed transaction
Sourcepub fn get_write_set(&self, tx_id: TxId) -> Result<HashSet<EntityId>>
pub fn get_write_set(&self, tx_id: TxId) -> Result<HashSet<EntityId>>
Returns the write set of a transaction.
This returns a copy of the entities written by this transaction, used for rollback to discard uncommitted versions.
Sourcepub fn abort_all_active(&self)
pub fn abort_all_active(&self)
Aborts all active transactions.
Used during database shutdown.
Sourcepub fn start_epoch(&self, tx_id: TxId) -> Option<EpochId>
pub fn start_epoch(&self, tx_id: TxId) -> Option<EpochId>
Returns the start epoch of a transaction.
Sourcepub fn current_epoch(&self) -> EpochId
pub fn current_epoch(&self) -> EpochId
Returns the current epoch.
Sourcepub fn min_active_epoch(&self) -> EpochId
pub fn min_active_epoch(&self) -> EpochId
Returns the minimum epoch that must be preserved for active transactions.
This is used for garbage collection - versions visible at this epoch must be preserved.
Sourcepub fn active_count(&self) -> usize
pub fn active_count(&self) -> usize
Returns the number of active transactions.
Sourcepub fn gc(&self) -> usize
pub fn gc(&self) -> usize
Cleans up completed transactions that are no longer needed for conflict detection.
A committed transaction’s write set must be preserved until all transactions that started before its commit have completed. This ensures write-write conflict detection works correctly.
Returns the number of transactions cleaned up.
Sourcepub fn mark_committed(&self, tx_id: TxId, epoch: EpochId)
pub fn mark_committed(&self, tx_id: TxId, epoch: EpochId)
Marks a transaction as committed at a specific epoch.
Used during recovery to restore transaction state.
Sourcepub fn last_assigned_tx_id(&self) -> Option<TxId>
pub fn last_assigned_tx_id(&self) -> Option<TxId>
Returns the last assigned transaction ID.
Returns None if no transactions have been started yet.