From 89e929020019c5f549e6cc75af3b05694189b9ca Mon Sep 17 00:00:00 2001 From: Frank Hamand Date: Tue, 5 Sep 2017 15:35:15 +0100 Subject: [PATCH] Add InstanceStatusSnapshot to cleanup db task These are also piling up and should be deleted --- cabot/cabotapp/tasks.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/cabot/cabotapp/tasks.py b/cabot/cabotapp/tasks.py index 438942afb..a13412627 100644 --- a/cabot/cabotapp/tasks.py +++ b/cabot/cabotapp/tasks.py @@ -74,26 +74,36 @@ def clean_db(days_to_retain=7, batch_size=10000): To loop over undeleted results, spawn new tasks to make sure db connection closed etc """ - from .models import StatusCheckResult, ServiceStatusSnapshot + from .models import StatusCheckResult, ServiceStatusSnapshot, InstanceStatusSnapshot to_discard_results = StatusCheckResult.objects.order_by('time_complete').filter( time_complete__lte=timezone.now() - timedelta(days=days_to_retain) ) - to_discard_snapshots = ServiceStatusSnapshot.objects.order_by('time').filter( + to_discard_service = ServiceStatusSnapshot.objects.order_by('time').filter( + time__lte=timezone.now() - timedelta(days=days_to_retain) + ) + to_discard_instance = InstanceStatusSnapshot.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) - snapshot_ids = to_discard_snapshots[:batch_size].values_list('id', flat=True) + service_snapshot_ids = to_discard_service[:batch_size].values_list('id', flat=True) + instance_snapshot_ids = to_discard_instance[:batch_size].values_list('id', flat=True) result_count = result_ids.count() - snapshot_count = snapshot_ids.count() + service_snapshot_count = service_snapshot_ids.count() + instance_snapshot_count = instance_snapshot_ids.count() StatusCheckResult.objects.filter(id__in=result_ids).delete() - ServiceStatusSnapshot.objects.filter(id__in=snapshot_ids).delete() + ServiceStatusSnapshot.objects.filter(id__in=service_snapshot_ids).delete() + InstanceStatusSnapshot.objects.filter(id__in=instance_snapshot_ids).delete() # If we reached the batch size on either we need to re-queue to continue cleaning up. - if result_count == batch_size or snapshot_count == batch_size: + if ( + result_count == batch_size or + service_snapshot_count == batch_size or + instance_snapshot_count == batch_size + ): clean_db.apply_async(kwargs={ 'days_to_retain': days_to_retain, 'batch_size': batch_size},