From e6c5e2a36358465ab5038d8af9e70f3b98d5ba88 Mon Sep 17 00:00:00 2001 From: David Symonds Date: Thu, 12 Apr 2012 09:55:37 +1000 Subject: [PATCH] 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 --- misc/dashboard/app/build/build.go | 15 ++++++++++++++- misc/dashboard/app/build/init.go | 7 ++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/misc/dashboard/app/build/build.go b/misc/dashboard/app/build/build.go index c49fa8bb2a..fa3fe299b8 100644 --- a/misc/dashboard/app/build/build.go +++ b/misc/dashboard/app/build/build.go @@ -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 diff --git a/misc/dashboard/app/build/init.go b/misc/dashboard/app/build/init.go index 5311688b77..482d6f65f8 100644 --- a/misc/dashboard/app/build/init.go +++ b/misc/dashboard/app/build/init.go @@ -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) -- 2.48.1