Some people still appear to report unclosed cat-files. This PR simply adds the caller to the process descriptor for the CatFileBatch and CatFileBatchCheck calls. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
							parent
							
								
									b673a24ee6
								
							
						
					
					
						commit
						6139834e76
					
				
					 2 changed files with 29 additions and 8 deletions
				
			
		|  | @ -8,8 +8,10 @@ import ( | |||
| 	"bufio" | ||||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"math" | ||||
| 	"runtime" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| 
 | ||||
|  | @ -40,9 +42,14 @@ func CatFileBatchCheck(repoPath string) (WriteCloserError, *bufio.Reader, func() | |||
| 		<-closed | ||||
| 	} | ||||
| 
 | ||||
| 	_, filename, line, _ := runtime.Caller(2) | ||||
| 	filename = strings.TrimPrefix(filename, callerPrefix) | ||||
| 
 | ||||
| 	go func() { | ||||
| 		stderr := strings.Builder{} | ||||
| 		err := NewCommandContext(ctx, "cat-file", "--batch-check").RunInDirFullPipeline(repoPath, batchStdoutWriter, &stderr, batchStdinReader) | ||||
| 		err := NewCommandContext(ctx, "cat-file", "--batch-check"). | ||||
| 			SetDescription(fmt.Sprintf("%s cat-file --batch-check [repo_path: %s] (%s:%d)", GitExecutable, repoPath, filename, line)). | ||||
| 			RunInDirFullPipeline(repoPath, batchStdoutWriter, &stderr, batchStdinReader) | ||||
| 		if err != nil { | ||||
| 			_ = batchStdoutWriter.CloseWithError(ConcatenateError(err, (&stderr).String())) | ||||
| 			_ = batchStdinReader.CloseWithError(ConcatenateError(err, (&stderr).String())) | ||||
|  | @ -76,9 +83,14 @@ func CatFileBatch(repoPath string) (WriteCloserError, *bufio.Reader, func()) { | |||
| 		<-closed | ||||
| 	} | ||||
| 
 | ||||
| 	_, filename, line, _ := runtime.Caller(2) | ||||
| 	filename = strings.TrimPrefix(filename, callerPrefix) | ||||
| 
 | ||||
| 	go func() { | ||||
| 		stderr := strings.Builder{} | ||||
| 		err := NewCommandContext(ctx, "cat-file", "--batch").RunInDirFullPipeline(repoPath, batchStdoutWriter, &stderr, batchStdinReader) | ||||
| 		err := NewCommandContext(ctx, "cat-file", "--batch"). | ||||
| 			SetDescription(fmt.Sprintf("%s cat-file --batch [repo_path: %s] (%s:%d)", GitExecutable, repoPath, filename, line)). | ||||
| 			RunInDirFullPipeline(repoPath, batchStdoutWriter, &stderr, batchStdinReader) | ||||
| 		if err != nil { | ||||
| 			_ = batchStdoutWriter.CloseWithError(ConcatenateError(err, (&stderr).String())) | ||||
| 			_ = batchStdinReader.CloseWithError(ConcatenateError(err, (&stderr).String())) | ||||
|  | @ -292,3 +304,10 @@ func ParseTreeLine(rd *bufio.Reader, modeBuf, fnameBuf, shaBuf []byte) (mode, fn | |||
| 	sha = shaBuf | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| var callerPrefix string | ||||
| 
 | ||||
| func init() { | ||||
| 	_, filename, _, _ := runtime.Caller(0) | ||||
| 	callerPrefix = strings.TrimSuffix(filename, "modules/git/batch_reader.go") | ||||
| } | ||||
|  |  | |||
|  | @ -119,6 +119,7 @@ func GetArchive(ctx *context.APIContext) { | |||
| 	//     "$ref": "#/responses/notFound"
 | ||||
| 
 | ||||
| 	repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame")) | ||||
| 	if ctx.Repo.GitRepo == nil { | ||||
| 		gitRepo, err := git.OpenRepository(repoPath) | ||||
| 		if err != nil { | ||||
| 			ctx.Error(http.StatusInternalServerError, "OpenRepository", err) | ||||
|  | @ -126,6 +127,7 @@ func GetArchive(ctx *context.APIContext) { | |||
| 		} | ||||
| 		ctx.Repo.GitRepo = gitRepo | ||||
| 		defer gitRepo.Close() | ||||
| 	} | ||||
| 
 | ||||
| 	repo.Download(ctx.Context) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue