From 01087e9eef21ff5ea1cebbb1e84933954671fdf2 Mon Sep 17 00:00:00 2001 From: zeripath Date: Tue, 30 Nov 2021 20:06:32 +0000 Subject: 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 --- routers/web/repo/http.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'routers/web/repo/http.go') diff --git a/routers/web/repo/http.go b/routers/web/repo/http.go index d1978aefe2..3aa8e84f57 100644 --- a/routers/web/repo/http.go +++ b/routers/web/repo/http.go @@ -8,7 +8,6 @@ package repo import ( "bytes" "compress/gzip" - gocontext "context" "fmt" "net/http" "os" @@ -485,8 +484,10 @@ func serviceRPC(h serviceHandler, service string) { h.environ = append(h.environ, "GIT_PROTOCOL="+protocol) } - ctx, cancel := gocontext.WithCancel(git.DefaultContext) - defer cancel() + // ctx, cancel := gocontext.WithCancel(git.DefaultContext) + ctx, _, finished := process.GetManager().AddContext(h.r.Context(), fmt.Sprintf("%s %s %s [repo_path: %s]", git.GitExecutable, service, "--stateless-rpc", h.dir)) + defer finished() + var stderr bytes.Buffer cmd := exec.CommandContext(ctx, git.GitExecutable, service, "--stateless-rpc", h.dir) cmd.Dir = h.dir @@ -495,9 +496,6 @@ func serviceRPC(h serviceHandler, service string) { cmd.Stdin = reqBody cmd.Stderr = &stderr - pid := process.GetManager().Add(fmt.Sprintf("%s %s %s [repo_path: %s]", git.GitExecutable, service, "--stateless-rpc", h.dir), cancel) - defer process.GetManager().Remove(pid) - if err := cmd.Run(); err != nil { log.Error("Fail to serve RPC(%s) in %s: %v - %s", service, h.dir, err, stderr.String()) return -- cgit v1.2.3