Skip to content

Commit a6b8cc8

Browse files
authored
Merge pull request #1228 from input-output-hk/damien/798/implement-anyhow-for-digesters
Implement anyhow context for digesters
2 parents 6086c8a + ceef816 commit a6b8cc8

File tree

11 files changed

+55
-24
lines changed

11 files changed

+55
-24
lines changed

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.3.87"
3+
version = "0.3.88"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/services/ticker.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
66
use std::sync::Arc;
77

8+
use anyhow::Context;
89
use async_trait::async_trait;
910
use mithril_common::{
1011
chain_observer::ChainObserver,
@@ -70,7 +71,15 @@ impl TickerService for MithrilTickerService {
7071

7172
async fn get_current_immutable_beacon(&self) -> StdResult<Beacon> {
7273
let epoch = self.get_current_epoch().await?;
73-
let immutable_file_number = self.immutable_observer.get_last_immutable_number().await?;
74+
let immutable_file_number = self
75+
.immutable_observer
76+
.get_last_immutable_number()
77+
.await
78+
.with_context(|| {
79+
format!(
80+
"Mithril Ticker Service can not get last immutable file number for epoch: '{epoch}'"
81+
)
82+
})?;
7483

7584
Ok(Beacon::new(
7685
self.network.to_string(),

mithril-common/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-common"
3-
version = "0.2.110"
3+
version = "0.2.111"
44
authors = { workspace = true }
55
edition = { workspace = true }
66
documentation = { workspace = true }

mithril-common/src/beacon_provider.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,18 @@ impl BeaconProvider for BeaconProviderImpl {
5858
.get_current_epoch()
5959
.await
6060
.map_err(|e| anyhow!(e))
61-
.with_context(|| "Can not get current epoch")?
61+
.with_context(|| "Beacon Provider can not get current epoch")?
6262
.ok_or(BeaconProviderError::NoEpoch())?;
6363

6464
let immutable_file_number = self
6565
.immutable_observer
6666
.get_last_immutable_number()
6767
.await
68-
.map_err(|e| anyhow!(e))
69-
.with_context(|| "Can not get last immutable file number")?;
68+
.with_context(|| {
69+
format!(
70+
"Beacon Provider can not get last immutable file number for epoch: '{epoch}'"
71+
)
72+
})?;
7073

7174
let beacon = Beacon {
7275
network: self.network.to_string(),

mithril-common/src/digesters/immutable_file_observer.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use crate::digesters::{ImmutableFile, ImmutableFileListingError};
1+
use crate::digesters::ImmutableFile;
22
use crate::entities::ImmutableFileNumber;
3-
use crate::StdResult;
3+
use crate::{StdError, StdResult};
4+
use anyhow::{anyhow, Context};
45
use async_trait::async_trait;
56
use std::ops::Add;
67
use std::path::PathBuf;
@@ -14,7 +15,7 @@ where
1415
Self: Sync + Send,
1516
{
1617
/// Get the [ImmutableFileNumber] of the last immutable file in the cardano database.
17-
async fn get_last_immutable_number(&self) -> Result<u64, ImmutableFileObserverError>;
18+
async fn get_last_immutable_number(&self) -> StdResult<u64>;
1819
}
1920

2021
/// [ImmutableFileObserver] related errors.
@@ -26,7 +27,7 @@ pub enum ImmutableFileObserverError {
2627

2728
/// Raised when [immutable file listing][ImmutableFile::list_completed_in_dir] fails.
2829
#[error("immutable file creation error: {0}")]
29-
ImmutableFileListing(#[from] ImmutableFileListingError),
30+
ImmutableFileListing(StdError),
3031
}
3132

3233
/// An [ImmutableFileObserver] using the filesystem.
@@ -45,11 +46,13 @@ impl ImmutableFileSystemObserver {
4546

4647
#[async_trait]
4748
impl ImmutableFileObserver for ImmutableFileSystemObserver {
48-
async fn get_last_immutable_number(&self) -> Result<u64, ImmutableFileObserverError> {
49-
let immutable_file_number = ImmutableFile::list_completed_in_dir(&self.db_path)?
49+
async fn get_last_immutable_number(&self) -> StdResult<u64> {
50+
let immutable_file_number = ImmutableFile::list_completed_in_dir(&self.db_path)
51+
.map_err(|e| anyhow!(e))
52+
.with_context(|| "Immutable File System Observer can not list all immutable files")?
5053
.into_iter()
5154
.last()
52-
.ok_or(ImmutableFileObserverError::Missing())?
55+
.ok_or(anyhow!(ImmutableFileObserverError::Missing()))?
5356
.number;
5457

5558
Ok(immutable_file_number)
@@ -104,11 +107,11 @@ impl DumbImmutableFileObserver {
104107

105108
#[async_trait]
106109
impl ImmutableFileObserver for DumbImmutableFileObserver {
107-
async fn get_last_immutable_number(&self) -> Result<u64, ImmutableFileObserverError> {
110+
async fn get_last_immutable_number(&self) -> StdResult<u64> {
108111
self.shall_return
109112
.read()
110113
.await
111-
.ok_or_else(ImmutableFileObserverError::Missing)
114+
.ok_or_else(|| anyhow!(ImmutableFileObserverError::Missing()))
112115
}
113116
}
114117

mithril-common/src/signable_builder/cardano_immutable_full_signable_builder.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::{
99
signable_builder::SignableBuilder,
1010
StdResult,
1111
};
12+
use anyhow::Context;
1213
use async_trait::async_trait;
1314
use slog::{debug, info, Logger};
1415

@@ -41,7 +42,13 @@ impl SignableBuilder<Beacon> for CardanoImmutableFilesFullSignableBuilder {
4142
let digest = self
4243
.immutable_digester
4344
.compute_digest(&self.dirpath, &beacon)
44-
.await?;
45+
.await
46+
.with_context(|| {
47+
format!(
48+
"Cardano Immutable Files Full Signable Builder can not compute digest of '{}'",
49+
&self.dirpath.display()
50+
)
51+
})?;
4552
info!(self.logger, "SignableBuilder: digest = '{digest}'.");
4653
let mut protocol_message = ProtocolMessage::new();
4754
protocol_message.set_message_part(ProtocolMessagePartKey::SnapshotDigest, digest);

mithril-signer/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-signer"
3-
version = "0.2.76"
3+
version = "0.2.77"
44
description = "A Mithril Signer"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ impl StateMachineTester {
302302
.immutable_observer
303303
.get_last_immutable_number()
304304
.await
305-
.map_err(|e| TestError::SubsystemError(e.into()))?;
305+
.map_err(TestError::SubsystemError)?;
306306
let new_immutable = immutable_number + increment;
307307
self.assert(
308308
expected == new_immutable,

mithril-test-lab/mithril-end-to-end/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-end-to-end"
3-
version = "0.2.12"
3+
version = "0.2.13"
44
authors = { workspace = true }
55
edition = { workspace = true }
66
documentation = { workspace = true }

0 commit comments

Comments
 (0)