Skip to content

Commit

Permalink
Turn on snapshot isolation for optimistic transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
elsirion committed Oct 31, 2022
1 parent 161b77f commit c8597b6
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions fedimint-rocksdb/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use anyhow::Result;
use fedimint_api::db::{DatabaseTransaction, PrefixIter};
use fedimint_api::db::{IDatabase, IDatabaseTransaction};
pub use rocksdb;
use rocksdb::OptimisticTransactionDB;
use rocksdb::{OptimisticTransactionDB, OptimisticTransactionOptions, WriteOptions};
use tracing::warn;

#[derive(Debug)]
Expand Down Expand Up @@ -38,7 +38,13 @@ impl From<RocksDb> for rocksdb::OptimisticTransactionDB {

impl IDatabase for RocksDb {
fn begin_transaction(&self) -> DatabaseTransaction {
let mut tx: DatabaseTransaction = RocksDbTransaction(self.0.transaction()).into();
let mut optimistic_options = OptimisticTransactionOptions::default();
optimistic_options.set_snapshot(true);
let mut tx: DatabaseTransaction = RocksDbTransaction(
self.0
.transaction_opt(&WriteOptions::default(), &optimistic_options),
)
.into();
tx.set_tx_savepoint();
tx
}
Expand Down

0 comments on commit c8597b6

Please sign in to comment.