| Index: go/buildbot/db.go
|
| diff --git a/go/buildbot/db.go b/go/buildbot/db.go
|
| index 21d4eeff0f97d38563787ae65c817415cc7b9658..1ae2e64721c33bcbaf5426d32b5b82373e167971 100644
|
| --- a/go/buildbot/db.go
|
| +++ b/go/buildbot/db.go
|
| @@ -4,6 +4,7 @@ import (
|
| "database/sql"
|
| "encoding/json"
|
| "fmt"
|
| + "time"
|
| )
|
|
|
| // build from the database.
|
| @@ -91,7 +92,19 @@ func GetBuildFromDB(master, builder string, buildNumber int) (*Build, error) {
|
| }
|
|
|
| // ReplaceIntoDB inserts or updates the Build in the database.
|
| -func (b Build) ReplaceIntoDB() (rv error) {
|
| +func (b Build) ReplaceIntoDB() error {
|
| + var err error
|
| + for attempt := 0; attempt < 5; attempt++ {
|
| + if err = b.replaceIntoDB(); err == nil {
|
| + return nil
|
| + }
|
| + time.Sleep(500 * time.Millisecond)
|
| + }
|
| + return err
|
| +}
|
| +
|
| +// replaceIntoDB inserts or updates the Build in the database.
|
| +func (b Build) replaceIntoDB() (rv error) {
|
| // Insert the build itself.
|
| tx, err := DB.Beginx()
|
| if err != nil {
|
| @@ -141,9 +154,9 @@ func (b Build) ReplaceIntoDB() (rv error) {
|
| }
|
| defer insertStepStmt.Close()
|
| for _, s := range b.Steps {
|
| - _, err = insertStepStmt.Exec(s.BuilderName, s.MasterName, s.BuildNumber, s.Name, s.Results, s.Number, s.Started, s.Finished)
|
| + _, err = insertStepStmt.Exec(b.BuilderName, b.MasterName, b.Number, s.Name, s.Results, s.Number, s.Started, s.Finished)
|
| if err != nil {
|
| - return fmt.Errorf("Failed to push build into database: %v", err)
|
| + return fmt.Errorf("Failed to push build step into database: %v", err)
|
| }
|
|
|
| }
|
|
|