Go to file
Alex Vandiver 75f1070881 queue_processors: Disable timeouts with PushNotificationsWorker.
Since 3853285241, PushNotificationsWorker uses the aioapns library
to send Apple push notifications.  This introduces an asyncio event
loop into this worker process, which, if unlucky, can respond poorly
when a SIGALRM is introduced to it:

```
[asyncio] Task exception was never retrieved
future: <Task finished coro=<send_apple_push_notification.<locals>.attempt_send() done, defined at /path/to/zerver/lib/push_notifications.py:166> exception=WorkerTimeoutException(30, 1)>
Traceback (most recent call last):
  File "/path/to/zerver/lib/push_notifications.py", line 169, in attempt_send
    result = await apns_context.apns.send_notification(request)
  File "/path/to/zulip-py3-venv/lib/python3.6/site-packages/aioapns/client.py", line 57, in send_notification
    response = await self.pool.send_notification(request)
  File "/path/to/zulip-py3-venv/lib/python3.6/site-packages/aioapns/connection.py", line 407, in send_notification
    response = await connection.send_notification(request)
  File "/path/to/zulip-py3-venv/lib/python3.6/site-packages/aioapns/connection.py", line 189, in send_notification
    data = json.dumps(request.message, ensure_ascii=False).encode()
  File "/usr/lib/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/path/to/zerver/worker/queue_processors.py", line 353, in timer_expired
    raise WorkerTimeoutException(limit, len(events))
zerver.worker.queue_processors.WorkerTimeoutException: Timed out after 30 seconds processing 1 events
```

...which subsequently leads to the worker failing to make any progress
on the queue.

Remove the timeout on the worker.  This may result in failing to make
forward progress if Apple/Google take overly long handling requests,
but is likely preferable to failing to make forward progress if _one_
request takes too long and gets unlucky with when the signal comes
through.
2021-10-21 08:59:56 -07:00
.github ci: Run production tests when files mentioning zilencer are changed. 2021-10-20 16:53:11 -07:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics realm: Rename plan type constants to be more descriptive. 2021-10-19 12:20:39 -07:00
confirmation migrations: Add progress output to confirmation backfill. 2021-09-17 11:23:32 -07:00
corporate realm: Rename plan type constants to be more descriptive. 2021-10-19 12:20:39 -07:00
docs docs: Remove AWS Cloud9 setup instructions. 2021-10-18 10:38:00 -07:00
frontend_tests lint: Fix typos found by codespell. 2021-10-19 16:51:13 -07:00
locale i18n: Update translation data from Transifex. 2021-09-16 13:18:19 -07:00
pgroonga pgroonga: Remove unnecessary code from first migration. 2021-05-28 09:42:33 -07:00
puppet puppet: Add WSGIApplicationGroup config to Apache SSO example. 2021-10-08 15:07:23 -07:00
requirements pypi: Upgrade python-zulip-api packages to version 0.8.1. 2021-10-20 10:25:19 -07:00
scripts lint: Fix typos found by codespell. 2021-10-19 16:51:13 -07:00
static lint: Fix typos found by codespell. 2021-10-19 16:51:13 -07:00
stubs billing: Add command for switching plans from Standard to Plus. 2021-10-15 17:27:50 -07:00
templates docs: Tweak Keycloak SAML instructions. 2021-10-19 17:00:10 -07:00
tools provision: Refuse to run outside an existing Vagrant environment. 2021-10-20 10:35:46 -07:00
var/puppeteer puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
zerver queue_processors: Disable timeouts with PushNotificationsWorker. 2021-10-21 08:59:56 -07:00
zilencer push_notifications: Pass down the remote server and user-id for logs. 2021-10-19 22:04:24 -07:00
zproject lint: Fix typos found by codespell. 2021-10-19 16:51:13 -07:00
.browserslistrc browserslist: Drop 0.2% usage threshold to 0.15%. 2020-09-28 10:57:49 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig editorconfig: Restore indent_size = 2 for Markdown. 2021-08-20 23:14:37 -07:00
.eslintignore requirements: Remove Thumbor. 2021-05-06 20:07:32 -07:00
.eslintrc.json dependencies: Upgrade JavaScript dependencies. 2021-10-17 07:15:09 -07:00
.gitattributes
.gitignore ci: Update outdated comments, documentation and gitignore. 2021-07-22 14:09:01 -07:00
.gitlint lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
.mailmap mailmap: Add mailmap entry for Sahil Batra. 2021-07-21 10:46:34 -07:00
.npmignore
.prettierignore prettier: Exclude backend-processed Markdown files. 2021-08-20 23:14:37 -07:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
CODE_OF_CONDUCT.md docs: Apply bullet style changes from Prettier. 2021-09-08 12:06:24 -07:00
CONTRIBUTING.md docs: Format Markdown with Prettier. 2021-09-08 12:06:24 -07:00
Dockerfile-postgresql docs: Standardize on PostgreSQL, not Postgres. 2020-10-28 11:55:16 -07:00
LICENSE license: Move copyright notice from LICENSE to NOTICE. 2021-02-05 09:28:12 -08:00
NOTICE docs: Bump copyright year. 2021-02-05 09:28:15 -08:00
README.md docs: Apply sentence single-spacing from Prettier. 2021-09-08 12:06:24 -07:00
SECURITY.md docs: Apply sentence single-spacing from Prettier. 2021-09-08 12:06:24 -07:00
Vagrantfile Vagrantfile: Move inline provision script to a separate file. 2021-09-14 10:22:48 -07:00
babel.config.js i18n: Initialize FormatJS. 2021-04-13 17:41:10 -07:00
manage.py manage: Restore `changepassword` back to documented_commands. 2021-06-18 09:11:01 -07:00
package.json dependencies: Move eslint-plugin-formatjs to devDependencies. 2021-10-17 07:15:09 -07:00
postcss.config.js postcss: Cleanly import flatpickr dark theme. 2021-09-13 17:12:49 -07:00
prettier.config.js prettier: Disable embedded language formatting for Markdown. 2021-08-20 23:14:37 -07:00
pyproject.toml auth: Add support for using SCIM for account management. 2021-10-14 12:29:10 -07:00
setup.cfg pycodestyle: Improve comments documenting excludes. 2021-02-12 13:11:25 -08:00
stylelint.config.js portico: Add /for/education, /for/events, /for/research pages. 2021-07-20 22:37:52 -07:00
tsconfig.json tsconfig: Enable noImplicitOverride. 2021-09-13 10:10:34 -07:00
version.py pypi: Upgrade python-zulip-api packages to version 0.8.1. 2021-10-20 10:25:19 -07:00
webpack.config.ts webpack: Remove LoaderOptionsPlugin. 2021-10-17 07:13:57 -07:00
yarn.lock dependencies: Upgrade JavaScript dependencies. 2021-10-17 07:15:09 -07:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 700 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

GitHub Actions build status coverage status Mypy coverage code style: black code style: prettier GitHub release docs Zulip chat Twitter GitHub Sponsors

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.