From f021a65ebd4df374a1d96bfa892d9a32affe313d Mon Sep 17 00:00:00 2001 From: Abhishek Pandey Date: Fri, 29 Dec 2023 17:26:46 -0800 Subject: [PATCH] 400 experiment setup --- .../m365/collection/drive/collection.go | 18 +++++++++++++++--- src/pkg/services/m365/api/graph/middleware.go | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/internal/m365/collection/drive/collection.go b/src/internal/m365/collection/drive/collection.go index 0c578d6ad..1647d310c 100644 --- a/src/internal/m365/collection/drive/collection.go +++ b/src/internal/m365/collection/drive/collection.go @@ -10,6 +10,7 @@ import ( "time" "github.com/alcionai/clues" + "github.com/microsoftgraph/msgraph-sdk-go/models" "github.com/spatialcurrent/go-lazy/pkg/lazy" "github.com/alcionai/corso/src/internal/common/idname" @@ -386,9 +387,20 @@ func downloadContent( logger.CtxErr(ctx, err).Debug("url cache miss: refetching from API") counter.Inc(count.URLCacheMiss) - di, err := iaag.GetItem(ctx, driveID, ptr.Val(item.GetId())) - if err != nil { - return nil, clues.Wrap(err, "retrieving expired item") + // di, err := iaag.GetItem(ctx, driveID, ptr.Val(item.GetId())) + // if err != nil { + // return nil, clues.Wrap(err, "retrieving expired item") + // } + + var di models.DriveItemable + + for i := 0; i < 1000000; i++ { + di, err := iaag.GetItem(ctx, driveID, ptr.Val(item.GetId())) + if err != nil { + return nil, clues.Wrap(err, "retrieving expired item") + } + + logger.Ctx(ctx).Debugf("iteration %d item id %s\n ", i, ptr.Val(di.GetId())) } cdi := custom.ToCustomDriveItem(di) diff --git a/src/pkg/services/m365/api/graph/middleware.go b/src/pkg/services/m365/api/graph/middleware.go index c8493c7b1..8b23e04dd 100644 --- a/src/pkg/services/m365/api/graph/middleware.go +++ b/src/pkg/services/m365/api/graph/middleware.go @@ -207,6 +207,11 @@ func (mw RetryMiddleware) retryRequest( // 1, there was a prior error OR the status code match retriable conditions. // 3, the request method is retriable. // 4, we haven't already hit maximum retries. + + if resp != nil && resp.StatusCode == http.StatusBadRequest && IsErrInvalidRequest(priorErr, resp) { + logger.Ctx(ctx).Infof("retrying 400_invalid_request: %s", getRespDump(ctx, resp, true)) + } + shouldRetry := (priorErr != nil || mw.isRetriableRespCode(ctx, resp) || IsErrInvalidRequest(priorErr, resp)) && mw.isRetriableRequest(req) && executionCount < mw.MaxRetries