我们有一个在 Go 中运行的 AWS Lambda,在初始化时运行以下命令来初始化 AWS X-Ray
err := xray.Configure(xray.Config{
LogLevel: "info",
ServiceVersion: "1.2.3",
})
在一个单独的存储库中,我们有一个 utils 存储库,它为我们的内部内容公开了一个 HTTP 库。这作为 git 子模块导入到所有其他 Lambda。代码如下:
ctx, subseg := xray.BeginSubsegment(incomingContext, "Outbound HTTP call")
client := xray.Client(&http.Client{Transport: tr})
// further down
client.Do(req)
// finally
subseg.Close(resp)
这在 AWS 上部署时按预期工作,生成了一个漂亮的图表。
问题是在 utils 存储库上运行单元测试。仅在该存储库的上下文中,尚未配置 X-Ray,因此在BeginSubsegment调用时我感到恐慌:
panic: failed to begin subsegment named 'Outbound HTTP call': segment cannot be found.
我想优雅地处理未配置 X-Ray 的情况,记录它并继续执行。
当 BeginSubsegment 不返回错误对象时,如何确保正确处理对它的调用?
慕的地6264312
相关分类