У нас есть AWS Lambda, работающий в Go, и при инициализации запускает следующее для инициализации AWS X-Ray
err := xray.Configure(xray.Config{
LogLevel: "info",
ServiceVersion: "1.2.3",
})
В отдельном хранилище у нас есть хранилище утилит, которое предоставляет библиотеку HTTP для наших внутренних вещей. Это импортируется как субмодуль git ко всем остальным лямбдам. Код выглядит следующим образом:
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, создавая хороший график.
Проблема в запуске модульных тестов в хранилище утилит. В контексте только этого хранилища X-Ray не был настроен, поэтому при вызове BeginSubsegment
я получаю pani c:
panic: failed to begin subsegment named 'Outbound HTTP call': segment cannot be found.
Я хочу изящно обработать случай, когда X- Ray не был настроен, зарегистрируйте его и продолжайте выполнение независимо.
Как я могу обеспечить правильную обработку ошибок при вызове BeginSubsegment, когда он не возвращает объект ошибки?