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

使用Spring Boot搭配Sleuth时遭遇IllegalArgumentException异常求助

修复思路

首先明确异常根源:ZipkinHttpSpanExtractor在提取链路追踪ID时,收到了空的十六进制字符串,导致Span.hexToId()转换失败抛出IllegalArgumentException。

针对这个问题,给出以下几种修复方案:

  • 方案1:过滤空的追踪头
    自定义一个HttpSpanExtractor的包装类,在调用原ZipkinHttpSpanExtractor提取Span前,先检查X-B3-TraceId、X-B3-SpanId等B3协议头的值是否为空,若为空则直接返回空Span(不加入已有追踪链),避免进入转换逻辑。
    示例代码片段:

    @Bean
    public HttpSpanExtractor customHttpSpanExtractor(ZipkinHttpSpanExtractor delegate) {
        return carrier -> {
            // 检查核心追踪头是否为空
            String traceId = carrier.getFirst("X-B3-TraceId");
            String spanId = carrier.getFirst("X-B3-SpanId");
            if (org.springframework.util.StringUtils.isEmpty(traceId) || org.springframework.util.StringUtils.isEmpty(spanId)) {
                return null; // 不加入追踪链,由Sleuth生成新的Span
            }
            return delegate.joinTrace(carrier);
        };
    }
    
  • 方案2:升级Sleuth版本
    1.3.x早期版本的Sleuth存在空值处理缺陷,后续同分支的稳定版本(如1.3.6+)已修复该问题。可将spring-cloud-sleuth-core升级到Dalston分支的稳定版本,确保与Spring Boot 1.5.x版本兼容(Spring Cloud Dalston分支适配Spring Boot 1.5.x,最高版本为Dalston.SR5)。

  • 方案3:拦截非法请求头
    在网关或服务的过滤器层,拦截带有空X-B3-TraceId/X-B3-SpanId头的请求,要么清空这些空请求头,要么直接返回非法请求提示,避免请求进入业务服务触发异常。

异常堆栈关键信息:

ZipkinHttpSpanExtractor.joinTrace 51 : Exception occurred while trying to extract span from carrier 
java.lang.IllegalArgumentException: Can't convert empty hex string to long 
at org.springframework.util.Assert.hasText(Assert.java:181) 
at org.springframework.cloud.sleuth.Span.hexToId(Span.java:583) 
at org.springframework.cloud.sleuth.instrument.web.ZipkinHttpSpanExtractor.buildParentSpan(ZipkinHttpSpanExtractor.java:91) 
at org.springframework.cloud.sleuth.instrument.web.ZipkinHttpSpanExtractor.joinTrace(ZipkinHttpSpanExtractor.java:49) 
at org.springframework.cloud.sleuth.instrument.web.ZipkinHttpSpanExtractor.joinTrace(ZipkinHttpSpanExtractor.java:19)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:21:00