Go to file
Greg Price 4b5c52fc99 queue: Prevent an AttributeError rather than swallowing it.
When the RabbitMQ server disappears, we log errors like these:

```
Traceback (most recent call last):
  File "./zerver/lib/queue.py", line 114, in json_publish
    self.publish(queue_name, ujson.dumps(body))
  File "./zerver/lib/queue.py", line 108, in publish
    self.ensure_queue(queue_name, do_publish)
  File "./zerver/lib/queue.py", line 88, in ensure_queue
    if not self.connection.is_open:
AttributeError: 'NoneType' object has no attribute 'is_open'

During handling of the above exception, another exception occurred:
[... traceback of connection failure inside the retried self.publish()]
```

That's a type error -- a programming error, not an exceptional
condition from outside the program.  Fix the programming error.

Also move the retry out of the `except:` block, so that if it also
fails we don't get the exceptions stacked on each other.  This is a
new feature of Python 3 which is sometimes indispensable for
debugging, and which surfaced this nit in the logs (on Python 2 we'd
never see the AttributeError part), but in some cases it can cause a
lot of spew if care isn't taken.
2017-11-16 18:33:14 -08:00
.tx Revert "locale: Fix incorrect locale name for zh-Hans." 2017-10-06 10:09:08 -07:00
analytics python: Sort imports in smaller apps. 2017-11-15 15:55:49 -08:00
confirmation Text-wrap the remaining long lines exceeding 110. 2017-11-15 10:58:03 -08:00
corporate corporate: Remove unused imports (F401). 2017-11-07 16:37:04 -08:00
docs docs: Use `git clone -c` to set `git pull` to rebase by default. 2017-11-16 14:35:02 -08:00
frontend_tests docs: Reorganize developer docs to improve navigation. 2017-11-16 09:45:08 -08:00
pgroonga py3: Remove all `from __future__ import unicode_literals`. 2017-10-17 23:07:42 -07:00
puppet certbot: Control auto-renew with a zulip.conf setting. 2017-11-15 21:50:41 -08:00
requirements requirements: Upgrade to fakeldap 0.6.1. 2017-11-16 15:23:44 -08:00
scripts docs: Update links from codebase to point to ReadTheDocs. 2017-11-16 10:53:49 -08:00
static portico-header: Remove border between image and realm name. 2017-11-16 16:03:24 -08:00
templates portico: Add code of conduct features to for/open-source.md. 2017-11-16 14:05:49 -08:00
tools build-release-tarball: Fold away the confusing variable TMP_CHECKOUT. 2017-11-16 15:54:34 -08:00
zerver queue: Prevent an AttributeError rather than swallowing it. 2017-11-16 18:33:14 -08:00
zilencer populate_db: Remove the 'simple' realm. 2017-11-15 22:42:05 -08:00
zproject docs: Update links from codebase to point to ReadTheDocs. 2017-11-16 10:53:49 -08:00
.codecov.yml codecov: Turn off "patch" diffs. 2017-07-12 17:52:26 -07:00
.editorconfig Remove spaces between file types in editorconfig list. 2017-04-17 10:04:17 -07:00
.eslintignore zulip_ops: Delete the long-disused `stats1.zulip.net` config and its dependencies. 2017-08-15 17:30:31 -07:00
.eslintrc.json user-groups: Create static/js/user_groups.js. 2017-11-13 13:08:15 +05:00
.gitattributes gitattributes: Set .jpeg files as binary. 2017-10-26 22:25:39 -07:00
.gitignore remote dev: Add code and instructions for creating digital ocean droplets. 2017-11-06 12:20:39 -08:00
.gitlint requirements: Upgrade gitlint to 0.8.2. 2017-05-05 09:59:39 -07:00
.isort.cfg python: Add settings for isort. 2017-11-14 12:31:14 -08:00
.npmignore Add proxy notes to new README.dev.md troubleshooting section. 2016-03-29 21:54:05 -07:00
.travis.yml docs: Update links from codebase to point to ReadTheDocs. 2017-11-16 10:53:49 -08:00
CODE_OF_CONDUCT.md repository: Add CODE_OF_CONDUCT.md. 2017-06-14 18:43:08 -07:00
CONTRIBUTING.md docs: Update links to ReadTheDocs to always use https. 2017-11-16 10:59:24 -08:00
Dockerfile-dev Move Dockerfile to Dockerfile-dev. 2017-09-25 12:32:33 -07:00
LICENSE docs: Move license declaration from README.md to LICENSE. 2017-11-14 16:04:23 -08:00
README.md lint: Fix long lines in README.md. 2017-11-16 11:38:13 -08:00
Vagrantfile Revert "vagrant: Switch Virtualbox to use NFS for syncing files." 2017-10-31 17:49:53 -07:00
manage.py Remove `from __future__ import absolute_import`. 2017-10-17 22:59:42 -07:00
package.json icons: Create framework for custom icons and add new bot icon. 2017-11-10 11:18:42 -08:00
version.py icons: Create framework for custom icons and add new bot icon. 2017-11-10 11:18:42 -08:00
yarn.lock Calculate gravatar hashes on the webapp client. 2017-11-07 10:36:02 -08: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 300 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

Build Status Coverage Status Mypy coverage docs Zulip chat Twitter

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.