Skip to content

Commit c767a21

Browse files
author
Damien LACHAUME / PALO-IT
committed
Add context for certificate db provider calling functions
1 parent 736c1f8 commit c767a21

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

mithril-aggregator/src/services/certifier.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,13 @@ impl CertifierService for MithrilCertifierService {
346346
let parent_certificate_hash = self
347347
.certificate_repository
348348
.get_master_certificate_for_epoch(open_message.epoch)
349-
.await?
349+
.await
350+
.with_context(|| {
351+
format!(
352+
"Certifier can not get master certificate for epoch: '{}'",
353+
open_message.epoch
354+
)
355+
})?
350356
.map(|cert| cert.hash)
351357
.ok_or_else(|| Box::new(CertifierServiceError::NoParentCertificateFound))?;
352358

@@ -373,7 +379,10 @@ impl CertifierService for MithrilCertifierService {
373379
let certificate = self
374380
.certificate_repository
375381
.create_certificate(certificate)
376-
.await?;
382+
.await
383+
.with_context(|| {
384+
"Certifier can not create certificate for signed entity type: '{signed_entity_type}'"
385+
})?;
377386

378387
let mut open_message_certified: OpenMessageRecord = open_message_record.into();
379388
open_message_certified.is_certified = true;
@@ -392,6 +401,7 @@ impl CertifierService for MithrilCertifierService {
392401
self.certificate_repository
393402
.get_latest_certificates(last_n)
394403
.await
404+
.with_context(|| "Certifier can not get last '{last_n}' certificates")
395405
}
396406

397407
async fn verify_certificate_chain(&self, epoch: Epoch) -> StdResult<()> {

mithril-aggregator/src/tools/certificates_hash_migrator.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::database::provider::{CertificateRepository, SignedEntityStorer};
2-
use anyhow::anyhow;
2+
use anyhow::{anyhow, Context};
33
use mithril_common::{entities::Certificate, StdResult};
44
use slog_scope::{debug, info, trace};
55
use std::{collections::HashMap, sync::Arc};
@@ -112,7 +112,8 @@ impl CertificatesHashMigrator {
112112
debug!("🔧 Certificate Hash Migrator: inserting migrated certificates in the database");
113113
self.certificate_repository
114114
.create_many_certificates(migrated_certificates)
115-
.await?;
115+
.await
116+
.with_context(|| "Certificates Hash Migrator can not create many certificates")?;
116117

117118
Ok((old_certificates, old_and_new_hashes))
118119
}
@@ -163,7 +164,8 @@ impl CertificatesHashMigrator {
163164
info!("🔧 Certificate Hash Migrator: deleting old certificates in the database");
164165
self.certificate_repository
165166
.delete_certificates(&old_certificates.iter().collect::<Vec<_>>())
166-
.await?;
167+
.await
168+
.with_context(|| "Certificate Hash Migrator can not delete certificates")?;
167169

168170
Ok(())
169171
}
@@ -175,6 +177,7 @@ mod test {
175177
apply_all_migrations_to_db, disable_foreign_key_support, CertificateRecord,
176178
CertificateRepository, SignedEntityRecord, SignedEntityStoreAdapter, SignedEntityStorer,
177179
};
180+
use anyhow::Context;
178181
use mithril_common::{
179182
entities::{
180183
Beacon, Certificate, Epoch, ImmutableFileNumber,
@@ -244,7 +247,8 @@ mod test {
244247
for (certificate, discriminant_maybe) in certificates_and_signed_entity {
245248
certificate_repository
246249
.create_certificate(certificate.clone())
247-
.await?;
250+
.await
251+
.with_context(|| "Certificates Hash Migrator can not create certificate")?;
248252

249253
let signed_entity_maybe = match discriminant_maybe {
250254
None => None,

mithril-aggregator/src/tools/genesis.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,11 @@ impl GenesisTools {
170170
.verify_genesis_certificate(&genesis_certificate, &self.genesis_verifier)
171171
.await?;
172172
self.certificate_repository
173-
.create_certificate(genesis_certificate)
174-
.await?;
173+
.create_certificate(genesis_certificate.clone())
174+
.await
175+
.with_context(|| {
176+
"Genesis tool can not create certificate with genesis signature: '{genesis_signature}'"
177+
})?;
175178
Ok(())
176179
}
177180
}

mithril-aggregator/tests/test_extensions/runtime_tester.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
use anyhow::Context;
12
use mithril_aggregator::database::provider::SignedEntityRecord;
23
use mithril_aggregator::{
34
dependency_injection::DependenciesBuilder, event_store::EventMessage, AggregatorRuntime,
45
Configuration, DumbSnapshotUploader, DumbSnapshotter, SignerRegisterer,
56
SignerRegistrationError,
67
};
8+
use mithril_common::StdResult;
79
use mithril_common::{
810
chain_observer::FakeObserver,
911
crypto_helper::ProtocolGenesisSigner,
@@ -178,7 +180,7 @@ impl RuntimeTester {
178180
pub async fn register_genesis_certificate(
179181
&mut self,
180182
fixture: &MithrilFixture,
181-
) -> Result<(), String> {
183+
) -> StdResult<()> {
182184
let beacon = self.observer.current_beacon().await;
183185
let genesis_certificate = fixture.create_genesis_certificate(&beacon);
184186
debug!("genesis_certificate: {genesis_certificate:?}");
@@ -188,7 +190,10 @@ impl RuntimeTester {
188190
.unwrap()
189191
.create_certificate(genesis_certificate)
190192
.await
191-
.map_err(|e| format!("Saving the genesis certificate should not fail: {e:?}"))?;
193+
.with_context(|| {
194+
"Runtime Tester can not create certificate with fixture: '{fixture}'"
195+
})?;
196+
192197
Ok(())
193198
}
194199

0 commit comments

Comments
 (0)