mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-29 06:49:55 +00:00
Merge branch 'builder-fix-schema-cache-issue' into 'develop'
Fix schema cache issue See merge request baserow/baserow!3298
This commit is contained in:
commit
ef75ae88a2
7 changed files with 31 additions and 6 deletions
backend/src/baserow
contrib
core
changelog/entries/unreleased/bug
|
@ -67,11 +67,16 @@ def clear_generated_model_cache():
|
||||||
|
|
||||||
|
|
||||||
def invalidate_table_in_model_cache(table_id: int):
|
def invalidate_table_in_model_cache(table_id: int):
|
||||||
|
from baserow.contrib.database.table.models import Table
|
||||||
|
from baserow.contrib.database.table.signals import table_schema_changed
|
||||||
|
|
||||||
|
# Send signal for other potential cached values
|
||||||
|
table_schema_changed.send(Table, table_id=table_id)
|
||||||
|
|
||||||
if settings.BASEROW_DISABLE_MODEL_CACHE:
|
if settings.BASEROW_DISABLE_MODEL_CACHE:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
new_version = str(uuid.uuid4())
|
new_version = str(uuid.uuid4())
|
||||||
# Make sure to invalidate ourselves and any directly connected tables.
|
# Make sure to invalidate ourselves and any directly connected tables.
|
||||||
from baserow.contrib.database.table.models import Table
|
|
||||||
|
|
||||||
Table.objects_and_trash.filter(id=table_id).update(version=new_version)
|
Table.objects_and_trash.filter(id=table_id).update(version=new_version)
|
||||||
|
|
|
@ -8,6 +8,7 @@ table_created = Signal()
|
||||||
table_updated = Signal()
|
table_updated = Signal()
|
||||||
table_deleted = Signal()
|
table_deleted = Signal()
|
||||||
tables_reordered = Signal()
|
tables_reordered = Signal()
|
||||||
|
table_schema_changed = Signal()
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Table)
|
@receiver(post_delete, sender=Table)
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
from django.dispatch import receiver
|
||||||
|
|
||||||
|
from baserow.contrib.database.table.signals import table_schema_changed
|
||||||
|
from baserow.core.cache import global_cache, local_cache
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(table_schema_changed)
|
||||||
|
def invalidate_table_cache(sender, table_id, **kwargs):
|
||||||
|
# Invalidate local cache when the table schema is updated
|
||||||
|
global_cache.invalidate(f"table_{table_id}__service_schema")
|
||||||
|
local_cache.delete(f"integration_service_{table_id}_table_model")
|
|
@ -495,7 +495,7 @@ class LocalBaserowTableServiceType(LocalBaserowServiceType):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
properties = global_cache.get(
|
properties = global_cache.get(
|
||||||
f"table_{service.table_id}_{service.table.version}__service_schema",
|
f"table_{service.table_id}__service_schema",
|
||||||
default=lambda: self._get_table_properties(service, allowed_fields),
|
default=lambda: self._get_table_properties(service, allowed_fields),
|
||||||
timeout=SCHEMA_CACHE_TTL,
|
timeout=SCHEMA_CACHE_TTL,
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
from baserow.contrib.integrations.local_baserow.receivers import invalidate_table_cache
|
||||||
from baserow.contrib.integrations.local_baserow.signals import (
|
from baserow.contrib.integrations.local_baserow.signals import (
|
||||||
handle_local_baserow_field_updated_changes,
|
handle_local_baserow_field_updated_changes,
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = ["handle_local_baserow_field_updated_changes", "invalidate_table_cache"]
|
||||||
"handle_local_baserow_field_updated_changes",
|
|
||||||
]
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ class LocalCache:
|
||||||
):
|
):
|
||||||
del self._local.cache[k]
|
del self._local.cache[k]
|
||||||
else:
|
else:
|
||||||
|
if key in self._local.cache:
|
||||||
del self._local.cache[key]
|
del self._local.cache[key]
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"type": "bug",
|
||||||
|
"message": "Fix cache invalidation on field change for data sources",
|
||||||
|
"domain": "builder",
|
||||||
|
"issue_number": null,
|
||||||
|
"bullet_points": [],
|
||||||
|
"created_at": "2025-03-24"
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue