go.tools/dashboard/app: update commit in transaction on perf regression
The sendPerfFailMail function populated a dummy commit value and then calls commonNotify, which then updated and stored that dummy commit, hosing the original commit entity. LGTM=rsc R=rsc, bradfitz, dvyukov CC=golang-codereviews https://golang.org/cl/164960043
This commit is contained in:
parent
11451553df
commit
113eb67ee0
|
@ -201,7 +201,11 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func sendPerfFailMail(c appengine.Context, builder string, res *PerfResult) error {
|
func sendPerfFailMail(c appengine.Context, builder string, res *PerfResult) error {
|
||||||
|
return datastore.RunInTransaction(c, func(c appengine.Context) error {
|
||||||
com := &Commit{Hash: res.CommitHash}
|
com := &Commit{Hash: res.CommitHash}
|
||||||
|
if err := datastore.Get(c, com.Key(c), com); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
logHash := ""
|
logHash := ""
|
||||||
parsed := res.ParseData()
|
parsed := res.ParseData()
|
||||||
for _, data := range parsed[builder] {
|
for _, data := range parsed[builder] {
|
||||||
|
@ -214,8 +218,11 @@ func sendPerfFailMail(c appengine.Context, builder string, res *PerfResult) erro
|
||||||
return fmt.Errorf("can not find failed result for commit %v on builder %v", com.Hash, builder)
|
return fmt.Errorf("can not find failed result for commit %v on builder %v", com.Hash, builder)
|
||||||
}
|
}
|
||||||
return commonNotify(c, com, builder, logHash)
|
return commonNotify(c, com, builder, logHash)
|
||||||
|
}, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// commonNotify MUST!!! be called from within a transaction inside which
|
||||||
|
// the provided Commit entity was retrieved from the datastore.
|
||||||
func commonNotify(c appengine.Context, com *Commit, builder, logHash string) error {
|
func commonNotify(c appengine.Context, com *Commit, builder, logHash string) error {
|
||||||
if com.Num == 0 || com.Desc == "" {
|
if com.Num == 0 || com.Desc == "" {
|
||||||
stk := make([]byte, 10000)
|
stk := make([]byte, 10000)
|
||||||
|
|
Loading…
Reference in New Issue