
bug: Receiving errors from web server Operation attempted on ended Span from missing traces
快速结论:该报错通常出现在自托管 Langfuse 并启用 OpenTelemetry 自动检测时,因为 AWS SDK 的检测工具与 S3 存储后端签名计算产生冲突。优先排查是否开启了 AWS SDK 的 OpenTelemetry 自动检测,并尝试通过环境变量禁用它。
问题场景
用户通过 Helm chart 部署 Langfuse POC,发送 traces 初时成功,随后在 Web 实例(K8s)上持续出现 Operation attempted on ended Span 错误,且 traces 在 ClickHouse 或 S3 中丢失。同时,Jupyter notebook 中运行 Python SDK 示例时,OTLP trace 导出器报告 500 Internal Server Error。
报错原文
Cannot execute the operation on ended Span {traceId: 6a5fc5b174cdd98482ab5e10608ec92d, spanId: 48867f9cfe1bfd00} Error: Operation attempted on ended Span {traceId: 6a5fc5b174cdd98482ab5e10608ec92d, spanId: 48867f9cfe1bfd00}
at (.next/server/chunks/[root-of-the-server]__0c8vq8t._.js:2156:6109)
at async Module.p [as handler] (.next/server/chunks/[root-of-the-server]__0c8vq8t._.js:2156:6659)
...SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
at ProtocolLib.getErrorSchemaOrThrowBaseException (/app/node_modules/.pnpm/@aws-sdk+core@3.974.27/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:68:67)
at S3RestXmlProtocol.handleError (/app/node_modules/.pnpm/@aws-sdk+core@3.974.27/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:1854:65)
at S3RestXmlProtocol.deserializeResponse (/app/node_modules/.pnpm/@smithy+core@3.29.1/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js:356:24)
原因分析
可能原因:Langfuse 后端部署时启用了 OpenTelemetry 的 AWS SDK 自动检测(aws-sdk instrumentation),该检测会拦截并修改 AWS SDK 对 S3 的请求,导致请求签名与计算的签名不匹配(SignatureDoesNotMatch)。S3 请求失败后,Langfuse 后端尝试操作已结束的 Span 从而抛出 Operation attempted on ended Span 错误。禁用 AWS SDK 的 OpenTelemetry 检测即可解决。
环境排查
- 确认部署方式:Helm chart(版本 langfuse-1.5.39),Langfuse 镜像版本 3.212.0
- 确认 S3 存储后端已正确配置,且签名相关参数(如密钥、区域、端点)无误
- 确认 OpenTelemetry 自动检测配置:是否启用了
aws-sdkinstrumentation(通过OTEL_NODE_DISABLED_INSTRUMENTATIONS或OTEL_NODE_ENABLED_INSTRUMENTATIONS环境变量) - 确认 Python SDK 版本:langfuse-python 4.14.0
解决步骤
- 排查 OpenTelemetry 检测配置:检查 Helm chart 的
values.yaml或 deployment 环境变量中是否设置了OTEL_NODE_DISABLED_INSTRUMENTATIONS或OTEL_NODE_ENABLED_INSTRUMENTATIONS。如果在启用的 instrumentations 列表中包含aws-sdk,则可能引起冲突。 - 禁用 AWS SDK 检测(可优先尝试):在 Helm chart 的
values.yaml中添加以下环境变量,禁用 AWS SDK 的 OpenTelemetry 自动检测:langfuse: additionalEnv: - name: OTEL_NODE_DISABLED_INSTRUMENTATIONS value: aws-sdk - 重新部署或升级 Helm chart:应用配置更改后,重启 Langfuse Web 实例(例如
helm upgrade或kubectl rollout restart)。 - 验证无其他冲突:如果问题依旧,可尝试进一步禁用在
aws-sdk附近的其他检测(如http、express),但 Issue 中仅确认aws-sdk是直接原因。
验证方法
重新发送测试 trace(例如通过 Python SDK 运行 client.chat.completions.create 示例),检查以下项:
- Jupyter notebook 中不再出现
Transient error Internal Server Error或Failed to export span batch警告/错误 - Langfuse Web 实例日志中不再出现
Operation attempted on ended Span错误 - Langfuse UI 中能够正常显示新发送的 trace
- ClickHouse 或 S3 中能够查到对应 trace 数据



