Skip to content

Commit 23ad24d

Browse files
committed
Put a length limit to generated cache keys in stats/views.py, to avoid tickling memcached's limit of 250.
- Legacy-Id: 16037
1 parent 56543d5 commit 23ad24d

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

ietf/stats/views.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from django.shortcuts import get_object_or_404, render
1616
from django.urls import reverse as urlreverse
1717
from django.utils.safestring import mark_safe
18+
from django.utils.text import slugify
1819

1920
import debug # pyflakes:ignore
2021

@@ -134,7 +135,9 @@ def build_document_stats_url(stats_type_override=Ellipsis, get_overrides={}):
134135

135136
return urlreverse(document_stats, kwargs={ k: v for k, v in kwargs.iteritems() if v is not None }) + generate_query_string(request.GET, get_overrides)
136137

137-
cache_key = ("stats:document_stats:%s:%s" % (stats_type, request.META.get('QUERY_STRING','')))
138+
# the length limitation is to keep the key shorter than memcached's limit
139+
# of 250 after django has added the key_prefix and key_version parameters
140+
cache_key = ("stats:document_stats:%s:%s" % (stats_type, slugify(request.META.get('QUERY_STRING',''))))[:228]
138141
data = cache.get(cache_key)
139142
if not data:
140143
names_limit = settings.STATS_NAMES_LIMIT
@@ -766,7 +769,7 @@ def build_meeting_stats_url(number=None, stats_type_override=Ellipsis, get_overr
766769

767770
return urlreverse(meeting_stats, kwargs={ k: v for k, v in kwargs.iteritems() if v is not None }) + generate_query_string(request.GET, get_overrides)
768771

769-
cache_key = "stats:meeting_stats:%s:%s:%s" % (num, stats_type, request.META.get('QUERY_STRING',''))
772+
cache_key = ("stats:meeting_stats:%s:%s:%s" % (num, stats_type, slugify(request.META.get('QUERY_STRING',''))))[:228]
770773
data = cache.get(cache_key)
771774
if not data:
772775
names_limit = settings.STATS_NAMES_LIMIT

0 commit comments

Comments
 (0)