| Index: go/src/infra/gae/libs/memlock/memlock.go
|
| diff --git a/go/src/infra/gae/libs/memlock/memlock.go b/go/src/infra/gae/libs/memlock/memlock.go
|
| index 0665f0d60d14aa1c6eb1f22302b1b3f8f61079c2..fee7dcd2374ddd9690f0325b29c06f8321001e77 100644
|
| --- a/go/src/infra/gae/libs/memlock/memlock.go
|
| +++ b/go/src/infra/gae/libs/memlock/memlock.go
|
| @@ -11,15 +11,14 @@ package memlock
|
| import (
|
| "bytes"
|
| "errors"
|
| - "infra/gae/libs/wrapper"
|
| - "infra/libs/clock"
|
| + "golang.org/x/net/context"
|
| "sync/atomic"
|
| "time"
|
|
|
| - "github.com/luci/luci-go/common/logging"
|
| - "golang.org/x/net/context"
|
| + "infra/gae/libs/gae"
|
|
|
| - "appengine/memcache"
|
| + "github.com/luci/luci-go/common/clock"
|
| + "github.com/luci/luci-go/common/logging"
|
| )
|
|
|
| // ErrFailedToLock is returned from TryWithLock when it fails to obtain a lock
|
| @@ -67,7 +66,7 @@ func TryWithLock(ctx context.Context, key, clientID string, f func(check func()
|
| ctx = logging.SetField(ctx, "key", key)
|
| ctx = logging.SetField(ctx, "clientID", clientID)
|
| log := logging.Get(ctx)
|
| - mc := wrapper.GetMC(ctx)
|
| + mc := gae.GetMC(ctx)
|
|
|
| key = memlockKeyPrefix + key
|
| cid := []byte(clientID)
|
| @@ -90,22 +89,20 @@ func TryWithLock(ctx context.Context, key, clientID string, f func(check func()
|
| return false
|
| }
|
|
|
| - if len(itm.Value) > 0 && !bytes.Equal(itm.Value, cid) {
|
| - log.Infof("lock owned by %q", string(itm.Value))
|
| + if len(itm.Value()) > 0 && !bytes.Equal(itm.Value(), cid) {
|
| + log.Infof("lock owned by %q", string(itm.Value()))
|
| return false
|
| }
|
|
|
| if op == refresh {
|
| - itm.Value = cid
|
| - itm.Expiration = memcacheLockTime
|
| + itm.SetValue(cid).SetExpiration(memcacheLockTime)
|
| } else {
|
| - if len(itm.Value) == 0 {
|
| + if len(itm.Value()) == 0 {
|
| // it's already unlocked, no need to CAS
|
| log.Infof("lock already released")
|
| return true
|
| }
|
| - itm.Value = []byte{}
|
| - itm.Expiration = delay
|
| + itm.SetValue([]byte{}).SetExpiration(delay)
|
| }
|
|
|
| err = mc.CompareAndSwap(itm)
|
| @@ -119,10 +116,10 @@ func TryWithLock(ctx context.Context, key, clientID string, f func(check func()
|
|
|
| // Now the actual logic begins. First we 'Add' the item, which will set it if
|
| // it's not present in the memcache, otherwise leaves it alone.
|
| - err := mc.Add(&memcache.Item{
|
| - Key: key, Value: cid, Expiration: memcacheLockTime})
|
| +
|
| + err := mc.Add(mc.NewItem(key).SetValue(cid).SetExpiration(memcacheLockTime))
|
| if err != nil {
|
| - if err != memcache.ErrNotStored {
|
| + if err != gae.ErrMCNotStored {
|
| log.Warningf("error adding: %s", err)
|
| }
|
| if !checkAnd(refresh) {
|
|
|