]> Cypherpunks repositories - gostls13.git/commitdiff
misc/dashboard: cope with removed Package fields.
authorDavid Symonds <dsymonds@golang.org>
Wed, 11 Apr 2012 23:55:37 +0000 (09:55 +1000)
committerDavid Symonds <dsymonds@golang.org>
Wed, 11 Apr 2012 23:55:37 +0000 (09:55 +1000)
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
misc/dashboard/app/build/init.go

index c49fa8bb2af788bf467020f233f21758b827e105..fa3fe299b85420f70b384d1b2c6710b0842cec9b 100644 (file)
@@ -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
index 5311688b77aa5d6d8add94f8afe9eaa29f0071b5..482d6f65f8726c3495cf9bfe5ccf06089deda5e2 100644 (file)
@@ -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)