From c1c291c2c6e51595a70f3496bcaa178c1299e4c9 Mon Sep 17 00:00:00 2001 From: Kwaw Date: Thu, 18 Apr 2024 13:20:32 +0200 Subject: [PATCH] Add trace-id to flaps error type (#40) --- flaps/flaps.go | 1 + flaps/flaps_error.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/flaps/flaps.go b/flaps/flaps.go index 16f4966..e475773 100644 --- a/flaps/flaps.go +++ b/flaps/flaps.go @@ -244,6 +244,7 @@ func (f *Client) _sendRequest(ctx context.Context, method, endpoint string, in, ResponseStatusCode: resp.StatusCode, ResponseBody: responseBody, FlyRequestId: resp.Header.Get(headerFlyRequestId), + TraceID: span.SpanContext().TraceID().String(), } } if out != nil { diff --git a/flaps/flaps_error.go b/flaps/flaps_error.go index 4f348e1..66155e3 100644 --- a/flaps/flaps_error.go +++ b/flaps/flaps_error.go @@ -27,6 +27,7 @@ type FlapsError struct { ResponseStatusCode int ResponseBody []byte FlyRequestId string + TraceID string } func (fe *FlapsError) Error() string { @@ -79,6 +80,18 @@ func GetErrorRequestID(err error) string { return "" } +type ErrorTraceID interface { + ErrTraceID() string +} + +func GetErrorTraceID(err error) string { + var ferr ErrorTraceID + if errors.As(err, &ferr) { + return ferr.ErrTraceID() + } + return "" +} + func (fe *FlapsError) StatusCode() *StatusCode { var errResp errorResponse unmarshalErr := json.Unmarshal(fe.ResponseBody, &errResp) @@ -94,6 +107,10 @@ func (fe *FlapsError) ErrRequestID() string { return fe.FlyRequestId } +func (fe *FlapsError) ErrTraceID() string { + return fe.TraceID +} + func (fe *FlapsError) Is(target error) bool { if other, ok := target.(*FlapsError); ok { return fe.ResponseStatusCode == other.ResponseStatusCode