WIP: cleanup: launch a vacuum for cleaned up tables (#80236) #118
|
@ -390,6 +390,7 @@ class Event(models.Model):
|
|||
EventTypeDefinition level."""
|
||||
event_types_by_retention_days = defaultdict(set)
|
||||
default_retention_days = getattr(settings, 'JOURNAL_DEFAULT_RETENTION_DAYS', 365)
|
||||
deleted_entries = 0
|
||||
for event_type in EventType.objects.all():
|
||||
evd = event_type.definition
|
||||
retention_days = evd.retention_days if evd else None
|
||||
|
@ -402,7 +403,9 @@ class Event(models.Model):
|
|||
|
||||
for retention_days, event_types in event_types_by_retention_days.items():
|
||||
threshold = now() - timedelta(days=retention_days)
|
||||
Event.objects.filter(type__in=event_types).filter(timestamp__lt=threshold).delete()
|
||||
deleted, _ = Event.objects.filter(type__in=event_types).filter(timestamp__lt=threshold).delete()
|
||||
deleted_entries += deleted
|
||||
|
||||
return deleted
|
||||
|
||||
@property
|
||||
def session_id_shortened(self):
|
||||
|
|
|
@ -18,6 +18,7 @@ import logging
|
|||
|
||||
from django.apps import apps
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db import connection
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -37,7 +38,18 @@ class Command(BaseCommand):
|
|||
|
||||
def cleanup_model(self, model):
|
||||
manager = getattr(model, 'objects', None)
|
||||
deleted = 0
|
||||
if hasattr(manager, 'cleanup'):
|
||||
manager.cleanup()
|
||||
deleted_manager = manager.cleanup()
|
||||
if deleted_manager is not None:
|
||||
deleted += deleted_manager
|
||||
if hasattr(model, 'cleanup'):
|
||||
model.cleanup()
|
||||
deleted_model = model.cleanup()
|
||||
if deleted_model is not None:
|
||||
deleted += deleted_model
|
||||
if deleted:
|
||||
# execute a vacuum to make sure the space is properly given back
|
||||
# this is required because autovacuum may lag behind with many tenants
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("VACUUM ANALYZE \"%s\";" % model._meta.db_table)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
deleted_entries
n'est pas utilisé. Tu voulais le logguer ou plutôt faire unreturn deleted_entries
?