From 7b88c9ae8db4c6c43f8f6fc2573cab38cf61b777 Mon Sep 17 00:00:00 2001 From: Abhishek Pandey Date: Tue, 22 Aug 2023 11:44:44 +0530 Subject: [PATCH] Add logs --- src/internal/m365/graph/errors.go | 14 +++++++++++++- src/internal/m365/graph/middleware.go | 19 +++++++++++++++++++ src/pkg/services/m365/api/drive_pager.go | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/internal/m365/graph/errors.go b/src/internal/m365/graph/errors.go index 1f2ba98c0..9b39540da 100644 --- a/src/internal/m365/graph/errors.go +++ b/src/internal/m365/graph/errors.go @@ -3,6 +3,7 @@ package graph import ( "context" "fmt" + "net" "net/http" "net/url" "os" @@ -183,7 +184,18 @@ func IsErrTimeout(err error) bool { errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) || errors.Is(err, http.ErrHandlerTimeout) || - os.IsTimeout(err) + os.IsTimeout(err) || + IsNetworkTimeoutError(err) +} + +func IsNetworkTimeoutError(err error) bool { + var netErr net.Error + + if errors.As(err, &netErr) && netErr.Timeout() { + return true + } + + return false } func IsErrConnectionReset(err error) bool { diff --git a/src/internal/m365/graph/middleware.go b/src/internal/m365/graph/middleware.go index 456fb402b..e198bae9c 100644 --- a/src/internal/m365/graph/middleware.go +++ b/src/internal/m365/graph/middleware.go @@ -122,8 +122,18 @@ func (mw *LoggingMiddleware) Intercept( middlewareIndex int, req *http.Request, ) (*http.Response, error) { + // log request + logger.Ctx(req.Context()).Infow("logging middleware: graph api req", + "method", req.Method, + "url", LoggableURL(req.URL.String())) + // call the next middleware resp, err := pipeline.Next(req, middlewareIndex) + if err != nil { + logger.CtxErr(req.Context(), err).Errorw("logging middleware: graph api error", + "network_timeout_error", IsNetworkTimeoutError(err)) + } + if resp == nil { return resp, err } @@ -212,6 +222,11 @@ func (mw RetryMiddleware) Intercept( IsErrConnectionReset(err) || mw.isRetriableRespCode(ctx, resp) + if err != nil { + logger.CtxErr(ctx, err).Errorw("retry middleware: graph api error", + "network_timeout_error", IsNetworkTimeoutError(err)) + } + if !retriable { return resp, stackReq(ctx, req, resp, err).OrNil() } @@ -295,6 +310,10 @@ func (mw RetryMiddleware) retryRequest( } nextResp, err := pipeline.Next(req, middlewareIndex) + if err != nil { + logger.CtxErr(ctx, err).Error("retry middleware: retryRequest: graph api error") + } + if err != nil && !IsErrTimeout(err) && !IsErrConnectionReset(err) { return nextResp, stackReq(ctx, req, nextResp, err) } diff --git a/src/pkg/services/m365/api/drive_pager.go b/src/pkg/services/m365/api/drive_pager.go index 7a8c100a3..9ca2e5657 100644 --- a/src/pkg/services/m365/api/drive_pager.go +++ b/src/pkg/services/m365/api/drive_pager.go @@ -188,6 +188,7 @@ func (p *DriveItemDeltaPageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, resp, err = p.builder.Get(ctx, p.options) if err != nil { + logger.CtxErr(ctx, err).Error("delta GET error") return nil, graph.Stack(ctx, err) }