Skip to content

Commit

Permalink
temp: Add temporary monitoring for large memcache keys (#36034)
Browse files Browse the repository at this point in the history
We'd like to finish the removal of MD4 key hashing, but want to know if
cutting over to BLAKE2b will cause too large a cache turnover. Hopefully
this monitoring will give us some insight into the rate of large keys.
  • Loading branch information
timmc-edx authored Dec 16, 2024
1 parent 39a9376 commit fb56042
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions common/djangoapps/util/memcache.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from django.conf import settings
from django.utils.encoding import smart_str
from edx_django_utils.monitoring.utils import increment


def fasthash(string):
Expand Down Expand Up @@ -48,9 +49,18 @@ def safe_key(key, key_prefix, version):
# Attempt to combine the prefix, version, and key
combined = ":".join([key_prefix, version, key])

# Temporary: Add observability to large-key hashing to help us
# understand the safety of a cutover from md4 to blake2b hashing.
# See https://github.com/edx/edx-arch-experiments/issues/872
increment('memcache.safe_key.called')

# If the total length is too long for memcache, hash it
if len(combined) > 250:
combined = fasthash(combined)
# Temporary: See
# https://github.com/edx/edx-arch-experiments/issues/872 and
# previous comment.
increment('memcache.safe_key.hash_large')

# Return the result
return combined

0 comments on commit fb56042

Please sign in to comment.