mirror of
https://github.com/girlbossceo/conduwuit.git
synced 2024-11-26 16:33:44 +00:00
remove write_lock around rocksdb
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
141a6bc73e
commit
114324e26c
|
@ -1,7 +1,7 @@
|
||||||
use std::{
|
use std::{
|
||||||
future::Future,
|
future::Future,
|
||||||
pin::Pin,
|
pin::Pin,
|
||||||
sync::{atomic::AtomicU32, Arc, RwLock},
|
sync::{atomic::AtomicU32, Arc},
|
||||||
};
|
};
|
||||||
|
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
|
@ -30,7 +30,6 @@ struct RocksDbEngineTree<'a> {
|
||||||
db: Arc<Engine>,
|
db: Arc<Engine>,
|
||||||
name: &'a str,
|
name: &'a str,
|
||||||
watchers: Watchers,
|
watchers: Watchers,
|
||||||
write_lock: RwLock<()>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn db_options(
|
fn db_options(
|
||||||
|
@ -182,7 +181,6 @@ impl KeyValueDatabaseEngine for Arc<Engine> {
|
||||||
name,
|
name,
|
||||||
db: Arc::clone(self),
|
db: Arc::clone(self),
|
||||||
watchers: Watchers::default(),
|
watchers: Watchers::default(),
|
||||||
write_lock: RwLock::new(()),
|
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,14 +358,11 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
|
|
||||||
fn insert(&self, key: &[u8], value: &[u8]) -> Result<()> {
|
fn insert(&self, key: &[u8], value: &[u8]) -> Result<()> {
|
||||||
let writeoptions = rust_rocksdb::WriteOptions::default();
|
let writeoptions = rust_rocksdb::WriteOptions::default();
|
||||||
let lock = self.write_lock.read().unwrap();
|
|
||||||
|
|
||||||
self.db
|
self.db
|
||||||
.rocks
|
.rocks
|
||||||
.put_cf_opt(&self.cf(), key, value, &writeoptions)?;
|
.put_cf_opt(&self.cf(), key, value, &writeoptions)?;
|
||||||
|
|
||||||
drop(lock);
|
|
||||||
|
|
||||||
if !self.db.corked() {
|
if !self.db.corked() {
|
||||||
self.db.flush()?;
|
self.db.flush()?;
|
||||||
}
|
}
|
||||||
|
@ -467,16 +462,12 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
readoptions.set_total_order_seek(true);
|
readoptions.set_total_order_seek(true);
|
||||||
let writeoptions = rust_rocksdb::WriteOptions::default();
|
let writeoptions = rust_rocksdb::WriteOptions::default();
|
||||||
|
|
||||||
let lock = self.write_lock.write().unwrap();
|
|
||||||
|
|
||||||
let old = self.db.rocks.get_cf_opt(&self.cf(), key, &readoptions)?;
|
let old = self.db.rocks.get_cf_opt(&self.cf(), key, &readoptions)?;
|
||||||
let new = utils::increment(old.as_deref());
|
let new = utils::increment(old.as_deref());
|
||||||
self.db
|
self.db
|
||||||
.rocks
|
.rocks
|
||||||
.put_cf_opt(&self.cf(), key, &new, &writeoptions)?;
|
.put_cf_opt(&self.cf(), key, &new, &writeoptions)?;
|
||||||
|
|
||||||
drop(lock);
|
|
||||||
|
|
||||||
if !self.db.corked() {
|
if !self.db.corked() {
|
||||||
self.db.flush()?;
|
self.db.flush()?;
|
||||||
}
|
}
|
||||||
|
@ -491,8 +482,6 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
|
|
||||||
let mut batch = WriteBatchWithTransaction::<false>::default();
|
let mut batch = WriteBatchWithTransaction::<false>::default();
|
||||||
|
|
||||||
let lock = self.write_lock.write().unwrap();
|
|
||||||
|
|
||||||
for key in iter {
|
for key in iter {
|
||||||
let old = self.db.rocks.get_cf_opt(&self.cf(), &key, &readoptions)?;
|
let old = self.db.rocks.get_cf_opt(&self.cf(), &key, &readoptions)?;
|
||||||
let new = utils::increment(old.as_deref());
|
let new = utils::increment(old.as_deref());
|
||||||
|
@ -501,8 +490,6 @@ impl KvTree for RocksDbEngineTree<'_> {
|
||||||
|
|
||||||
self.db.rocks.write_opt(batch, &writeoptions)?;
|
self.db.rocks.write_opt(batch, &writeoptions)?;
|
||||||
|
|
||||||
drop(lock);
|
|
||||||
|
|
||||||
if !self.db.corked() {
|
if !self.db.corked() {
|
||||||
self.db.flush()?;
|
self.db.flush()?;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue