Skip to content

Commit 641d586

Browse files
authored
fix: return error instead of panicking if fetching from ipfs fails (#671)
* fix: return error instead of panicking if fetching from ipfs fails * fix: keep the original error message * fix: add some logging * fix: fmt
1 parent e029e25 commit 641d586

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

Cargo.lock

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

crates/dips/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ async-trait.workspace = true
1717
uuid.workspace = true
1818
tokio.workspace = true
1919
indexer-monitor = { path = "../monitor" }
20+
tracing.workspace = true
2021

2122
bytes = { version = "1.10.0", optional = true }
2223
derivative = "2.2.0"

crates/dips/src/ipfs.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use futures::TryStreamExt;
99
use http::Uri;
1010
use ipfs_api_prelude::{IpfsApi, TryFromUri};
1111
use serde::Deserialize;
12+
use tracing;
1213

1314
use crate::DipsError;
1415

@@ -50,10 +51,15 @@ impl IpfsFetcher for IpfsClient {
5051
.map_ok(|chunk| chunk.to_vec())
5152
.try_concat()
5253
.await
53-
.unwrap();
54-
55-
let manifest: GraphManifest = serde_yaml::from_slice(&content)
56-
.map_err(|_| DipsError::InvalidSubgraphManifest(file.to_string()))?;
54+
.map_err(|e| {
55+
tracing::warn!("Failed to fetch subgraph manifest {}: {}", file, e);
56+
DipsError::SubgraphManifestUnavailable(format!("{}: {}", file, e))
57+
})?;
58+
59+
let manifest: GraphManifest = serde_yaml::from_slice(&content).map_err(|e| {
60+
tracing::warn!("Failed to parse subgraph manifest {}: {}", file, e);
61+
DipsError::InvalidSubgraphManifest(format!("{}: {}", file, e))
62+
})?;
5763

5864
Ok(manifest)
5965
}

crates/dips/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ pub enum DipsError {
139139
PayerNotAuthorised(Address),
140140
#[error("voucher payee {actual} does not match the expected address {expected}")]
141141
UnexpectedPayee { expected: Address, actual: Address },
142+
#[error("cannot get subgraph manifest for {0}")]
143+
SubgraphManifestUnavailable(String),
142144
#[error("invalid subgraph id {0}")]
143145
InvalidSubgraphManifest(String),
144146
#[error("voucher for chain id {0}, subgraph manifest has network {1}")]

0 commit comments

Comments
 (0)