summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* update py-amqp to 2.6.1pyamqp2.6.1Asif Saif Uddin2020-07-311-1/+1
|
* flake8: noqa the Python 2-only builtins (#1228)4.xChristian Clauss2020-07-283-8/+8
| | | | | | | | | * flake8: noqa the Python 2-only builtin cmp() * flake8: buffer() was removed in Python 3 * flake8: unicode() was removed in Python3 because all str are Unicode Adds the modifications from #1227
* buffer() was removed in Python 3 so use bytes (#1218)Christian Clauss2020-07-281-0/+4
| | | | | | | | | | | | | | | | | | | * buffer() was removed in Python 3 so use memoryview https://docs.python.org/2.7/library/stdtypes.html#memoryview-type * buffer = bytes on Python 3 * from kombu.five import buffer * buffer --> buffer_t * @patch('buffer_t') in test_qpid.py * @patch('kombu.five.buffer_t') * Use buffer on legacy Python and bytes on Python * Update test_qpid.py
* tox.ini: Lint on Python, not on legacy Python (#1217)Christian Clauss2020-07-282-6/+7
| | | | | | | | | | | | | | | * tox.ini: Lint on Python, not on legacy Python * Travis CI: Lint on Python, not on legacy Python * Update .travis.yml * Update .travis.yml Co-authored-by: Omer Katz <omer.drow@gmail.com> * flakeplus only works on legacy Python Co-authored-by: Omer Katz <omer.drow@gmail.com>
* Add an SQS transport option for custom botocore configKrzysztof Jagiello2020-07-012-1/+30
|
* v4.6.11v4.6.11Asif Saif Uddin (Auvi)2020-06-244-4/+4
|
* changelog for v4.6.11Asif Saif Uddin (Auvi)2020-06-241-1/+12
|
* Improve mention for MongoDB transport mention in docsDefteZ2020-06-142-2/+4
|
* Revert incompatible changes in #1193 and additional improvements (#1211)Matus Valo2020-06-106-29/+88
| | | | | | | * Revert incompatible changes introduced in #1193 * Improved integration tests covering connection * Fix unittests on python2 + flake8 fixes
* default_channel should reconnect automatically (#1209)Matus Valo2020-06-053-0/+19
|
* v4.6.10v4.6.104.6.9Asif Saif Uddin (Auvi)2020-06-034-4/+4
|
* changelog for 4.6.10Asif Saif Uddin (Auvi)2020-06-031-0/+13
|
* Merge branch 'master' of https://github.com/celery/kombuAsif Saif Uddin (Auvi)2020-06-033-15/+77
|\
| * reuse connectionConor Stevenson2020-06-022-1/+5
| |
| * set _connection in _ensure_connection (#1205)v4.6.9Conor Stevenson2020-06-012-2/+5
| | | | | | Co-authored-by: Conor Stevenson <conor@lendingblock.com>
| * Improved Consumer user guideMatus Valo2020-06-011-13/+68
| |
* | remove un supported classifierAsif Saif Uddin (Auvi)2020-06-031-1/+0
|/
* v 4.6.9Asif Saif Uddin (Auvi)2020-06-014-4/+4
|
* update changelog for 4.6.94.6.9Asif Saif Uddin (Auvi)2020-06-011-1/+1
|
* update changelogAsif Saif Uddin (Auvi)2020-06-011-1/+36
|
* update pyamqpAsif Saif Uddin2020-06-011-1/+1
|
* Fix broken compatibility with CeleryMatus Valo2020-06-012-11/+21
|
* Ensure connection when connecting to brokerMatus Valo2020-06-015-62/+108
|
* Fix for issue #1198: Celery crashes in cases where there aren’t enough ↵Ihar Nauros2020-05-272-6/+90
| | | | | | | | | | | | | | | available workers to start acting on “in-flight” messages in the SQS queue (#1199) * Fix for the issue #1172 * Unit test for the fix relating to the issue #1172 * Fix for issue #1198: Celery crashes in cases where there aren’t enough available workers to start acting on “in-flight” messages in the SQS queue * Fix for issue #1198: fixed lint issues * Fix for issue #1198: added unit tests Co-authored-by: inauros <inauros@copyright.com>
* Fix connection imaybe_declare (#1196)Oleh Kuchuk2020-05-262-0/+19
|
* Revert "Raise RecoverableConnectionError in maybe_declare with retry on and ↵Matus Valo2020-05-252-19/+0
| | | | | dropped connection" (#1195) This reverts commit 90f51bcbbd32146998e7c7e4491150344343776b.
* Fix: eliminate remaining race conditions from SQLAlchemy ChannelAntoine Busque2020-05-171-15/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although a race condition in the SQLAlchmey Channel class was fixed in a recent commit [0], a few other methods are also susceptible to race conditions. Indeed, if multiple threads call the class' `_open` method, a conflict can occur with the `metadata.create_all` call which creates the schema in the database, resulting in an exception which can look like this: ``` sqlalchemy.exc.IntegrityError: (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint "pg_type_typname_nsp_index" DETAIL: Key (typname, typnamespace)=(queue_id_sequence, 2200) already exists. ``` Similarly, `_get_or_create` is susceptible to a race condition if two threads try to create the unique queue object in the database at the same time, resulting in this kind of exception: ``` sqlalchemy.exc.IntegrityError: (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint "kombu_queue_name_key" DETAIL: Key (name)=(celery) already exists. [SQL: INSERT INTO kombu_queue (id, name) VALUES (nextval('queue_id_sequence'), %(name)s) RETURNING kombu_queue.id] [parameters: {'name': 'celery'}] ``` By using the mutex, we can ensure that only one thread at a time executes these critical sections, eliminating the race conditions. The mutex has been made re-entrant since `_open` can be called from `_get_or_create`, which would cause a deadlock if a simple `Lock` was used instead of `RLock`. [0] 8f1de37a08318d388a048341ddca12af30019bf3 Signed-off-by: Antoine Busque <antoinebusque@gmail.com>
* Modified Mutex to use redis LuaLock implementationVinay Karanam2020-05-172-58/+44
| | | | Fixes #1190
* Fix flake8Matus Valo2020-05-151-1/+1
|
* Improve integration test suitMatus Valo2020-05-151-1/+17
|
* fix 100% cpu usage on linux while using sqsAndrii Maletskyi2020-05-152-37/+50
| | | | fix https://github.com/celery/celery/issues/5299
* Improved Priority integration testsMatus Valo2020-05-132-26/+35
|
* Fix flake8Matus Valo2020-05-123-11/+11
|
* Added priority integration tests for RedisMatus Valo2020-05-122-7/+96
|
* Added integration tests for priority queuesMatus Valo2020-05-082-1/+91
|
* Added TTL integration testsMatus Valo2020-05-062-1/+56
|
* Added Integration tests for direct, topic and fanout exchange typesMatus Valo2020-05-063-2/+104
|
* Fix Consumer EncodingAaronKable2020-05-061-1/+1
|
* Use explicit py-amqp transport instead of amqp in integration testsMatus Valo2020-05-041-1/+1
|
* Added Simple Buffer integration testsMatus Valo2020-05-041-2/+13
|
* SQLAlchemy transport: Use Query.with_for_update() instead of deprecated ↵Matus Valo2020-05-041-1/+1
| | | | | | | | Query.with_lockmode(). Based on SQLAlchemy documentation: * method sqlalchemy.orm.query.Query.with_lockmode(mode) with mode='update' - translates to FOR UPDATE (Deprecated since version 0.9) * method sqlalchemy.orm.query.Query.with_for_update() When called with no arguments, the resulting SELECT statement will have a FOR UPDATE clause appended.
* Rename test classes for better test outputMatus Valo2020-05-032-2/+2
|
* Removed scripts depending on RabbitMQMatus Valo2020-05-032-22/+0
|
* Create common class of integration testsMatus Valo2020-05-033-99/+62
|
* Initial redis integration tests implementationMatus Valo2020-05-033-0/+105
|
* Enable integration tests for all versions of python in travisMatus Valo2020-04-302-3/+21
|
* Added basic integration tests for RabbitMQMatus Valo2020-04-301-0/+50
|
* Added integration testing infrastructure for RabbitMQMatus Valo2020-04-3020-563/+112
|
* Fix: make SQLAlchemy Channel init thread-safeAntoine Busque2020-04-301-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The init method for the SQLAlchemy transport's Channel implementation is not currently thread-safe. This means that if two threads in a process attempt to instantiate a Channel concurrently, there can be a race condition when registering the SQLAlchemy model classes, which leaves the SQLAlchemy ORM mapper in a broken state. This results in an exception like the following: ``` sqlalchemy.exc.InvalidRequestError: Table 'kombu_message' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object. ``` Any subsequent calls to the SQLAlchemy ORM will then fail with an exception like this: ``` sqlalchemy.exc.InvalidRequestError: Multiple classes found for path "Message" in the registry of this declarative base. Please use a fully module-qualified path. ``` This also applies to any SQLAlchemy calls in the same process, not just those made by Kombu or Celery, and can only really be recovered from by killing the process and starting over. To avoid all of this, introduce a mutex which ensures that only one thread at a time can register a SQLAlchemy model when instantiating the Channel class. Signed-off-by: Antoine Busque <antoinebusque@gmail.com>
* Another possible fix for #1174Bernd Wechner2020-04-241-1/+3
| | | | | | | | | Flake8 compliant this time. Unit test to follow if possible but see no unit testing infrastructure in the repo. Fail behaviour on this is Exchange.publish(text) crashes with an encoding error. A Pass is that the message is published, which can be confirmed with Queue.get() and comparing the payload with that which was published. Requires a running RabbitMQ instance to test (as that is the context of the crash). A unit test though, while holding value is of the functionality of Exchange.publish() - currently broken for text messages, is not central to the value of fixing this break. ref: https://github.com/celery/kombu/issues/1174