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:
parent
d894c90b70
commit
01087e9eef
66 changed files with 591 additions and 306 deletions
|
@ -143,8 +143,13 @@ func (c *Command) RunWithContext(rc *RunContext) error {
|
|||
log.Debug("%s: %v", rc.Dir, c)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(c.parentContext, rc.Timeout)
|
||||
defer cancel()
|
||||
desc := c.desc
|
||||
if desc == "" {
|
||||
desc = fmt.Sprintf("%s %s [repo_path: %s]", c.name, strings.Join(c.args, " "), rc.Dir)
|
||||
}
|
||||
|
||||
ctx, cancel, finished := process.GetManager().AddContextTimeout(c.parentContext, rc.Timeout, desc)
|
||||
defer finished()
|
||||
|
||||
cmd := exec.CommandContext(ctx, c.name, c.args...)
|
||||
if rc.Env == nil {
|
||||
|
@ -172,13 +177,6 @@ func (c *Command) RunWithContext(rc *RunContext) error {
|
|||
return err
|
||||
}
|
||||
|
||||
desc := c.desc
|
||||
if desc == "" {
|
||||
desc = fmt.Sprintf("%s %s %s [repo_path: %s]", GitExecutable, c.name, strings.Join(c.args, " "), rc.Dir)
|
||||
}
|
||||
pid := process.GetManager().Add(desc, cancel)
|
||||
defer process.GetManager().Remove(pid)
|
||||
|
||||
if rc.PipelineFunc != nil {
|
||||
err := rc.PipelineFunc(ctx, cancel)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue