oncall-engine/engine
Joey Orlando 014a9c2ec2
allow the POST incoming alert endpoints to queue create_alert tasks independent of the database status (#1896)
# What this PR does

https://www.loom.com/share/18cc445117de4895a10892d56c7d3699

In preparation to upgrade our cloud databases, this PR makes some minor
changes which, after testing locally, allowed the `POST
/<integration_type>/<alert_channel_key>` endpoints to successfully
receive incoming alerts and queue the celery tasks.

I've tested all of the defined `POST
/integrations/v1/<integration_type>/<alert_channel_key>` endpoints by
sending `POST` requests to an integrations' URL while the MySQL database
was down, bringing the database back up, and ensuring the alerts were
created.

## Some other findings
- the integration heartbeat endpoints will not work as we interact w/
the database to persist the incoming heartbeat instance
- if the integration was created in the last 180 seconds, incoming
alerts will fail due to the way we cache the integration IDs
([code](https://github.com/grafana/oncall/blob/dev/engine/apps/integrations/mixins/alert_channel_defining_mixin.py#L47-L50))
- The `create_alert` celery task is set to `max_retries=None` and
`retry_backoff=True`. This means that the queued tasks will continue
retrying forever w/ an exponential backoff, until the alerts can be
created in the database (ie. when the database is back online).

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated (N/A)
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required) (N/A)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required) (N/A)
2023-05-10 12:36:23 +00:00
..
apps allow the POST incoming alert endpoints to queue create_alert tasks independent of the database status (#1896) 2023-05-10 12:36:23 +00:00
common Add route_template to preview_template endpoint (#1873) 2023-05-04 13:40:48 +08:00
config_integrations grafana -> Grafana (#1867) 2023-05-03 15:51:15 +00:00
engine Specify celery worker queue in pyroscope tags 2023-03-28 13:26:03 +08:00
settings "You're Going OnCall" mobile app push notification (#1814) 2023-05-04 16:59:57 +00:00
static/images World, meet OnCall! 2022-06-03 08:09:47 -06:00
.dockerignore One startup command to rule them all (#760) 2022-11-07 16:34:43 +01:00
.gitignore modify push notification settings + use fcm-django library (#998) 2022-12-20 12:41:34 +01:00
celery_with_exporter.sh Add flag to debug logs (#912) 2022-11-29 11:16:42 +08:00
conftest.py Add "Notifications Receiver" RBAC role (#1853) 2023-05-02 12:19:34 +00:00
Dockerfile upgrade to python 3.11.3 (#1849) 2023-05-05 15:32:40 +00:00
manage.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
pyproject.toml World, meet OnCall! 2022-06-03 08:09:47 -06:00
requirements.txt upgrade to python 3.11.3 (#1849) 2023-05-05 15:32:40 +00:00
tox.ini Add RBAC Support (#777) 2022-11-29 09:41:56 +01:00
uwsgi.ini Configure pyroscope (#1638) 2023-03-28 11:34:37 +08:00
wait_for_test_mysql_start.sh Revert "Revert "speed up ci builds from 15 to <7 minutes"" (#1643) 2023-03-28 09:34:03 +02:00