bd8c60cda4e7aa340243e972619a8e1ea0ee39e9

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix(lfs): don't timeout when searching lfs objects

Make it up to the context to continue the process

Diff

 1diff --git a/server/lfs/scanner.go b/server/lfs/scanner.go
 2index 1eba4a4d31dfc224728c977efa3f7c4533b95f56..da155203afd2accf76153ae36b255a01684252a3 100644
 3--- a/server/lfs/scanner.go
 4+++ b/server/lfs/scanner.go
 5@@ -109,11 +109,13 @@ func catFileBatch(ctx context.Context, shasToBatchReader *io.PipeReader, catFile
 6 
 7 	stderr := new(bytes.Buffer)
 8 	var errbuf strings.Builder
 9-	if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch").RunInDirWithOptions(basePath, gitm.RunInDirOptions{
10-		Stdout: catFileBatchWriter,
11-		Stdin:  shasToBatchReader,
12-		Stderr: stderr,
13-	}); err != nil {
14+	if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch").
15+		WithTimeout(-1).
16+		RunInDirWithOptions(basePath, gitm.RunInDirOptions{
17+			Stdout: catFileBatchWriter,
18+			Stdin:  shasToBatchReader,
19+			Stderr: stderr,
20+		}); err != nil {
21 		_ = shasToBatchReader.CloseWithError(fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String()))
22 	}
23 }
24@@ -157,11 +159,13 @@ func catFileBatchCheck(ctx context.Context, shasToCheckReader *io.PipeReader, ca
25 
26 	stderr := new(bytes.Buffer)
27 	var errbuf strings.Builder
28-	if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch-check").RunInDirWithOptions(basePath, gitm.RunInDirOptions{
29-		Stdout: catFileCheckWriter,
30-		Stdin:  shasToCheckReader,
31-		Stderr: stderr,
32-	}); err != nil {
33+	if err := gitm.NewCommandWithContext(ctx, "cat-file", "--batch-check").
34+		WithTimeout(-1).
35+		RunInDirWithOptions(basePath, gitm.RunInDirOptions{
36+			Stdout: catFileCheckWriter,
37+			Stdin:  shasToCheckReader,
38+			Stderr: stderr,
39+		}); err != nil {
40 		_ = shasToCheckReader.CloseWithError(fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String()))
41 	}
42 }
43@@ -201,10 +205,12 @@ func revListAllObjects(ctx context.Context, revListWriter *io.PipeWriter, wg *sy
44 
45 	stderr := new(bytes.Buffer)
46 	var errbuf strings.Builder
47-	if err := gitm.NewCommandWithContext(ctx, "rev-list", "--objects", "--all").RunInDirWithOptions(basePath, gitm.RunInDirOptions{
48-		Stdout: revListWriter,
49-		Stderr: stderr,
50-	}); err != nil {
51+	if err := gitm.NewCommandWithContext(ctx, "rev-list", "--objects", "--all").
52+		WithTimeout(-1).
53+		RunInDirWithOptions(basePath, gitm.RunInDirOptions{
54+			Stdout: revListWriter,
55+			Stderr: stderr,
56+		}); err != nil {
57 		errChan <- fmt.Errorf("git rev-list [%s]: %w - %s", basePath, err, errbuf.String())
58 	}
59 }