From: Brad Fitzpatrick Date: Mon, 22 Dec 2014 19:16:04 +0000 (-0800) Subject: cmd/api: fix race in run.go with multiple builders on a machine X-Git-Tag: go1.5beta1~2566 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=45eaf500fc7ad0bd0af6087530ca59d6ba9bdd95;p=gostls13.git cmd/api: fix race in run.go with multiple builders on a machine Fixes #9407 Change-Id: I765e8009c7ee22473ac8c2d81c7f6c8ec9866c51 Reviewed-on: https://go-review.googlesource.com/1980 Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/api/run.go b/src/cmd/api/run.go index c2c665014c..fb4cf78551 100644 --- a/src/cmd/api/run.go +++ b/src/cmd/api/run.go @@ -92,7 +92,12 @@ func file(s ...string) string { // It tries to re-use a go.tools checkout from a previous run if possible, // else it hg clones it. func prepGoPath() string { - const tempBase = "go.tools.TMP" + // Use a builder-specific temp directory name, so builders running + // two copies don't trample on each other: https://golang.org/issue/9407 + // We don't use io.TempDir or a PID or timestamp here because we do + // want this to be stable between runs, to minimize "git clone" calls + // in the common case. + var tempBase = fmt.Sprintf("go.tools.TMP.%s.%s", runtime.GOOS, runtime.GOARCH) username := "" u, err := user.Current()