mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-04-27 03:00:12 -04:00
Thing: count stale hits and misses by class.
This commit is contained in:
@@ -623,7 +623,8 @@ class CacheChain(CacheUtils, local):
|
||||
|
||||
@cache_timer_decorator("get_multi")
|
||||
@log_invalid_keys
|
||||
def simple_get_multi(self, keys, allow_local = True, stale=None):
|
||||
def simple_get_multi(self, keys, allow_local = True, stale=None,
|
||||
stat_subname=None):
|
||||
out = {}
|
||||
need = set(keys)
|
||||
hits = 0
|
||||
@@ -667,8 +668,8 @@ class CacheChain(CacheUtils, local):
|
||||
# If this chain contains no permanent caches, then we need to
|
||||
# count the misses here.
|
||||
misses = len(need)
|
||||
self.stats.cache_hit(hits)
|
||||
self.stats.cache_miss(misses)
|
||||
self.stats.cache_hit(hits, subname=stat_subname)
|
||||
self.stats.cache_miss(misses, subname=stat_subname)
|
||||
|
||||
return out
|
||||
|
||||
@@ -779,7 +780,7 @@ class StaleCacheChain(CacheChain):
|
||||
|
||||
@cache_timer_decorator("get_multi")
|
||||
@log_invalid_keys
|
||||
def simple_get_multi(self, keys, stale = False, **kw):
|
||||
def simple_get_multi(self, keys, stale=False, stat_subname=None, **kw):
|
||||
if not isinstance(keys, set):
|
||||
keys = set(keys)
|
||||
|
||||
@@ -801,8 +802,8 @@ class StaleCacheChain(CacheChain):
|
||||
stale_hits = len(stale_values)
|
||||
stale_misses = len(keys)
|
||||
if self.stats:
|
||||
self.stats.stale_hit(stale_hits)
|
||||
self.stats.stale_miss(stale_misses)
|
||||
self.stats.stale_hit(stale_hits, subname=stat_subname)
|
||||
self.stats.stale_miss(stale_misses, subname=stat_subname)
|
||||
|
||||
if keys:
|
||||
values = self.realcache.simple_get_multi(keys)
|
||||
@@ -814,8 +815,8 @@ class StaleCacheChain(CacheChain):
|
||||
if self.stats:
|
||||
misses = len(keys - set(ret.keys()))
|
||||
hits = len(ret)
|
||||
self.stats.cache_hit(hits)
|
||||
self.stats.cache_miss(misses)
|
||||
self.stats.cache_hit(hits, subname=stat_subname)
|
||||
self.stats.cache_miss(misses, subname=stat_subname)
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
@@ -389,7 +389,8 @@ class DataThing(object):
|
||||
return items
|
||||
|
||||
bases = sgm(cls._cache, ids, items_db, prefix, time=THING_CACHE_TTL,
|
||||
stale=stale, found_fn=count_found)
|
||||
stale=stale, found_fn=count_found,
|
||||
stat_subname=cls.__name__)
|
||||
|
||||
# Check to see if we found everything we asked for
|
||||
missing = []
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
# smart get multi:
|
||||
# For any keys not found in the cache, miss_fn() is run and the result is
|
||||
# stored in the cache. Then it returns everything, both the hits and misses.
|
||||
def sgm(cache, keys, miss_fn, str prefix='', int time=0, stale=False, found_fn=None, _update=False):
|
||||
def sgm(cache, keys, miss_fn, str prefix='', int time=0, stale=False,
|
||||
found_fn=None, _update=False, stat_subname=None):
|
||||
cdef dict ret
|
||||
cdef dict s_keys
|
||||
cdef dict cached
|
||||
@@ -43,10 +44,14 @@ def sgm(cache, keys, miss_fn, str prefix='', int time=0, stale=False, found_fn=N
|
||||
if _update:
|
||||
cached = {}
|
||||
else:
|
||||
kw = {}
|
||||
if stale:
|
||||
cached = cache.get_multi(s_keys.keys(), prefix=prefix, stale=stale)
|
||||
else:
|
||||
cached = cache.get_multi(s_keys.keys(), prefix=prefix)
|
||||
kw['stale'] = stale
|
||||
if stat_subname:
|
||||
kw['stat_subname'] = stat_subname
|
||||
|
||||
cached = cache.get_multi(s_keys.keys(), prefix=prefix, **kw)
|
||||
|
||||
for k, v in cached.iteritems():
|
||||
ret[s_keys[k]] = v
|
||||
|
||||
|
||||
@@ -417,21 +417,34 @@ class CacheStats:
|
||||
self.hit_stat_name = '%s.hit' % self.cache_name
|
||||
self.miss_stat_name = '%s.miss' % self.cache_name
|
||||
self.total_stat_name = '%s.total' % self.cache_name
|
||||
self.hit_stat_template = '%s.%%s.hit' % self.cache_name
|
||||
self.miss_stat_template = '%s.%%s.miss' % self.cache_name
|
||||
self.total_stat_template = '%s.%%s.total' % self.cache_name
|
||||
|
||||
def cache_hit(self, delta=1):
|
||||
def cache_hit(self, delta=1, subname=None):
|
||||
if delta:
|
||||
data = {
|
||||
self.hit_stat_name: delta,
|
||||
self.total_stat_name: delta,
|
||||
}
|
||||
if subname:
|
||||
data.update({
|
||||
self.hit_stat_template % subname: delta,
|
||||
self.total_stat_template % subname: delta,
|
||||
})
|
||||
self.parent.cache_count_multi(data)
|
||||
|
||||
def cache_miss(self, delta=1):
|
||||
def cache_miss(self, delta=1, subname=None):
|
||||
if delta:
|
||||
data = {
|
||||
self.miss_stat_name: delta,
|
||||
self.total_stat_name: delta,
|
||||
}
|
||||
if subname:
|
||||
data.update({
|
||||
self.miss_stat_template % subname: delta,
|
||||
self.total_stat_template % subname: delta,
|
||||
})
|
||||
self.parent.cache_count_multi(data)
|
||||
|
||||
def cache_report(self, hits=0, misses=0, cache_name=None, sample_rate=None):
|
||||
@@ -455,21 +468,34 @@ class StaleCacheStats(CacheStats):
|
||||
self.stale_hit_name = '%s.stale.hit' % self.cache_name
|
||||
self.stale_miss_name = '%s.stale.miss' % self.cache_name
|
||||
self.stale_total_name = '%s.stale.total' % self.cache_name
|
||||
self.stale_hit_stat_template = '%s.stale.%%s.hit' % self.cache_name
|
||||
self.stale_miss_stat_template = '%s.stale.%%s.miss' % self.cache_name
|
||||
self.stale_total_stat_template = '%s.stale.%%s.total' % self.cache_name
|
||||
|
||||
def stale_hit(self, delta=1):
|
||||
def stale_hit(self, delta=1, subname=None):
|
||||
if delta:
|
||||
data = {
|
||||
self.stale_hit_name: delta,
|
||||
self.stale_total_name: delta,
|
||||
}
|
||||
if subname:
|
||||
data.update({
|
||||
self.stale_hit_stat_template % subname: delta,
|
||||
self.stale_total_stat_template % subname: delta,
|
||||
})
|
||||
self.parent.cache_count_multi(data)
|
||||
|
||||
def stale_miss(self, delta=1):
|
||||
def stale_miss(self, delta=1, subname=None):
|
||||
if delta:
|
||||
data = {
|
||||
self.stale_miss_name: delta,
|
||||
self.stale_total_name: delta,
|
||||
}
|
||||
if subname:
|
||||
data.update({
|
||||
self.stale_miss_stat_template % subname: delta,
|
||||
self.stale_total_stat_template % subname: delta,
|
||||
})
|
||||
self.parent.cache_count_multi(data)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user