主要观点:工作中出现如何处理单个跨度内多个错误的问题,起初认为跨度内有多个错误是设计缺陷,后认为一般应每个跨度只有一个错误,但某些情况下多个错误有意义,需深入探讨。
关键信息:
- 错误以“event”形式存储在“span”中,可多次调用“span.recordError(err)”,但跨度只有一个状态(Unset、Ok 或 Error)。
- 想在一个追踪中存储多个错误会导致覆盖之前错误值,且失去很多过滤能力和按错误类型分组的能力。
- 建议为每个操作(或函数)设置一个跨度,主方法发射单个跨度和多个子跨度,子跨度可有自己的错误细节,父跨度可包含错误和操作总体状态。
- 存储多个错误的好例子是操作在成功前可多次发出相同错误。
- 处理方式很大程度取决于使用的追踪提供程序,不同提供程序可能需调整用法。
重要细节: - 示例代码展示了如何在函数中处理跨度和错误,如“handleMessage”函数和“Retry”函数。
- 提到可添加诸如“operation_count”“operation_failures”等属性。
- 对于有问题的代码库,建议在问题区域添加更多跨度,但要考虑麻烦程度。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。