| Index: go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
|
| diff --git a/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go b/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
|
| index c786835c195b207c06348874f43932d342651c4b..9af0dae2671e967a837f23f73d425dd0fd133a04 100644
|
| --- a/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
|
| +++ b/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
|
| @@ -122,28 +122,20 @@ func (d *dataStoreData) entsKeyLocked(key gae.DSKey) (*memCollection, gae.DSKey,
|
| return ents, key, nil
|
| }
|
|
|
| -func putPrelim(ns string, key gae.DSKey, src interface{}) (gae.DSPropertyMap, error) {
|
| +func putPrelim(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSPropertyMap, error) {
|
| if !keyCouldBeValid(key, ns, false) {
|
| // TODO(riannucci): different error for Put-ing to reserved Keys?
|
| return nil, gae.ErrDSInvalidKey
|
| }
|
| -
|
| - pls, err := helper.GetPLS(src)
|
| - if err != nil {
|
| - return nil, err
|
| - }
|
| - return pls.Save()
|
| + return pls.Save(false)
|
| }
|
|
|
| -func (d *dataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.DSKey, error) {
|
| - pmData, err := putPrelim(ns, key, src)
|
| +func (d *dataStoreData) put(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSKey, error) {
|
| + pm, err := putPrelim(ns, key, pls)
|
| if err != nil {
|
| return nil, err
|
| }
|
| - if key, err = d.putInner(key, pmData); err != nil {
|
| - return nil, err
|
| - }
|
| - return key, nil
|
| + return d.putInner(key, pm)
|
| }
|
|
|
| func (d *dataStoreData) putInner(key gae.DSKey, data gae.DSPropertyMap) (gae.DSKey, error) {
|
| @@ -178,7 +170,7 @@ func (d *dataStoreData) putInner(key gae.DSKey, data gae.DSPropertyMap) (gae.DSK
|
| return key, nil
|
| }
|
|
|
| -func getInner(ns string, key gae.DSKey, dst interface{}, getColl func() (*memCollection, error)) error {
|
| +func getInner(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver, getColl func() (*memCollection, error)) error {
|
| if helper.DSKeyIncomplete(key) || !helper.DSKeyValid(key, ns, true) {
|
| return gae.ErrDSInvalidKey
|
| }
|
| @@ -195,24 +187,16 @@ func getInner(ns string, key gae.DSKey, dst interface{}, getColl func() (*memCol
|
| return gae.ErrDSNoSuchEntity
|
| }
|
|
|
| - pm, err := rpmWoCtx(pdata, ns)
|
| - if err != nil {
|
| - return err
|
| - }
|
| -
|
| - pls, err := helper.GetPLS(dst)
|
| + got, err := rpmWoCtx(pdata, ns)
|
| if err != nil {
|
| return err
|
| }
|
|
|
| - // TODO(riannucci): should the Get API reveal conversion errors instead of
|
| - // swallowing them?
|
| - _, err = pls.Load(pm)
|
| - return err
|
| + return pls.Load(got)
|
| }
|
|
|
| -func (d *dataStoreData) get(ns string, key gae.DSKey, dst interface{}) error {
|
| - return getInner(ns, key, dst, func() (*memCollection, error) {
|
| +func (d *dataStoreData) get(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) error {
|
| + return getInner(ns, key, pls, func() (*memCollection, error) {
|
| d.rwlock.RLock()
|
| s := d.store.Snapshot()
|
| d.rwlock.RUnlock()
|
| @@ -414,8 +398,8 @@ func (td *txnDataStoreData) writeMutation(getOnly bool, key gae.DSKey, data gae.
|
| return nil
|
| }
|
|
|
| -func (td *txnDataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.DSKey, error) {
|
| - pMap, err := putPrelim(ns, key, src)
|
| +func (td *txnDataStoreData) put(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSKey, error) {
|
| + pm, err := putPrelim(ns, key, pls)
|
| if err != nil {
|
| return nil, err
|
| }
|
| @@ -429,15 +413,15 @@ func (td *txnDataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.
|
| return nil, err
|
| }
|
|
|
| - if err = td.writeMutation(false, key, pMap); err != nil {
|
| + if err = td.writeMutation(false, key, pm); err != nil {
|
| return nil, err
|
| }
|
|
|
| return key, nil
|
| }
|
|
|
| -func (td *txnDataStoreData) get(ns string, key gae.DSKey, dst interface{}) error {
|
| - return getInner(ns, key, dst, func() (*memCollection, error) {
|
| +func (td *txnDataStoreData) get(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) error {
|
| + return getInner(ns, key, pls, func() (*memCollection, error) {
|
| if err := td.writeMutation(true, key, nil); err != nil {
|
| return nil, err
|
| }
|
|
|