diff --git a/netbox/netbox/views/misc.py b/netbox/netbox/views/misc.py index 4537f14c9..9e4f7e8d2 100644 --- a/netbox/netbox/views/misc.py +++ b/netbox/netbox/views/misc.py @@ -1,5 +1,6 @@ import re from collections import namedtuple +import logging from django.conf import settings from django.contrib import messages @@ -28,6 +29,8 @@ __all__ = ( 'SearchView', ) +logger = logging.getLogger(f'netbox.{__name__}') + Link = namedtuple('Link', ('label', 'viewname', 'permission', 'count')) @@ -50,7 +53,14 @@ class HomeView(ConditionalLoginRequiredMixin, View): # Check whether a new release is available. (Only for superusers.) new_release = None if request.user.is_superuser: - latest_release = cache.get('latest_release') + # cache.get() can raise if the cached value can't be unpickled after dependency upgrades + try: + latest_release = cache.get('latest_release') + except Exception: + logger.debug("Failed to read 'latest_release' from cache; deleting key", exc_info=True) + cache.delete('latest_release') + latest_release = None + if latest_release: release_version, release_url = latest_release if release_version > version.parse(settings.RELEASE.version):