From b0f08062396532875b2872115b2ed43450ec0905 Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Tue, 3 Nov 2020 16:35:21 +0200 Subject: [PATCH] When using the MongoDB backend, don't cleanup if result_expires is 0 or None. Fixes #6450. --- celery/backends/mongodb.py | 3 +++ t/unit/backends/test_mongodb.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/celery/backends/mongodb.py b/celery/backends/mongodb.py index 5ae3ddf822..76eab766b7 100644 --- a/celery/backends/mongodb.py +++ b/celery/backends/mongodb.py @@ -248,6 +248,9 @@ def _forget(self, task_id): def cleanup(self): """Delete expired meta-data.""" + if not self.expires: + return + self.collection.delete_many( {'date_done': {'$lt': self.app.now() - self.expires_delta}}, ) diff --git a/t/unit/backends/test_mongodb.py b/t/unit/backends/test_mongodb.py index fb304b7e36..5a391d86d3 100644 --- a/t/unit/backends/test_mongodb.py +++ b/t/unit/backends/test_mongodb.py @@ -485,6 +485,12 @@ def test_cleanup(self, mock_get_database): mock_get_database.assert_called_once_with() mock_collection.delete_many.assert_called() + self.backend.collections = mock_collection = Mock() + self.backend.expires = None + + self.backend.cleanup() + mock_collection.delete_many.assert_not_called() + def test_get_database_authfailure(self): x = MongoBackend(app=self.app) x._get_connection = Mock()