Chromium Code Reviews| Index: impl/memory/gkvlite_iter.go |
| diff --git a/impl/memory/gkvlite_iter.go b/impl/memory/gkvlite_iter.go |
| index 2d2419c26db0659a10a83a66865cad65231ba321..e408235fd359807d231e1c8750f098b7211cb89d 100644 |
| --- a/impl/memory/gkvlite_iter.go |
| +++ b/impl/memory/gkvlite_iter.go |
| @@ -8,6 +8,7 @@ import ( |
| "bytes" |
| "sync" |
| + "github.com/luci/gae/service/datastore" |
| "github.com/luci/gae/service/datastore/serialize" |
| "github.com/luci/gkvlite" |
| ) |
| @@ -37,9 +38,9 @@ type iterDefinition struct { |
| end []byte |
| } |
| -func multiIterate(defs []*iterDefinition, cb func(suffix []byte) bool) { |
| +func multiIterate(defs []*iterDefinition, cb func(suffix []byte) error) error { |
| if len(defs) == 0 { |
| - return |
| + return nil |
| } |
| ts := make([]*iterator, len(defs)) |
| @@ -92,14 +93,17 @@ func multiIterate(defs []*iterDefinition, cb func(suffix []byte) bool) { |
| } |
| } |
| if stop { |
| - return |
| + return nil |
| } |
| if restart { |
| continue |
| } |
| - if !cb(suffix) { |
| - return |
| + if err := cb(suffix); err != nil { |
| + if err == datastore.Stop { |
| + err = nil |
|
dnj
2015/12/14 22:35:02
WDYT about just "return nil" here and elsewhere th
iannucci
2015/12/14 23:03:09
done
|
| + } |
| + return err |
| } |
| suffix = nil |
| skip = -1 |