mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore(rpc): instrument rpc calls (#2327)
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -5177,6 +5177,7 @@ dependencies = [
|
|||||||
"tokio-util 0.7.7",
|
"tokio-util 0.7.7",
|
||||||
"tower",
|
"tower",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"tracing-futures",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@ -57,6 +57,7 @@ thiserror = "1.0"
|
|||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
|
tracing-futures = "0.2"
|
||||||
schnellru = "0.2"
|
schnellru = "0.2"
|
||||||
futures = "0.3.26"
|
futures = "0.3.26"
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,13 @@ use reth_rpc_api::{EngineEthApiServer, EthApiServer, EthFilterApiServer};
|
|||||||
/// Re-export for convenience
|
/// Re-export for convenience
|
||||||
pub use reth_rpc_engine_api::EngineApi;
|
pub use reth_rpc_engine_api::EngineApi;
|
||||||
use reth_rpc_types::{state::StateOverride, CallRequest, Log, RichBlock, SyncStatus};
|
use reth_rpc_types::{state::StateOverride, CallRequest, Log, RichBlock, SyncStatus};
|
||||||
use tracing::trace;
|
use tracing_futures::Instrument;
|
||||||
|
|
||||||
|
macro_rules! engine_span {
|
||||||
|
() => {
|
||||||
|
tracing::trace_span!(target: "rpc", "engine")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// A wrapper type for the `EthApi` and `EthFilter` implementations that only expose the required
|
/// A wrapper type for the `EthApi` and `EthFilter` implementations that only expose the required
|
||||||
/// subset for the `eth_` namespace used in auth server alongside the `engine_` namespace.
|
/// subset for the `eth_` namespace used in auth server alongside the `engine_` namespace.
|
||||||
@ -29,19 +35,22 @@ where
|
|||||||
{
|
{
|
||||||
/// Handler for: `eth_syncing`
|
/// Handler for: `eth_syncing`
|
||||||
fn syncing(&self) -> Result<SyncStatus> {
|
fn syncing(&self) -> Result<SyncStatus> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_syncing [engine]");
|
let span = engine_span!();
|
||||||
|
let _enter = span.enter();
|
||||||
self.eth.syncing()
|
self.eth.syncing()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_chainId`
|
/// Handler for: `eth_chainId`
|
||||||
async fn chain_id(&self) -> Result<Option<U64>> {
|
async fn chain_id(&self) -> Result<Option<U64>> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_chainId [engine]");
|
let span = engine_span!();
|
||||||
|
let _enter = span.enter();
|
||||||
self.eth.chain_id().await
|
self.eth.chain_id().await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_blockNumber`
|
/// Handler for: `eth_blockNumber`
|
||||||
fn block_number(&self) -> Result<U256> {
|
fn block_number(&self) -> Result<U256> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_blockNumber [engine]");
|
let span = engine_span!();
|
||||||
|
let _enter = span.enter();
|
||||||
self.eth.block_number()
|
self.eth.block_number()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,20 +61,17 @@ where
|
|||||||
block_number: Option<BlockId>,
|
block_number: Option<BlockId>,
|
||||||
state_overrides: Option<StateOverride>,
|
state_overrides: Option<StateOverride>,
|
||||||
) -> Result<Bytes> {
|
) -> Result<Bytes> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_call [engine]");
|
self.eth.call(request, block_number, state_overrides).instrument(engine_span!()).await
|
||||||
self.eth.call(request, block_number, state_overrides).await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_getCode`
|
/// Handler for: `eth_getCode`
|
||||||
async fn get_code(&self, address: Address, block_number: Option<BlockId>) -> Result<Bytes> {
|
async fn get_code(&self, address: Address, block_number: Option<BlockId>) -> Result<Bytes> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_getCode [engine]");
|
self.eth.get_code(address, block_number).instrument(engine_span!()).await
|
||||||
self.eth.get_code(address, block_number).await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_getBlockByHash`
|
/// Handler for: `eth_getBlockByHash`
|
||||||
async fn block_by_hash(&self, hash: H256, full: bool) -> Result<Option<RichBlock>> {
|
async fn block_by_hash(&self, hash: H256, full: bool) -> Result<Option<RichBlock>> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_getBlockByHash [engine]");
|
self.eth.block_by_hash(hash, full).instrument(engine_span!()).await
|
||||||
self.eth.block_by_hash(hash, full).await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_getBlockByNumber`
|
/// Handler for: `eth_getBlockByNumber`
|
||||||
@ -74,19 +80,16 @@ where
|
|||||||
number: BlockNumberOrTag,
|
number: BlockNumberOrTag,
|
||||||
full: bool,
|
full: bool,
|
||||||
) -> Result<Option<RichBlock>> {
|
) -> Result<Option<RichBlock>> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_getBlockByNumber [engine]");
|
self.eth.block_by_number(number, full).instrument(engine_span!()).await
|
||||||
self.eth.block_by_number(number, full).await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for: `eth_sendRawTransaction`
|
/// Handler for: `eth_sendRawTransaction`
|
||||||
async fn send_raw_transaction(&self, bytes: Bytes) -> Result<H256> {
|
async fn send_raw_transaction(&self, bytes: Bytes) -> Result<H256> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_sendRawTransaction [engine]");
|
self.eth.send_raw_transaction(bytes).instrument(engine_span!()).await
|
||||||
self.eth.send_raw_transaction(bytes).await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handler for `eth_getLogs`
|
/// Handler for `eth_getLogs`
|
||||||
async fn logs(&self, filter: Filter) -> Result<Vec<Log>> {
|
async fn logs(&self, filter: Filter) -> Result<Vec<Log>> {
|
||||||
trace!(target: "rpc::eth", "Serving eth_getLogs [engine]");
|
self.eth_filter.logs(filter).instrument(engine_span!()).await
|
||||||
self.eth_filter.logs(filter).await
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user