mirror of https://github.com/golang/go.git
misc/dashboard: cope with removed Package fields.
adg removed some now-unwanted fields in Package a while ago, but there are still datastore entities with those fields, so we must explicitly check for ErrFieldMismatch and ignore it. R=golang-dev, rsc CC=adg, golang-dev https://golang.org/cl/6007043
This commit is contained in:
parent
6277656d69
commit
e6c5e2a363
|
|
@ -49,6 +49,10 @@ func (p *Package) LastCommit(c appengine.Context) (*Commit, error) {
|
|||
Order("-Time").
|
||||
Limit(1).
|
||||
GetAll(c, &commits)
|
||||
if _, ok := err.(*datastore.ErrFieldMismatch); ok {
|
||||
// Some fields have been removed, so it's okay to ignore this error.
|
||||
err = nil
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -65,6 +69,10 @@ func GetPackage(c appengine.Context, path string) (*Package, error) {
|
|||
if err == datastore.ErrNoSuchEntity {
|
||||
return nil, fmt.Errorf("package %q not found", path)
|
||||
}
|
||||
if _, ok := err.(*datastore.ErrFieldMismatch); ok {
|
||||
// Some fields have been removed, so it's okay to ignore this error.
|
||||
err = nil
|
||||
}
|
||||
return p, err
|
||||
}
|
||||
|
||||
|
|
@ -297,7 +305,12 @@ func Packages(c appengine.Context, kind string) ([]*Package, error) {
|
|||
q := datastore.NewQuery("Package").Filter("Kind=", kind)
|
||||
for t := q.Run(c); ; {
|
||||
pkg := new(Package)
|
||||
if _, err := t.Next(pkg); err == datastore.Done {
|
||||
_, err := t.Next(pkg)
|
||||
if _, ok := err.(*datastore.ErrFieldMismatch); ok {
|
||||
// Some fields have been removed, so it's okay to ignore this error.
|
||||
err = nil
|
||||
}
|
||||
if err == datastore.Done {
|
||||
break
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -42,7 +42,12 @@ func initHandler(w http.ResponseWriter, r *http.Request) {
|
|||
c := appengine.NewContext(r)
|
||||
defer cache.Tick(c)
|
||||
for _, p := range defaultPackages {
|
||||
if err := datastore.Get(c, p.Key(c), new(Package)); err == nil {
|
||||
err := datastore.Get(c, p.Key(c), new(Package))
|
||||
if _, ok := err.(*datastore.ErrFieldMismatch); ok {
|
||||
// Some fields have been removed, so it's okay to ignore this error.
|
||||
err = nil
|
||||
}
|
||||
if err == nil {
|
||||
continue
|
||||
} else if err != datastore.ErrNoSuchEntity {
|
||||
logErr(w, r, err)
|
||||
|
|
|
|||
Loading…
Reference in New Issue