zulip/zilencer
Alex Vandiver f531f3a27f push_notifications: Drop FCM retries to 2, not 10.
This reverts bc15085098 (which provided
not justification for its change) and moves further, down to 2 retries
from the default of 5.

10 retries, with exponential backoff, is equivalent to sleeping 2^11
seconds, or just about 34 minutes (though the code uses a jitter which
may make this up to 51 minutes).  This is an unreasonable amount of
time to spend in this codepath -- as only one worker is used, and it
is single-threaded, this could effectively block all missed message
notifications for half an hour or longer.

This is also necessary because messages sent through the push bouncer
are sent synchronously; the sending server uses a 30-second timeout,
set in PushBouncerSession.  Having retries which linger longer than
this can cause duplicate messages; the sending server will time out
and re-queue the message in RabbitMQ, while the push bouncer's request
will continue, and may succeed.

Limit to 2 retries (APNS currently uses 3), and results expected max
of 4 seconds of sleep, potentially up to 6.  If this fails, there
exists another retry loop above it, at the RabbitMQ layer (either
locally, or via the remote server's queue), which will result in up to
3 additional retries -- all told, the request will me made to FCM up
to 12 times.
2022-03-08 12:52:58 -08:00
..
lib billing: Move zilencer/lib/stripe to corporate. 2018-10-01 15:43:44 -07:00
management docs: Add missing space in “time zone”. 2022-02-24 14:05:12 -08:00
migrations corporate: Add helper for deactivating remote server registrations. 2022-01-03 14:02:48 -08:00
README.md docs: Format Markdown with Prettier. 2021-09-08 12:06:24 -07:00
__init__.py
models.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
urls.py zilencer: Add endpoint for deactivating remote server registration. 2022-01-21 14:57:04 -08:00
views.py push_notifications: Drop FCM retries to 2, not 10. 2022-03-08 12:52:58 -08:00

README.md

ZILENCER -- The Zulip license manager

This app is the place for storing state about various deployments of Zulip that exist in the world.