From bd8c60cda4e7aa340243e972619a8e1ea0ee39e9 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Wed, 2 Aug 2023 15:31:44 -0400 Subject: [PATCH] fix(lfs): don't timeout when searching lfs objects Make it up to the context to continue the process --- server/lfs/scanner.go | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/server/lfs/scanner.go b/server/lfs/scanner.go index 1eba4a4d31dfc224728c977efa3f7c4533b95f56..da155203afd2accf76153ae36b255a01684252a3 100644 --- a/server/lfs/scanner.go +++ b/server/lfs/scanner.go @@ -109,11 +109,13 @@ func catFileBatch(ctx context.Context, shasToBatchReader *io.PipeReader, catFile stderr := new(bytes.Buffer) var errbuf strings.Builder - if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch").RunInDirWithOptions(basePath, gitm.RunInDirOptions{ - Stdout: catFileBatchWriter, - Stdin: shasToBatchReader, - Stderr: stderr, - }); err != nil { + if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch"). + WithTimeout(-1). + RunInDirWithOptions(basePath, gitm.RunInDirOptions{ + Stdout: catFileBatchWriter, + Stdin: shasToBatchReader, + Stderr: stderr, + }); err != nil { _ = shasToBatchReader.CloseWithError(fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String())) } } @@ -157,11 +159,13 @@ func catFileBatchCheck(ctx context.Context, shasToCheckReader *io.PipeReader, ca stderr := new(bytes.Buffer) var errbuf strings.Builder - if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch-check").RunInDirWithOptions(basePath, gitm.RunInDirOptions{ - Stdout: catFileCheckWriter, - Stdin: shasToCheckReader, - Stderr: stderr, - }); err != nil { + if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch-check"). + WithTimeout(-1). + RunInDirWithOptions(basePath, gitm.RunInDirOptions{ + Stdout: catFileCheckWriter, + Stdin: shasToCheckReader, + Stderr: stderr, + }); err != nil { _ = shasToCheckReader.CloseWithError(fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String())) } } @@ -201,10 +205,12 @@ func revListAllObjects(ctx context.Context, revListWriter *io.PipeWriter, wg *sy stderr := new(bytes.Buffer) var errbuf strings.Builder - if err := gitm.NewCommandWithContext(ctx, "rev-list", "--objects", "--all").RunInDirWithOptions(basePath, gitm.RunInDirOptions{ - Stdout: revListWriter, - Stderr: stderr, - }); err != nil { + if err := gitm.NewCommandWithContext(ctx, "rev-list", "--objects", "--all"). + WithTimeout(-1). + RunInDirWithOptions(basePath, gitm.RunInDirOptions{ + Stdout: revListWriter, + Stderr: stderr, + }); err != nil { errChan <- fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String()) } }