Skip to content

Commit

Permalink
fix(katana-provider): fix how latest block number/hash is retrieved f…
Browse files Browse the repository at this point in the history
…rom db (#1475)
  • Loading branch information
kariy authored Jan 25, 2024
1 parent 7527fcd commit 6233fa5
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion bin/katana/src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ impl KatanaArgs {
pub fn init_logging(&self) -> Result<(), Box<dyn std::error::Error>> {
const DEFAULT_LOG_FILTER: &str = "info,executor=trace,forked_backend=trace,server=debug,\
katana_core=trace,blockifier=off,jsonrpsee_server=off,\
hyper=off,messaging=debug";
hyper=off,messaging=debug,node=error";

let builder = fmt::Subscriber::builder().with_env_filter(
EnvFilter::try_from_default_env().or(EnvFilter::try_new(DEFAULT_LOG_FILTER))?,
Expand Down
4 changes: 2 additions & 2 deletions crates/katana/core/src/service/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use futures::channel::mpsc::Receiver;
use futures::stream::{Fuse, Stream, StreamExt};
use katana_primitives::transaction::ExecutableTxWithHash;
use starknet::core::types::FieldElement;
use tracing::trace;
use tracing::{error, trace};

use self::block_producer::BlockProducer;
use crate::pool::TransactionPool;
Expand Down Expand Up @@ -68,7 +68,7 @@ impl Future for NodeService {
}

Err(err) => {
trace!(target: "node", "failed to mine block: {err}");
error!(target: "node", "failed to mine block: {err}");
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions crates/katana/storage/provider/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ pub enum ProviderError {
#[error("Missing latest block hash")]
MissingLatestBlockHash,

#[error("Missing latest block number")]
MissingLatestBlockNumber,

/// Error when the block hash is not found when it should be.
#[error("Missing block hash for block number {0}")]
MissingBlockHash(BlockNumber),
Expand Down
8 changes: 4 additions & 4 deletions crates/katana/storage/provider/src/providers/db/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,17 @@ impl BlockNumberProvider for DbProvider {

fn latest_number(&self) -> ProviderResult<BlockNumber> {
let db_tx = self.0.tx()?;
let total_blocks = db_tx.entries::<BlockNumbers>()? as u64;
let res = db_tx.cursor::<BlockHashes>()?.last()?.map(|(num, _)| num);
let total_blocks = res.ok_or(ProviderError::MissingLatestBlockNumber)?;
db_tx.commit()?;
Ok(if total_blocks == 0 { 0 } else { total_blocks - 1 })
Ok(total_blocks)
}
}

impl BlockHashProvider for DbProvider {
fn latest_hash(&self) -> ProviderResult<BlockHash> {
let latest_block = self.latest_number()?;
let db_tx = self.0.tx()?;
let total_blocks = db_tx.entries::<BlockNumbers>()? as u64;
let latest_block = if total_blocks == 0 { 0 } else { total_blocks - 1 };
let latest_hash = db_tx.get::<BlockHashes>(latest_block)?;
db_tx.commit()?;
latest_hash.ok_or(ProviderError::MissingLatestBlockHash)
Expand Down
5 changes: 4 additions & 1 deletion crates/katana/storage/provider/tests/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use katana_provider::providers::db::DbProvider;
use katana_provider::providers::fork::ForkedProvider;
use katana_provider::providers::in_memory::InMemoryProvider;
use katana_provider::traits::block::{
BlockHashProvider, BlockProvider, BlockStatusProvider, BlockWriter,
BlockHashProvider, BlockNumberProvider, BlockProvider, BlockStatusProvider, BlockWriter,
};
use katana_provider::traits::env::BlockEnvProvider;
use katana_provider::traits::state::StateRootProvider;
Expand Down Expand Up @@ -69,6 +69,9 @@ where
Default::default(),
receipts.clone(),
)?;

assert_eq!(provider.latest_number().unwrap(), block.block.header.header.number);
assert_eq!(provider.latest_hash().unwrap(), block.block.header.hash);
}

let actual_blocks_in_range = provider.blocks_in_range(0..=count)?;
Expand Down

0 comments on commit 6233fa5

Please sign in to comment.