Merge pull request #370 from logos-blockchain/Pravdyvy/matched-retry-on-inscription

Branched retry on inscriptions
This commit is contained in:
Pravdyvy 2026-03-18 08:58:07 +02:00 committed by GitHub
commit b94b58ceb1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 8 deletions

1
Cargo.lock generated
View File

@ -5531,7 +5531,6 @@ dependencies = [
name = "nssa"
version = "0.1.0"
dependencies = [
"amm_core",
"anyhow",
"borsh",
"env_logger",

View File

@ -31,9 +31,9 @@ impl Default for BackoffConfig {
}
}
// Simple wrapper
// maybe extend in the future for our purposes
// `Clone` is cheap because `CommonHttpClient` is internally reference counted (`Arc`).
/// Simple wrapper
/// maybe extend in the future for our purposes
/// `Clone` is cheap because `CommonHttpClient` is internally reference counted (`Arc`).
#[derive(Clone)]
pub struct BedrockClient {
http_client: CommonHttpClient,
@ -62,10 +62,22 @@ impl BedrockClient {
})
}
pub async fn post_transaction(&self, tx: SignedMantleTx) -> Result<(), Error> {
Retry::spawn(self.backoff_strategy(), || {
self.http_client
pub async fn post_transaction(&self, tx: SignedMantleTx) -> Result<Result<(), Error>, Error> {
Retry::spawn(self.backoff_strategy(), || async {
match self
.http_client
.post_transaction(self.node_url.clone(), tx.clone())
.await
{
Ok(()) => Ok(Ok(())),
Err(err) => match err {
// Retry arm.
// Retrying only reqwest errors: mainly connected to http.
Error::Request(_) => Err(err),
// Returning non-retryable error
Error::Server(_) | Error::Client(_) | Error::Url(_) => Ok(Err(err)),
},
}
})
.await
}

View File

@ -102,7 +102,8 @@ impl BlockSettlementClientTrait for BlockSettlementClient {
self.client
.post_transaction(tx)
.await
.context("Failed to post transaction to Bedrock")?;
.context("Failed to post transaction to Bedrock after retries")?
.context("Failed to post transaction to Bedrock with non-retryable error")?;
log::debug!("Posted block to Bedrock with parent id {parent_id:?} and msg id: {msg_id:?}");