You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

#[tracing::instrument] 属性未按预期工作的问题排查

为什么#[tracing::instrument]未正确追踪block_hash_by_block_number函数?

相关代码

blocks_with_triggers函数

#[tracing::instrument(skip_all)]
pub(crate) async fn blocks_with_triggers(
    adapter: Arc<EthereumAdapter>,
    logger: Logger,
    chain_store: Arc<dyn ChainStore>,
    subgraph_metrics: Arc<SubgraphEthRpcMetrics>,
    from: BlockNumber,
    to: BlockNumber,
    filter: &TriggerFilter,
    unified_api_version: UnifiedMappingApiVersion,
) -> Result<Vec<BlockWithTriggers<crate::Chain>>, Error> {

    // 其他业务逻辑

    let to_hash_fut = eth.block_hash_by_block_number(&logger, to)
        .and_then(|hash| match hash {
            Some(hash) => Ok(hash),
            None => {
                warn!(logger,
                      "Ethereum endpoint is behind";
                      "url" => eth.provider()
                );
                bail!("Block {} not found in the chain", to)
            }
        })
        .compat();

    // 后续逻辑,最终会等待上述future完成
}

block_hash_by_block_number函数

#[tracing::instrument(skip_all)]
fn block_hash_by_block_number(
    &self,
    logger: &Logger,
    block_number: BlockNumber,
) -> Box<dyn Future<Item = Option<H256>, Error = Error> + Send> {
    // 使用reqwest-tracing实现的逻辑
}

问题现象

  1. 初始调用逻辑下,追踪链路中未生成block_hash_by_block_number span,POST span直接作为blocks_with_triggers的子span,不符合预期层级。
  2. 修改调用逻辑,手动为future添加to_hash_future span后:
    • to_hash_future成为blocks_with_triggers的子span
    • POST span成为to_hash_future的子span
    • 但仍然没有block_hash_by_block_number span,且Datadog中POST与to_hash_future为同级,而非预期的to_hash_future -> block_hash_by_block_number -> POST层级。

EnvFilter配置

let filter_layer =
    EnvFilter::try_new("graph_chain_ethereum,reqwest_tracing::reqwest_otel_span_builder")
        .unwrap();

疑问

为什么#[tracing::instrument(skip_all)]属性没有为block_hash_by_block_number函数生成对应的追踪span?


内容的提问来源于stack exchange,提问作者Paymahn Moghadasian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:12:06