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

Unified Diff: go/src/infra/gae/libs/gae/memory/memcache.go

Issue 1227203004: Convert 'Testable' interface into an optional filter. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@add_filters
Patch Set: final rebase Created 5 years, 5 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 | « go/src/infra/gae/libs/gae/memory/globalinfo.go ('k') | go/src/infra/gae/libs/gae/memory/memcache_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: go/src/infra/gae/libs/gae/memory/memcache.go
diff --git a/go/src/infra/gae/libs/gae/memory/memcache.go b/go/src/infra/gae/libs/gae/memory/memcache.go
index 616c11d909539b07c2841ed09eff3267019741c3..bbc3811ea7ab3e9ecdc28d86df2a867dc8de74b6 100644
--- a/go/src/infra/gae/libs/gae/memory/memcache.go
+++ b/go/src/infra/gae/libs/gae/memory/memcache.go
@@ -63,8 +63,6 @@ func (m *mcItem) duplicate() *mcItem {
}
type memcacheData struct {
- gae.BrokenFeatures
-
lock sync.Mutex
items map[string]*mcItem
casID uint64
@@ -79,10 +77,7 @@ type memcacheImpl struct {
ctx context.Context
}
-var (
- _ = gae.Memcache((*memcacheImpl)(nil))
- _ = gae.Testable((*memcacheImpl)(nil))
-)
+var _ gae.Memcache = (*memcacheImpl)(nil)
// useMC adds a gae.Memcache implementation to context, accessible
// by gae.GetMC(c)
@@ -97,10 +92,7 @@ func useMC(c context.Context) context.Context {
ns := curGID(ic).namespace
mcd, ok := mcdMap[ns]
if !ok {
- mcd = &memcacheData{
- BrokenFeatures: gae.BrokenFeatures{
- DefaultError: gae.ErrMCServerError},
- items: map[string]*mcItem{}}
+ mcd = &memcacheData{items: map[string]*mcItem{}}
mcdMap[ns] = mcd
}
@@ -129,93 +121,74 @@ func (m *memcacheImpl) mkItemLocked(i gae.MCItem) (ret *mcItem) {
return newItem.duplicate()
}
-func (m *memcacheImpl) BreakFeatures(err error, features ...string) {
- m.data.BreakFeatures(err, features...)
-}
-
-func (m *memcacheImpl) UnbreakFeatures(features ...string) {
- m.data.UnbreakFeatures(features...)
-}
-
func (m *memcacheImpl) NewItem(key string) gae.MCItem {
return &mcItem{key: key}
}
// Add implements context.MCSingleReadWriter.Add.
func (m *memcacheImpl) Add(i gae.MCItem) error {
- return m.data.RunIfNotBroken(func() error {
- m.data.lock.Lock()
- defer m.data.lock.Unlock()
+ m.data.lock.Lock()
+ defer m.data.lock.Unlock()
- if _, ok := m.retrieveLocked(i.Key()); !ok {
- m.data.items[i.Key()] = m.mkItemLocked(i)
- return nil
- }
- return gae.ErrMCNotStored
- })
+ if _, ok := m.retrieveLocked(i.Key()); !ok {
+ m.data.items[i.Key()] = m.mkItemLocked(i)
+ return nil
+ }
+ return gae.ErrMCNotStored
}
// CompareAndSwap implements context.MCSingleReadWriter.CompareAndSwap.
func (m *memcacheImpl) CompareAndSwap(item gae.MCItem) error {
- return m.data.RunIfNotBroken(func() error {
- m.data.lock.Lock()
- defer m.data.lock.Unlock()
-
- if cur, ok := m.retrieveLocked(item.Key()); ok {
- casid := uint64(0)
- if mi, ok := item.(*mcItem); ok && mi != nil {
- casid = mi.CasID
- }
-
- if cur.CasID == casid {
- m.data.items[item.Key()] = m.mkItemLocked(item)
- } else {
- return gae.ErrMCCASConflict
- }
+ m.data.lock.Lock()
+ defer m.data.lock.Unlock()
+
+ if cur, ok := m.retrieveLocked(item.Key()); ok {
+ casid := uint64(0)
+ if mi, ok := item.(*mcItem); ok && mi != nil {
+ casid = mi.CasID
+ }
+
+ if cur.CasID == casid {
+ m.data.items[item.Key()] = m.mkItemLocked(item)
} else {
- return gae.ErrMCNotStored
+ return gae.ErrMCCASConflict
}
- return nil
- })
+ } else {
+ return gae.ErrMCNotStored
+ }
+ return nil
}
// Set implements context.MCSingleReadWriter.Set.
func (m *memcacheImpl) Set(i gae.MCItem) error {
- return m.data.RunIfNotBroken(func() error {
- m.data.lock.Lock()
- defer m.data.lock.Unlock()
- m.data.items[i.Key()] = m.mkItemLocked(i)
- return nil
- })
+ m.data.lock.Lock()
+ defer m.data.lock.Unlock()
+ m.data.items[i.Key()] = m.mkItemLocked(i)
+ return nil
}
// Get implements context.MCSingleReadWriter.Get.
func (m *memcacheImpl) Get(key string) (itm gae.MCItem, err error) {
- err = m.data.RunIfNotBroken(func() (err error) {
- m.data.lock.Lock()
- defer m.data.lock.Unlock()
- if val, ok := m.retrieveLocked(key); ok {
- itm = val.duplicate().SetExpiration(0)
- } else {
- err = gae.ErrMCCacheMiss
- }
- return
- })
+ m.data.lock.Lock()
+ defer m.data.lock.Unlock()
+ if val, ok := m.retrieveLocked(key); ok {
+ itm = val.duplicate().SetExpiration(0)
+ } else {
+ err = gae.ErrMCCacheMiss
+ }
return
}
// Delete implements context.MCSingleReadWriter.Delete.
func (m *memcacheImpl) Delete(key string) error {
- return m.data.RunIfNotBroken(func() error {
- m.data.lock.Lock()
- defer m.data.lock.Unlock()
+ m.data.lock.Lock()
+ defer m.data.lock.Unlock()
- if _, ok := m.retrieveLocked(key); ok {
- delete(m.data.items, key)
- return nil
- }
- return gae.ErrMCCacheMiss
- })
+ if _, ok := m.retrieveLocked(key); ok {
+ delete(m.data.items, key)
+ return nil
+ }
+ return gae.ErrMCCacheMiss
}
func (m *memcacheImpl) retrieveLocked(key string) (*mcItem, bool) {
« no previous file with comments | « go/src/infra/gae/libs/gae/memory/globalinfo.go ('k') | go/src/infra/gae/libs/gae/memory/memcache_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698