diff --git a/engine/apps/alerts/tasks/__init__.py b/engine/apps/alerts/tasks/__init__.py index 79b8b0ed..bf1ad097 100644 --- a/engine/apps/alerts/tasks/__init__.py +++ b/engine/apps/alerts/tasks/__init__.py @@ -1,5 +1,4 @@ from .acknowledge_reminder import acknowledge_reminder_task # noqa: F401 -from .cache_alert_group_for_web import cache_alert_group_for_web, schedule_cache_for_alert_group # noqa: F401 from .calculcate_escalation_finish_time import calculate_escalation_finish_time # noqa from .call_ack_url import call_ack_url # noqa: F401 from .check_escalation_finished import check_escalation_finished_task # noqa: F401 @@ -9,7 +8,6 @@ from .custom_button_result import custom_button_result # noqa: F401 from .delete_alert_group import delete_alert_group # noqa: F401 from .distribute_alert import distribute_alert # noqa: F401 from .escalate_alert_group import escalate_alert_group # noqa: F401 -from .invalidate_web_cache_for_alert_group import invalidate_web_cache_for_alert_group # noqa: F401, todo: remove from .invite_user_to_join_incident import invite_user_to_join_incident # noqa: F401 from .maintenance import disable_maintenance # noqa: F401 from .notify_all import notify_all_task # noqa: F401 @@ -17,7 +15,6 @@ from .notify_group import notify_group_task # noqa: F401 from .notify_ical_schedule_shift import notify_ical_schedule_shift # noqa: F401 from .notify_user import notify_user_task # noqa: F401 from .resolve_alert_group_by_source_if_needed import resolve_alert_group_by_source_if_needed # noqa: F401 -from .resolve_alert_group_if_needed import resolve_alert_group_if_needed # noqa: F401 from .resolve_by_last_step import resolve_by_last_step_task # noqa: F401 from .send_alert_group_signal import send_alert_group_signal # noqa: F401 from .send_update_log_report_signal import send_update_log_report_signal # noqa: F401 diff --git a/engine/apps/alerts/tasks/cache_alert_group_for_web.py b/engine/apps/alerts/tasks/cache_alert_group_for_web.py deleted file mode 100644 index 5f0c52d5..00000000 --- a/engine/apps/alerts/tasks/cache_alert_group_for_web.py +++ /dev/null @@ -1,19 +0,0 @@ -from django.conf import settings - -from common.custom_celery_tasks import shared_dedicated_queue_retry_task - - -@shared_dedicated_queue_retry_task( - autoretry_for=(Exception,), retry_backoff=True, max_retries=0 if settings.DEBUG else None -) -def schedule_cache_for_alert_group(alert_group_pk): - # todo: remove - pass - - -@shared_dedicated_queue_retry_task( - autoretry_for=(Exception,), retry_backoff=True, max_retries=0 if settings.DEBUG else None -) -def cache_alert_group_for_web(alert_group_pk): - # todo: remove - pass diff --git a/engine/apps/alerts/tasks/invalidate_web_cache_for_alert_group.py b/engine/apps/alerts/tasks/invalidate_web_cache_for_alert_group.py deleted file mode 100644 index 9c8786d9..00000000 --- a/engine/apps/alerts/tasks/invalidate_web_cache_for_alert_group.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.conf import settings - -from common.custom_celery_tasks import shared_dedicated_queue_retry_task - - -@shared_dedicated_queue_retry_task( - autoretry_for=(Exception,), retry_backoff=True, max_retries=1 if settings.DEBUG else None -) -def invalidate_web_cache_for_alert_group(org_pk=None, channel_pk=None, alert_group_pk=None, alert_group_pks=None): - # todo: remove - pass diff --git a/engine/apps/alerts/tasks/resolve_alert_group_if_needed.py b/engine/apps/alerts/tasks/resolve_alert_group_if_needed.py deleted file mode 100644 index 1fb38712..00000000 --- a/engine/apps/alerts/tasks/resolve_alert_group_if_needed.py +++ /dev/null @@ -1,31 +0,0 @@ -# TODO: remove this file when all the resolve_alert_group_if_needed are processed -# New version - apps.alerts.tasks.resolve_alert_group_by_source_if_needed.resolve_alert_group_by_source_if_needed - -from django.apps import apps -from django.conf import settings - -from common.custom_celery_tasks import shared_dedicated_queue_retry_task - - -@shared_dedicated_queue_retry_task( - autoretry_for=(Exception,), retry_backoff=True, max_retries=1 if settings.DEBUG else None -) -def resolve_alert_group_if_needed(alert_id): - """ - The purpose of this task is to avoid computation-heavy check after each alert. - Should be delayed and invoked only for the last one. - """ - AlertGroupForAlertManager = apps.get_model("alerts", "AlertGroupForAlertManager") - AlertForAlertManager = apps.get_model("alerts", "AlertForAlertManager") - - alert = AlertForAlertManager.objects.get(pk=alert_id) - if not resolve_alert_group_if_needed.request.id == alert.group.active_resolve_calculation_id: - return "Resolve calculation celery ID mismatch. Duplication or non-active. Active: {}".format( - alert.group.active_resolve_calculation_id - ) - else: - # Retrieving group again to have an access to child class methods - alert_group = AlertGroupForAlertManager.all_objects.get(pk=alert.group_id) - if alert_group.is_alert_a_resolve_signal(alert): - alert_group.resolve_by_source() - return f"resolved alert_group {alert_group.pk}" diff --git a/engine/apps/base/models/dynamic_setting.py b/engine/apps/base/models/dynamic_setting.py index de6ce129..70fd4971 100644 --- a/engine/apps/base/models/dynamic_setting.py +++ b/engine/apps/base/models/dynamic_setting.py @@ -1,32 +1,8 @@ -from django.db import IntegrityError, models +from django.db import models from django.db.models import JSONField -class DynamicSettingsManager(models.Manager): - def get_or_create(self, defaults=None, **kwargs): - """ - Using get_or_create inside celery task sometimes triggers making two identical DynamicSettings. - E.g. https://gitlab.amixr.io/amixr/amixr/issues/843 - More info: https://stackoverflow.com/questions/17960593/multipleobjectsreturned-with-get-or-create - Solution is to create UniqueConstraint on DynamicSetting.Name and catch IntegrityError. - Django 3 has built-in check https://github.com/django/django/blob/master/django/db/models/query.py#L571 - As for now we are using Django 2.2 which has not. - # TODO: remove this method when we will move to Django 3 - So it is overridden get_or_create to catch IntegrityError and just return object in this case. - """ - try: - return super(DynamicSettingsManager, self).get_or_create(defaults=defaults, **kwargs) - except IntegrityError: - try: - return self.get(**kwargs), False - except self.model.DoesNotExist: - pass - raise - - class DynamicSetting(models.Model): - objects = DynamicSettingsManager() - name = models.CharField(max_length=100) boolean_value = models.BooleanField(null=True, default=None) numeric_value = models.IntegerField(null=True, default=None) diff --git a/engine/settings/prod_without_db.py b/engine/settings/prod_without_db.py index ed73daed..88261cbb 100644 --- a/engine/settings/prod_without_db.py +++ b/engine/settings/prod_without_db.py @@ -83,9 +83,6 @@ CELERY_TASK_ROUTES = { "apps.alerts.tasks.create_contact_points_for_datasource.create_contact_points_for_datasource": {"queue": "default"}, "apps.alerts.tasks.sync_grafana_alerting_contact_points.sync_grafana_alerting_contact_points": {"queue": "default"}, "apps.alerts.tasks.delete_alert_group.delete_alert_group": {"queue": "default"}, - "apps.alerts.tasks.invalidate_web_cache_for_alert_group.invalidate_web_cache_for_alert_group": { - "queue": "default" - }, # todo: remove "apps.alerts.tasks.send_alert_group_signal.send_alert_group_signal": {"queue": "default"}, "apps.alerts.tasks.wipe.wipe": {"queue": "default"}, "apps.heartbeat.tasks.heartbeat_checkup": {"queue": "default"},