From 296b89ae02c8f1812d77b0273f5df8197742fd43 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 26 Mar 2026 12:13:28 -0400 Subject: [PATCH] Fixes #21747: Skip search caching when encountering an invalid schema during migrations (#21748) --- netbox/netbox/search/backends.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/search/backends.py b/netbox/netbox/search/backends.py index 12dfbdcff..661134c95 100644 --- a/netbox/netbox/search/backends.py +++ b/netbox/netbox/search/backends.py @@ -1,9 +1,11 @@ +import logging from collections import defaultdict import netaddr from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ImproperlyConfigured +from django.db import ProgrammingError from django.db.models import F, Q, Window, prefetch_related_objects from django.db.models.fields.related import ForeignKey from django.db.models.functions import window @@ -24,6 +26,8 @@ from . import FieldTypes, LookupTypes, get_indexer DEFAULT_LOOKUP_TYPE = LookupTypes.PARTIAL MAX_RESULTS = 1000 +logger = logging.getLogger(__name__) + class SearchBackend: """ @@ -63,7 +67,12 @@ class SearchBackend: """ Receiver for the post_save signal, responsible for caching object creation/changes. """ - self.cache(instance, remove_existing=not created) + try: + self.cache(instance, remove_existing=not created) + except ProgrammingError as e: + # The schema may be incomplete during migrations; skip caching. + logger.warning(f"Skipping search cache update due to schema error: {e}") + pass def removal_handler(self, sender, instance, **kwargs): """