datastore with a valid name but a 0 time and num. I think that made adg's
watcher.go exit. I tried running a new watcher.go and it exited too:
"dashboard: in datastore with zero Num".
The two CLs that followed those 3 also got 0 time and num. I deleted all
three of those datastore entries and then build.golang.org was showing a
page containing only "datastore: no such entity".
Then I started watcher.go again. This time it did not exit and uploaded the
five missing CLs. That seems to have brought build.golang.org back to life.
We really need to figure out where the Num=0 entries are coming from. They
had only name, num, and time set; nothing else. The fact that the two
subsequent entries also got Num=0 suggest that once the watcher had gone
away, something was creating those entries.
I think the perf dashboard is the problem. In particular, when the normal
build dashboard is stopped the perf dashboard still seems to race ahead and
tell us about build breakages. That suggests it is not getting told about
CLs from the standard dashboard dispatcher. If that's the case, then it may
try to record a perf result for a commit before the standard dispatcher has
recorded that the commit even exists.
Looking at the app code seems to confirm this theory:
tx := func(c appengine.Context) error {
// check Package exists
if _, err := GetPackage(c, res.PackagePath); err != nil {
return fmt.Errorf("GetPackage: %v", err)
}
// put Result
if _, err := datastore.Put(c, res.Key(c), res); err != nil {
return fmt.Errorf("putting Result: %v", err)
}
// add Result to Commit
com := &Commit{PackagePath: res.PackagePath, Hash: res.Hash}
if err := com.AddResult(c, res); err != nil {
return fmt.Errorf("AddResult: %v", err)
}
// Send build failure notifications, if necessary.
// Note this must run after the call AddResult, which
// populates the Commit's ResultData field.
return notifyOnFailure(c, com, res.Builder)
}
There is no check that the Commit actually exists. Doing this AddResult
here will create the Commit if it does not exist already, and the Commit
will end up with a zeroed Num, Time, and everything else.
Please fix this.
Thanks.
Russ
--
You received this message because you are subscribed to the Google Groups "golang-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.