diff --git a/full-service/src/service/ledger.rs b/full-service/src/service/ledger.rs index 2adea2df1..12a22742b 100644 --- a/full-service/src/service/ledger.rs +++ b/full-service/src/service/ledger.rs @@ -14,6 +14,7 @@ use mc_blockchain_types::{Block, BlockContents, BlockVersion, BlockVersionError} use mc_common::HashSet; use mc_connection::{ BlockInfo, BlockchainConnection, RetryableBlockchainConnection, UserTxConnection, + _retry::delay::Fibonacci, }; use mc_crypto_keys::CompressedRistrettoPublic; use mc_fog_report_validation::FogPubkeyResolver; @@ -202,7 +203,10 @@ where .peer_manager .conns() .par_iter() - .filter_map(|conn| conn.fetch_block_info(std::iter::empty()).ok()) + .filter_map(|conn| { + conn.fetch_block_info(Fibonacci::from_millis(10).take(5)) + .ok() + }) .collect::>(); // Ensure that all nodes agree on the latest block version and network fees. diff --git a/full-service/src/service/transaction.rs b/full-service/src/service/transaction.rs index 631e3d37b..8747bc786 100644 --- a/full-service/src/service/transaction.rs +++ b/full-service/src/service/transaction.rs @@ -23,7 +23,9 @@ use crate::{ use mc_account_keys::AccountKey; use mc_blockchain_types::BlockVersion; use mc_common::logger::log; -use mc_connection::{BlockchainConnection, RetryableUserTxConnection, UserTxConnection}; +use mc_connection::{ + BlockchainConnection, RetryableUserTxConnection, UserTxConnection, _retry::delay::Fibonacci, +}; use mc_fog_report_validation::FogPubkeyResolver; use mc_transaction_builder::{ BurnRedemptionMemoBuilder, EmptyMemoBuilder, MemoBuilder, RTHMemoBuilder, @@ -39,7 +41,7 @@ use crate::service::address::{AddressService, AddressServiceError}; use displaydoc::Display; use serde::{Deserialize, Serialize}; use serde_big_array::BigArray; -use std::{convert::TryFrom, iter::empty, sync::atomic::Ordering}; +use std::{convert::TryFrom, sync::atomic::Ordering}; use super::models::tx_proposal::UnsignedTxProposal; @@ -475,7 +477,7 @@ where .peer_manager .conn(responder_id) .ok_or(TransactionServiceError::NodeNotFound)? - .propose_tx(&tx_proposal.tx, empty()) + .propose_tx(&tx_proposal.tx, Fibonacci::from_millis(10).take(5)) .map_err(TransactionServiceError::from)?; log::trace!( diff --git a/validator/service/src/blockchain_api.rs b/validator/service/src/blockchain_api.rs index 56e1bff09..29e315463 100644 --- a/validator/service/src/blockchain_api.rs +++ b/validator/service/src/blockchain_api.rs @@ -4,7 +4,10 @@ use grpcio::{RpcContext, RpcStatus, Service, UnarySink}; use mc_common::logger::Logger; -use mc_connection::{BlockchainConnection, ConnectionManager, RetryableBlockchainConnection}; +use mc_connection::{ + BlockchainConnection, ConnectionManager, RetryableBlockchainConnection, + _retry::delay::Fibonacci, +}; use mc_ledger_db::{Ledger, LedgerDB}; use mc_transaction_core::{tokens::Mob, Token}; use mc_util_grpc::{rpc_database_err, rpc_logger, rpc_precondition_error, send_result}; @@ -64,7 +67,10 @@ impl BlockchainApi { .conn_manager .conns() .par_iter() - .filter_map(|conn| conn.fetch_block_info(std::iter::empty()).ok()) + .filter_map(|conn| { + conn.fetch_block_info(Fibonacci::from_millis(10).take(5)) + .ok() + }) .collect::>(); // Must have at least one node to get the last block info from. diff --git a/validator/service/src/validator_api.rs b/validator/service/src/validator_api.rs index e52125b03..f9f3d323c 100644 --- a/validator/service/src/validator_api.rs +++ b/validator/service/src/validator_api.rs @@ -6,7 +6,7 @@ use grpcio::{EnvBuilder, RpcContext, RpcStatus, Service, UnarySink}; use mc_common::logger::{log, Logger}; use mc_connection::{ ConnectionManager, Error as ConnectionError, RetryError, RetryableUserTxConnection, - UserTxConnection, + UserTxConnection, _retry::delay::Fibonacci, }; use mc_fog_report_connection::{Error as FogConnectionError, GrpcFogReportConnection}; use mc_ledger_db::{Ledger, LedgerDB}; @@ -155,7 +155,7 @@ impl ValidatorApi { .conn_manager .conn(responder_id) .ok_or_else(|| rpc_internal_error("propose_tx", "conn not found", logger))? - .propose_tx(&tx, std::iter::empty()); + .propose_tx(&tx, Fibonacci::from_millis(10).take(5)); // Convert to GRPC response. let mut result = ProposeTxResponse::new();