mirror of
https://github.com/Start9Labs/patch-db.git
synced 2026-03-26 02:11:54 +00:00
fix deadlock
This commit is contained in:
Submodule json-patch updated: a2c345bd1e...c73bbd19b8
2
json-ptr
2
json-ptr
Submodule json-ptr updated: 9c9b11108b...33a2af147e
@@ -19,6 +19,7 @@ mod test;
|
|||||||
|
|
||||||
pub use handle::{DbHandle, PatchDbHandle};
|
pub use handle::{DbHandle, PatchDbHandle};
|
||||||
pub use json_ptr;
|
pub use json_ptr;
|
||||||
|
pub use json_patch;
|
||||||
pub use locker::{LockType, Locker};
|
pub use locker::{LockType, Locker};
|
||||||
pub use model::{
|
pub use model::{
|
||||||
BoxModel, HasModel, Map, MapModel, Model, ModelData, ModelDataMut, OptionModel, VecModel,
|
BoxModel, HasModel, Map, MapModel, Model, ModelData, ModelDataMut, OptionModel, VecModel,
|
||||||
|
|||||||
@@ -29,10 +29,13 @@ pub struct Transaction<Parent: DbHandle> {
|
|||||||
impl Transaction<&mut PatchDbHandle> {
|
impl Transaction<&mut PatchDbHandle> {
|
||||||
pub async fn commit(mut self, expire_id: Option<String>) -> Result<Arc<Revision>, Error> {
|
pub async fn commit(mut self, expire_id: Option<String>) -> Result<Arc<Revision>, Error> {
|
||||||
let store_lock = self.parent.store();
|
let store_lock = self.parent.store();
|
||||||
let store = store_lock.read().await;
|
let store = store_lock.write().await;
|
||||||
self.rebase()?;
|
self.rebase()?;
|
||||||
let rev = self.parent.db.apply(self.updates, expire_id, None).await?;
|
let rev = self
|
||||||
drop(store);
|
.parent
|
||||||
|
.db
|
||||||
|
.apply(self.updates, expire_id, Some(store))
|
||||||
|
.await?;
|
||||||
Ok(rev)
|
Ok(rev)
|
||||||
}
|
}
|
||||||
pub async fn abort(mut self) -> Result<DiffPatch, Error> {
|
pub async fn abort(mut self) -> Result<DiffPatch, Error> {
|
||||||
|
|||||||
Reference in New Issue
Block a user