Remove outdated tasks & DynamicSettingsManager (#465)
This commit is contained in:
parent
c047463a14
commit
cc67d49047
6 changed files with 1 additions and 92 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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}"
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue