Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1005)

Unified Diff: service/datastore/datastore.go

Issue 1844183003: Don't filter "Stop" error in raw interface. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/gae@master
Patch Set: Count filter doesn't count Stop as error. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « impl/prod/raw_datastore.go ('k') | service/datastore/raw_interface.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: service/datastore/datastore.go
diff --git a/service/datastore/datastore.go b/service/datastore/datastore.go
index 306df526153e401e75e64126194539ade80c206c..1c2691a387a4e1e4d3699b9d2aed6f7fd89d1950 100644
--- a/service/datastore/datastore.go
+++ b/service/datastore/datastore.go
@@ -147,19 +147,20 @@ func (d *datastoreImpl) Run(q *Query, cbIface interface{}) error {
}
if isKey {
- return d.RawInterface.Run(fq, func(k *Key, _ PropertyMap, gc CursorCB) error {
+ err = d.RawInterface.Run(fq, func(k *Key, _ PropertyMap, gc CursorCB) error {
return cb(reflect.ValueOf(k), gc)
})
+ } else {
+ err = d.RawInterface.Run(fq, func(k *Key, pm PropertyMap, gc CursorCB) error {
+ itm := mat.newElem()
+ if err := mat.setPM(itm, pm); err != nil {
+ return err
+ }
+ mat.setKey(itm, k)
+ return cb(itm, gc)
+ })
}
-
- return d.RawInterface.Run(fq, func(k *Key, pm PropertyMap, gc CursorCB) error {
- itm := mat.newElem()
- if err := mat.setPM(itm, pm); err != nil {
- return err
- }
- mat.setKey(itm, k)
- return cb(itm, gc)
- })
+ return filterStop(err)
}
func (d *datastoreImpl) Count(q *Query) (int64, error) {
@@ -249,7 +250,7 @@ func (d *datastoreImpl) ExistsMulti(keys []*Key) (BoolList, error) {
lme := errors.NewLazyMultiError(len(keys))
ret := make(BoolList, len(keys))
i := 0
- err := d.RawInterface.GetMulti(keys, nil, func(_ PropertyMap, err error) error {
+ err := filterStop(d.RawInterface.GetMulti(keys, nil, func(_ PropertyMap, err error) error {
if err == nil {
ret[i] = true
} else if err != ErrNoSuchEntity {
@@ -257,7 +258,7 @@ func (d *datastoreImpl) ExistsMulti(keys []*Key) (BoolList, error) {
}
i++
return nil
- })
+ }))
if err != nil {
return ret, err
}
@@ -299,13 +300,13 @@ func (d *datastoreImpl) GetMulti(dst interface{}) error {
lme := errors.NewLazyMultiError(len(keys))
i := 0
meta := NewMultiMetaGetter(pms)
- err = d.RawInterface.GetMulti(keys, meta, func(pm PropertyMap, err error) error {
+ err = filterStop(d.RawInterface.GetMulti(keys, meta, func(pm PropertyMap, err error) error {
if !lme.Assign(i, err) {
lme.Assign(i, mat.setPM(slice.Index(i), pm))
}
i++
return nil
- })
+ }))
if err == nil {
err = lme.Get()
@@ -324,13 +325,13 @@ func (d *datastoreImpl) PutMulti(src interface{}) error {
lme := errors.NewLazyMultiError(len(keys))
i := 0
- err = d.RawInterface.PutMulti(keys, vals, func(key *Key, err error) error {
+ err = filterStop(d.RawInterface.PutMulti(keys, vals, func(key *Key, err error) error {
if !lme.Assign(i, err) && key != keys[i] {
mat.setKey(slice.Index(i), key)
}
i++
return nil
- })
+ }))
if err == nil {
err = lme.Get()
@@ -341,11 +342,11 @@ func (d *datastoreImpl) PutMulti(src interface{}) error {
func (d *datastoreImpl) DeleteMulti(keys []*Key) (err error) {
lme := errors.NewLazyMultiError(len(keys))
i := 0
- extErr := d.RawInterface.DeleteMulti(keys, func(internalErr error) error {
+ extErr := filterStop(d.RawInterface.DeleteMulti(keys, func(internalErr error) error {
lme.Assign(i, internalErr)
i++
return nil
- })
+ }))
err = lme.Get()
if err == nil {
err = extErr
@@ -439,3 +440,10 @@ func FindAndParseIndexYAML(path string) ([]*IndexDefinition, error) {
currentDir = filepath.Dir(currentDir)
}
}
+
+func filterStop(err error) error {
+ if err == Stop {
+ err = nil
+ }
+ return err
+}
« no previous file with comments | « impl/prod/raw_datastore.go ('k') | service/datastore/raw_interface.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698