Sort status check results before cleaning

Currently it could delete relevant status check results (e.g. the last
one)
This commit is contained in:
Frank Hamand 2017-09-05 14:14:57 +01:00
parent 6d05e19d96
commit d0edb89030

View File

@ -76,8 +76,12 @@ def clean_db(days_to_retain=7, batch_size=10000):
""" """
from .models import StatusCheckResult, ServiceStatusSnapshot from .models import StatusCheckResult, ServiceStatusSnapshot
to_discard_results = StatusCheckResult.objects.filter(time_complete__lte=timezone.now() - timedelta(days=days_to_retain)) to_discard_results = StatusCheckResult.objects.order_by('time_complete').filter(
to_discard_snapshots = ServiceStatusSnapshot.objects.order_by('time').filter(time__lte=timezone.now() - timedelta(days=days_to_retain)) time_complete__lte=timezone.now() - timedelta(days=days_to_retain)
)
to_discard_snapshots = ServiceStatusSnapshot.objects.order_by('time').filter(
time__lte=timezone.now() - timedelta(days=days_to_retain)
)
result_ids = to_discard_results[:batch_size].values_list('id', flat=True) result_ids = to_discard_results[:batch_size].values_list('id', flat=True)
snapshot_ids = to_discard_snapshots[:batch_size].values_list('id', flat=True) snapshot_ids = to_discard_snapshots[:batch_size].values_list('id', flat=True)