From 9de4b9a6909b09275f03f30e4a6dfda1912e2c3f Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Sun, 3 Nov 2019 22:52:23 +0100 Subject: [PATCH] [fix] bc: apply certs: get idty request must be use parent transaction --- .../bc-db-reader/src/indexes/identities.rs | 19 +++++-------------- .../bc-db-writer/src/indexes/certs.rs | 2 +- .../bc-db-writer/src/indexes/identities.rs | 9 ++++++--- lib/modules/blockchain/blockchain/src/dbex.rs | 12 ++++++++---- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lib/modules-lib/bc-db-reader/src/indexes/identities.rs b/lib/modules-lib/bc-db-reader/src/indexes/identities.rs index 500e5ce5..c3219da3 100644 --- a/lib/modules-lib/bc-db-reader/src/indexes/identities.rs +++ b/lib/modules-lib/bc-db-reader/src/indexes/identities.rs @@ -112,7 +112,7 @@ pub fn get_identities<DB: DbReadable>( db.read(|r| { let greatest_wot_id = crate::current_meta_datas::get_greatest_wot_id_(db, r)?; for wot_id in 0..=greatest_wot_id.0 { - if let Some(db_idty) = get_identity_by_wot_id_(db, r, WotId(wot_id))? { + if let Some(db_idty) = get_identity_by_wot_id(db, r, WotId(wot_id))? { if filters .paging .check_created_on(db_idty.idty_doc.blockstamp().id, current_block_id) @@ -152,7 +152,7 @@ pub fn get_identity_by_pubkey_<DB: DbReadable, R: DbReader>( pubkey: &PubKey, ) -> Result<Option<DbIdentity>, DbError> { if let Some(wot_id) = get_wot_id_(db, r, pubkey)? { - get_identity_by_wot_id_(db, r, wot_id) + get_identity_by_wot_id(db, r, wot_id) } else { Ok(None) } @@ -160,16 +160,7 @@ pub fn get_identity_by_pubkey_<DB: DbReadable, R: DbReader>( /// Get identity by pubkey #[inline] -pub fn get_identity_by_wot_id<DB: DbReadable>( - db: &DB, - wot_id: WotId, -) -> Result<Option<DbIdentity>, DbError> { - db.read(|r| get_identity_by_wot_id_(db, r, wot_id)) -} - -/// Get identity by pubkey -#[inline] -pub fn get_identity_by_wot_id_<DB: DbReadable, R: DbReader>( +pub fn get_identity_by_wot_id<DB: DbReadable, R: DbReader>( db: &DB, r: &R, wot_id: WotId, @@ -203,7 +194,7 @@ pub fn get_wot_id_from_uid<DB: DbReadable>(db: &DB, uid: &str) -> Result<Option< db.read(|r| { let greatest_wot_id = crate::current_meta_datas::get_greatest_wot_id_(db, r)?; for wot_id in 0..=greatest_wot_id.0 { - if let Some(db_idty) = get_identity_by_wot_id_(db, r, WotId(wot_id))? { + if let Some(db_idty) = get_identity_by_wot_id(db, r, WotId(wot_id))? { if db_idty.idty_doc.username() == uid { return Ok(Some(WotId(wot_id))); } @@ -261,7 +252,7 @@ pub fn get_wot_uid_index<DB: DbReadable>(db: &DB) -> Result<HashMap<WotId, Strin let mut wot_uid_index = HashMap::new(); let greatest_wot_id = crate::current_meta_datas::get_greatest_wot_id_(db, r)?; for wot_id in 0..=greatest_wot_id.0 { - if let Some(db_idty) = get_identity_by_wot_id_(db, r, WotId(wot_id))? { + if let Some(db_idty) = get_identity_by_wot_id(db, r, WotId(wot_id))? { wot_uid_index.insert(WotId(wot_id), db_idty.idty_doc.username().to_owned()); } } diff --git a/lib/modules/blockchain/bc-db-writer/src/indexes/certs.rs b/lib/modules/blockchain/bc-db-writer/src/indexes/certs.rs index ab7c3411..23c2ae75 100644 --- a/lib/modules/blockchain/bc-db-writer/src/indexes/certs.rs +++ b/lib/modules/blockchain/bc-db-writer/src/indexes/certs.rs @@ -36,7 +36,7 @@ pub fn write_certification( ) -> Result<(), DbError> { // Get cert_chainable_on let mut member_datas = - durs_bc_db_reader::indexes::identities::get_identity_by_wot_id(db, source)? + durs_bc_db_reader::indexes::identities::get_identity_by_wot_id(db, w.as_ref(), source)? .expect("Try to write certification with unexist certifier."); // Push new cert_chainable_on member_datas diff --git a/lib/modules/blockchain/bc-db-writer/src/indexes/identities.rs b/lib/modules/blockchain/bc-db-writer/src/indexes/identities.rs index ed249e9e..e8a1500f 100644 --- a/lib/modules/blockchain/bc-db-writer/src/indexes/identities.rs +++ b/lib/modules/blockchain/bc-db-writer/src/indexes/identities.rs @@ -222,9 +222,12 @@ pub fn renewal_identity( revert: bool, ) -> Result<(), DbError> { // Get idty_datas - let mut idty_datas = - durs_bc_db_reader::indexes::identities::get_identity_by_wot_id(db, idty_wot_id)? - .expect("Fatal error : try to renewal unknow identity !"); + let mut idty_datas = durs_bc_db_reader::indexes::identities::get_identity_by_wot_id( + db, + w.as_ref(), + idty_wot_id, + )? + .expect("Fatal error : try to renewal unknow identity !"); // Calculate new state value idty_datas.state = if revert { match idty_datas.state { diff --git a/lib/modules/blockchain/blockchain/src/dbex.rs b/lib/modules/blockchain/blockchain/src/dbex.rs index fcd2acd5..8efde336 100644 --- a/lib/modules/blockchain/blockchain/src/dbex.rs +++ b/lib/modules/blockchain/blockchain/src/dbex.rs @@ -457,10 +457,14 @@ pub fn dbex_wot(profile_path: PathBuf, csv: bool, query: &DbExWotQuery) { UidOrPubkey::Pubkey(ref pubkey) => wot_index.get(pubkey).copied(), }; if let Some(wot_id) = wot_id_opt { - let idty = - durs_bc_db_reader::indexes::identities::get_identity_by_wot_id(&db, wot_id) - .expect("DB error: ") - .expect("DB corrupted: all WotId must be point to an identity."); + let idty = db + .read(|r| { + durs_bc_db_reader::indexes::identities::get_identity_by_wot_id( + &db, r, wot_id, + ) + }) + .expect("DB error: ") + .expect("DB corrupted: all WotId must be point to an identity."); println!( "{} : wot_id={}, pubkey={}.", -- GitLab