Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
BlockId removal: refactor: Backend::block_indexed_body (#12609)
Browse files Browse the repository at this point in the history
* BlockId removal: refactor: Backend::block_indexed_body

It changes the arguments of `Backend::block_indexed_body` method from: `BlockId<Block>` to: `&Block::Hash`

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* trigger CI job
  • Loading branch information
michalkucharczyk authored Nov 3, 2022
1 parent a4ebc27 commit 87f3fde
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 12 deletions.
6 changes: 2 additions & 4 deletions client/api/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,8 @@ pub trait BlockBackend<Block: BlockT> {
///
/// Note that this will only fetch transactions
/// that are indexed by the runtime with `storage_index_transaction`.
fn block_indexed_body(
&self,
id: &BlockId<Block>,
) -> sp_blockchain::Result<Option<Vec<Vec<u8>>>>;
fn block_indexed_body(&self, hash: &Block::Hash)
-> sp_blockchain::Result<Option<Vec<Vec<u8>>>>;

/// Get full block by id.
fn block(&self, id: &BlockId<Block>) -> sp_blockchain::Result<Option<SignedBlock<Block>>>;
Expand Down
2 changes: 1 addition & 1 deletion client/api/src/in_mem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ impl<Block: BlockT> blockchain::Backend<Block> for Blockchain<Block> {

fn block_indexed_body(
&self,
_id: BlockId<Block>,
_hash: &Block::Hash,
) -> sp_blockchain::Result<Option<Vec<Vec<u8>>>> {
unimplemented!("Not supported by the in-mem backend.")
}
Expand Down
9 changes: 7 additions & 2 deletions client/db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -694,8 +694,13 @@ impl<Block: BlockT> sc_client_api::blockchain::Backend<Block> for BlockchainDb<B
Ok(self.db.contains(columns::TRANSACTION, hash.as_ref()))
}

fn block_indexed_body(&self, id: BlockId<Block>) -> ClientResult<Option<Vec<Vec<u8>>>> {
let body = match read_db(&*self.db, columns::KEY_LOOKUP, columns::BODY_INDEX, id)? {
fn block_indexed_body(&self, hash: &Block::Hash) -> ClientResult<Option<Vec<Vec<u8>>>> {
let body = match read_db(
&*self.db,
columns::KEY_LOOKUP,
columns::BODY_INDEX,
BlockId::<Block>::Hash(*hash),
)? {
Some(body) => body,
None => return Ok(None),
};
Expand Down
2 changes: 1 addition & 1 deletion client/network/sync/src/block_request_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ where
};

let indexed_body = if get_indexed_body {
match self.client.block_indexed_body(&BlockId::Hash(hash))? {
match self.client.block_indexed_body(&hash)? {
Some(transactions) => transactions,
None => {
log::trace!(
Expand Down
16 changes: 13 additions & 3 deletions client/service/src/client/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1980,9 +1980,9 @@ where

fn block_indexed_body(
&self,
id: &BlockId<Block>,
hash: &Block::Hash,
) -> sp_blockchain::Result<Option<Vec<Vec<u8>>>> {
self.backend.blockchain().block_indexed_body(*id)
self.backend.blockchain().block_indexed_body(hash)
}

fn requires_full_sync(&self) -> bool {
Expand Down Expand Up @@ -2073,9 +2073,19 @@ where
&self,
number: NumberFor<B>,
) -> Result<Option<Vec<Vec<u8>>>, sp_transaction_storage_proof::Error> {
let hash = match self
.backend
.blockchain()
.block_hash_from_id(&BlockId::Number(number))
.map_err(|e| sp_transaction_storage_proof::Error::Application(Box::new(e)))?
{
Some(hash) => hash,
None => return Ok(None),
};

self.backend
.blockchain()
.block_indexed_body(BlockId::number(number))
.block_indexed_body(&hash)
.map_err(|e| sp_transaction_storage_proof::Error::Application(Box::new(e)))
}

Expand Down
2 changes: 1 addition & 1 deletion primitives/blockchain/src/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ pub trait Backend<Block: BlockT>:
Ok(self.indexed_transaction(hash)?.is_some())
}

fn block_indexed_body(&self, id: BlockId<Block>) -> Result<Option<Vec<Vec<u8>>>>;
fn block_indexed_body(&self, hash: &Block::Hash) -> Result<Option<Vec<Vec<u8>>>>;
}

/// Blockchain info
Expand Down

0 comments on commit 87f3fde

Please sign in to comment.