Skip to content

Commit 937ca92

Browse files
committed
Merge branch 'master' into rename/reddit-to-tippr
2 parents eb69aa6 + 90ff4b5 commit 937ca92

4 files changed

Lines changed: 17 additions & 29 deletions

File tree

r2/r2/lib/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ def __before__(self):
179179
c.used_localized_defaults = False
180180
if not hasattr(c, 'render_tracker'):
181181
# used by wrapped/templated rendering to track render state
182-
c.render_tracker = {}
182+
# Must be None (not {}) so that _render() can detect the primary template
183+
c.render_tracker = None
183184

184185
self.pre()
185186

r2/r2/lib/cache.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,7 @@ def get(self, key, default = None):
102102
def get_multi(self, keys, prefix = ''):
103103
str_keys = [str(key) for key in keys]
104104
with self.clients.reserve() as mc:
105-
result = mc.get_multi(str_keys, key_prefix=prefix)
106-
# Debug logging for cache investigation
107-
if str_keys and str_keys[0].startswith('rend:'):
108-
try:
109-
g.log.warning("CMemcache.get_multi: %d keys requested, %d hits. Sample key: %s",
110-
len(str_keys), len(result), str_keys[0][:80])
111-
except Exception:
112-
pass # Ignore logging errors during reload
113-
return result
105+
return mc.get_multi(str_keys, key_prefix=prefix)
114106

115107
# simple_get_multi exists so that a cache chain can
116108
# single-instance the handling of prefixes for performance, but
@@ -134,15 +126,6 @@ def set_multi(self, keys, prefix='', time=0):
134126
raise ValueError("Rejecting negative TTL for key %s" % key)
135127

136128
str_keys = {str(k): v for k, v in keys.items()}
137-
# Debug logging for cache investigation
138-
if str_keys:
139-
sample_key = list(str_keys.keys())[0]
140-
if sample_key.startswith('rend:'):
141-
try:
142-
g.log.warning("CMemcache.set_multi: %d keys, time=%d. Sample key: %s, value type: %s",
143-
len(str_keys), time, sample_key[:80], type(list(str_keys.values())[0]).__name__)
144-
except Exception:
145-
pass # Ignore logging errors during reload
146129
with self.clients.reserve() as mc:
147130
return mc.set_multi(str_keys, key_prefix=prefix, time=time,
148131
min_compress_len=self.min_compress_len)

r2/r2/lib/wrapped.pyx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class Templated(object):
243243

244244
style = style or c.render_style or 'html'
245245

246-
# prepare (and store) the list of cachable items.
246+
# prepare (and store) the list of cachable items.
247247
primary = False
248248
if not isinstance(c.render_tracker, dict):
249249
primary = True
@@ -374,19 +374,15 @@ class Templated(object):
374374
return
375375

376376
try:
377-
g.log.debug("rendercache write: %d keys: %s", len(keys), list(keys.keys())[:3])
378377
g.rendercache.set_multi(keys, time=3600)
379378
except MemcachedError as e:
380-
g.log.warning("rendercache write error: %s", e)
379+
g.log.warning("rendercache error: %s", e)
381380
return
382381

383382
def _read_cache(self, keys):
384383
from pylons import app_globals as g
385384

386-
cache_keys = list(keys.keys()) if isinstance(keys, dict) else list(keys)
387-
g.log.debug("rendercache read: %d keys: %s", len(cache_keys), cache_keys[:3])
388385
ret = g.rendercache.get_multi(keys)
389-
g.log.debug("rendercache read result: %d hits: %s", len(ret), list(ret.keys())[:3])
390386
return ret
391387

392388
def render(self, style = None, **kw):

r2/r2/models/wiki.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,18 @@ def get_author(self):
237237

238238
@classmethod
239239
def id_for(cls, sr, name):
240-
id = getattr(sr, '_id36', None)
241-
if not id:
242-
raise tdb_cassandra.NotFound
243-
return wiki_id(id, name)
240+
# Prefer the canonical _id36 for real subreddits. Some special site
241+
# objects (e.g. `Frontpage` / `DefaultSR`) are not real subreddits and
242+
# won't have `_id36` set — fall back to using their `name` so global
243+
# wiki pages (site-level policies, etc.) can be resolved.
244+
id_val = getattr(sr, '_id36', None)
245+
if not id_val:
246+
name_val = getattr(sr, 'name', None)
247+
if not name_val:
248+
raise tdb_cassandra.NotFound
249+
id_val = name_val.strip()
250+
251+
return wiki_id(id_val, name)
244252

245253
@classmethod
246254
def get_multiple(cls, pages):

0 commit comments

Comments
 (0)