cmd/tip: add context to error values and log prints

To help track down some flakiness.

Change-Id: I2dd21abdc0f05c58857da580d962b0ab72cf52b3
Reviewed-on: https://go-review.googlesource.com/20728
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Andrew Gerrand 2016-03-16 14:51:36 +11:00
parent 1431634c56
commit d8da78068e
1 changed files with 14 additions and 7 deletions

View File

@ -171,7 +171,9 @@ func (p *Proxy) poll() {
hostport = "localhost:8082" hostport = "localhost:8082"
} }
cmd, err := p.builder.Init(dir, hostport, heads) cmd, err := p.builder.Init(dir, hostport, heads)
if err == nil { if err != nil {
err = fmt.Errorf("builder.Init: %v", err)
} else {
go func() { go func() {
// TODO(adg,bradfitz): be smarter about dead processes // TODO(adg,bradfitz): be smarter about dead processes
if err := cmd.Wait(); err != nil { if err := cmd.Wait(); err != nil {
@ -181,6 +183,7 @@ func (p *Proxy) poll() {
err = waitReady(p.builder, hostport) err = waitReady(p.builder, hostport)
if err != nil { if err != nil {
cmd.Process.Kill() cmd.Process.Kill()
err = fmt.Errorf("waitReady: %v", err)
} }
} }
@ -194,6 +197,7 @@ func (p *Proxy) poll() {
u, err := url.Parse(fmt.Sprintf("http://%v/", hostport)) u, err := url.Parse(fmt.Sprintf("http://%v/", hostport))
if err != nil { if err != nil {
err = fmt.Errorf("parsing hostport: %v", err)
log.Println(err) log.Println(err)
p.err = err p.err = err
return return
@ -234,29 +238,32 @@ func checkout(repo, hash, path string) error {
// Clone git repo if it doesn't exist. // Clone git repo if it doesn't exist.
if _, err := os.Stat(filepath.Join(path, ".git")); os.IsNotExist(err) { if _, err := os.Stat(filepath.Join(path, ".git")); os.IsNotExist(err) {
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
return err return fmt.Errorf("mkdir: %v", err)
} }
if err := runErr(exec.Command("git", "clone", repo, path)); err != nil { if err := runErr(exec.Command("git", "clone", repo, path)); err != nil {
return err return fmt.Errorf("clone: %v", err)
} }
} else if err != nil { } else if err != nil {
return err return fmt.Errorf("stat .git: %v", err)
} }
// Pull down changes and update to hash. // Pull down changes and update to hash.
cmd := exec.Command("git", "fetch") cmd := exec.Command("git", "fetch")
cmd.Dir = path cmd.Dir = path
if err := runErr(cmd); err != nil { if err := runErr(cmd); err != nil {
return err return fmt.Errorf("fetch: %v", err)
} }
cmd = exec.Command("git", "reset", "--hard", hash) cmd = exec.Command("git", "reset", "--hard", hash)
cmd.Dir = path cmd.Dir = path
if err := runErr(cmd); err != nil { if err := runErr(cmd); err != nil {
return err return fmt.Errorf("reset: %v", err)
} }
cmd = exec.Command("git", "clean", "-d", "-f", "-x") cmd = exec.Command("git", "clean", "-d", "-f", "-x")
cmd.Dir = path cmd.Dir = path
return runErr(cmd) if err := runErr(cmd); err != nil {
return fmt.Errorf("clean: %v", err)
}
return nil
} }
// gerritMetaMap returns the map from repo name (e.g. "go") to its // gerritMetaMap returns the map from repo name (e.g. "go") to its