mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +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:
		| @@ -32,10 +32,17 @@ type Repository struct { | ||||
| 	checkCancel context.CancelFunc | ||||
| 	checkReader *bufio.Reader | ||||
| 	checkWriter WriteCloserError | ||||
|  | ||||
| 	Ctx context.Context | ||||
| } | ||||
|  | ||||
| // OpenRepository opens the repository at the given path. | ||||
| func OpenRepository(repoPath string) (*Repository, error) { | ||||
| 	return OpenRepositoryCtx(DefaultContext, repoPath) | ||||
| } | ||||
|  | ||||
| // OpenRepositoryCtx opens the repository at the given path with the provided context. | ||||
| func OpenRepositoryCtx(ctx context.Context, repoPath string) (*Repository, error) { | ||||
| 	repoPath, err := filepath.Abs(repoPath) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| @@ -46,28 +53,29 @@ func OpenRepository(repoPath string) (*Repository, error) { | ||||
| 	repo := &Repository{ | ||||
| 		Path:     repoPath, | ||||
| 		tagCache: newObjectCache(), | ||||
| 		Ctx:      ctx, | ||||
| 	} | ||||
|  | ||||
| 	repo.batchWriter, repo.batchReader, repo.batchCancel = CatFileBatch(repoPath) | ||||
| 	repo.checkWriter, repo.checkReader, repo.checkCancel = CatFileBatchCheck(repo.Path) | ||||
| 	repo.batchWriter, repo.batchReader, repo.batchCancel = CatFileBatch(ctx, repoPath) | ||||
| 	repo.checkWriter, repo.checkReader, repo.checkCancel = CatFileBatchCheck(ctx, repo.Path) | ||||
|  | ||||
| 	return repo, nil | ||||
| } | ||||
|  | ||||
| // CatFileBatch obtains a CatFileBatch for this repository | ||||
| func (repo *Repository) CatFileBatch() (WriteCloserError, *bufio.Reader, func()) { | ||||
| func (repo *Repository) CatFileBatch(ctx context.Context) (WriteCloserError, *bufio.Reader, func()) { | ||||
| 	if repo.batchCancel == nil || repo.batchReader.Buffered() > 0 { | ||||
| 		log.Debug("Opening temporary cat file batch for: %s", repo.Path) | ||||
| 		return CatFileBatch(repo.Path) | ||||
| 		return CatFileBatch(ctx, repo.Path) | ||||
| 	} | ||||
| 	return repo.batchWriter, repo.batchReader, func() {} | ||||
| } | ||||
|  | ||||
| // CatFileBatchCheck obtains a CatFileBatchCheck for this repository | ||||
| func (repo *Repository) CatFileBatchCheck() (WriteCloserError, *bufio.Reader, func()) { | ||||
| func (repo *Repository) CatFileBatchCheck(ctx context.Context) (WriteCloserError, *bufio.Reader, func()) { | ||||
| 	if repo.checkCancel == nil || repo.checkReader.Buffered() > 0 { | ||||
| 		log.Debug("Opening temporary cat file batch-check: %s", repo.Path) | ||||
| 		return CatFileBatchCheck(repo.Path) | ||||
| 		return CatFileBatchCheck(ctx, repo.Path) | ||||
| 	} | ||||
| 	return repo.checkWriter, repo.checkReader, func() {} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user