mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Make Requests Processes and create process hierarchy. Associate OpenRepository with context. (#17125)
This PR registers requests with the process manager and manages hierarchy within the processes. Git repos are then associated with a context, (usually the request's context) - with sub commands using this context as their base context. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -28,17 +28,15 @@ type WriteCloserError interface {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CatFileBatchCheck opens git cat-file --batch-check in the provided repo and returns a stdin pipe, a stdout reader and cancel function
 | 
			
		||||
func CatFileBatchCheck(repoPath string) (WriteCloserError, *bufio.Reader, func()) {
 | 
			
		||||
func CatFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) {
 | 
			
		||||
	batchStdinReader, batchStdinWriter := io.Pipe()
 | 
			
		||||
	batchStdoutReader, batchStdoutWriter := io.Pipe()
 | 
			
		||||
	ctx, ctxCancel := context.WithCancel(DefaultContext)
 | 
			
		||||
	ctx, ctxCancel := context.WithCancel(ctx)
 | 
			
		||||
	closed := make(chan struct{})
 | 
			
		||||
	cancel := func() {
 | 
			
		||||
		_ = batchStdinReader.Close()
 | 
			
		||||
		_ = batchStdinWriter.Close()
 | 
			
		||||
		_ = batchStdoutReader.Close()
 | 
			
		||||
		_ = batchStdoutWriter.Close()
 | 
			
		||||
		ctxCancel()
 | 
			
		||||
		_ = batchStdoutReader.Close()
 | 
			
		||||
		_ = batchStdinWriter.Close()
 | 
			
		||||
		<-closed
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -67,19 +65,17 @@ func CatFileBatchCheck(repoPath string) (WriteCloserError, *bufio.Reader, func()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CatFileBatch opens git cat-file --batch in the provided repo and returns a stdin pipe, a stdout reader and cancel function
 | 
			
		||||
func CatFileBatch(repoPath string) (WriteCloserError, *bufio.Reader, func()) {
 | 
			
		||||
func CatFileBatch(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) {
 | 
			
		||||
	// We often want to feed the commits in order into cat-file --batch, followed by their trees and sub trees as necessary.
 | 
			
		||||
	// so let's create a batch stdin and stdout
 | 
			
		||||
	batchStdinReader, batchStdinWriter := io.Pipe()
 | 
			
		||||
	batchStdoutReader, batchStdoutWriter := nio.Pipe(buffer.New(32 * 1024))
 | 
			
		||||
	ctx, ctxCancel := context.WithCancel(DefaultContext)
 | 
			
		||||
	ctx, ctxCancel := context.WithCancel(ctx)
 | 
			
		||||
	closed := make(chan struct{})
 | 
			
		||||
	cancel := func() {
 | 
			
		||||
		_ = batchStdinReader.Close()
 | 
			
		||||
		ctxCancel()
 | 
			
		||||
		_ = batchStdinWriter.Close()
 | 
			
		||||
		_ = batchStdoutReader.Close()
 | 
			
		||||
		_ = batchStdoutWriter.Close()
 | 
			
		||||
		ctxCancel()
 | 
			
		||||
		<-closed
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user