页面
/appMonitor/serviceCallDetail(接口调用出入口详情 · RPC)
截图

复现步骤
- 进入 应用性能 → 服务 → 接口调用分析 → 接口调用出入口详情
- 选择 RPC 类型调用(示例:
org.example.dubbo.DemoServiceC.sayHelloC2(String),skyWalking-service-a → skyWalking-service-c)
- 点击趋势图中任意时间点,加载下方 span 列表
- 观察「发出端」「接收端」分组下的「线程名」列
异常描述
「线程名」列始终显示 -(空值),占用表格宽度但无有效信息。
根因分析
- 前端
serviceCallDetail/table-list.vue 对 componentType=service.rpc 固定渲染 client.threadName / server.threadName 列
- 后端
TracePortalService.toCallSide() / applyComponentMeta() 仅在 span meta 含 thread.name 时才填充 threadName
- SkyWalking 接入的 Dubbo RPC span 通常不含
thread.name OTel 属性 → 列永远为空
建议修复
按数据可用性二选一:
- 若 trace 数据有
thread.name:修复后端映射或前端取值,确保线程名正确展示
- 若数据无
thread.name:删除 RPC 调用详情表的「线程名」列;或改为动态列(仅当当前列表存在非空 threadName 时才显示)
相关代码
ai-apm-frontend/src/views/appMonitor/serviceCallDetail/table-list.vue(L161、L166)
ai-apm-web/src/main/java/com/databuff/apm/web/portal/TracePortalService.java(toCallSide / applyComponentMeta service.rpc 分支)
来源
- UI 分诊试点(kr-daily-ui-triage)
- 发现时间:2026-07-10
检查清单
页面
/appMonitor/serviceCallDetail(接口调用出入口详情 · RPC)截图
复现步骤
org.example.dubbo.DemoServiceC.sayHelloC2(String),skyWalking-service-a → skyWalking-service-c)异常描述
「线程名」列始终显示
-(空值),占用表格宽度但无有效信息。根因分析
serviceCallDetail/table-list.vue对componentType=service.rpc固定渲染client.threadName/server.threadName列TracePortalService.toCallSide()/applyComponentMeta()仅在 span meta 含thread.name时才填充threadNamethread.nameOTel 属性 → 列永远为空建议修复
按数据可用性二选一:
thread.name:修复后端映射或前端取值,确保线程名正确展示thread.name:删除 RPC 调用详情表的「线程名」列;或改为动态列(仅当当前列表存在非空 threadName 时才显示)相关代码
ai-apm-frontend/src/views/appMonitor/serviceCallDetail/table-list.vue(L161、L166)ai-apm-web/src/main/java/com/databuff/apm/web/portal/TracePortalService.java(toCallSide/applyComponentMetaservice.rpc 分支)来源
检查清单
thread.name