From 6b86f704bfe7ca30df41b05083edce73cadbbf32 Mon Sep 17 00:00:00 2001 From: Mathieu Pillard Date: Tue, 3 Feb 2026 17:59:50 +0100 Subject: [PATCH 1/4] Update elasticsearch client libraries to 8.x This removes elasticsearch_dsl as it's now integrated into elasticsearch python library, and adds elastic-transport which that is now a dependency. ELASTIC_CLIENT_APIVERSIONING=1 is no longer needed as of this change, everything is on 8.x. --- .github/dependabot.yml | 6 +++--- Dockerfile | 1 - docker-compose.yml | 3 +-- requirements/prod.txt | 17 ++++++++--------- src/olympia/addons/tasks.py | 2 +- src/olympia/addons/views.py | 2 +- src/olympia/api/serializers.py | 2 +- src/olympia/lib/settings_base.py | 2 +- src/olympia/ratings/tests/test_models.py | 2 +- src/olympia/search/filters.py | 2 +- .../search/management/commands/reindex.py | 3 +-- src/olympia/search/tests/test_filters.py | 2 +- src/olympia/search/utils.py | 5 +++-- 13 files changed, 23 insertions(+), 26 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 276bfa54d456..58befea0b8ff 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -58,10 +58,10 @@ updates: - ">= 6" - dependency-name: elasticsearch versions: - - ">= 8" - - dependency-name: elasticsearch-dsl + - ">= 9" + - dependency-name: elastic-transport versions: - - ">= 8" + - ">= 9" - dependency-name: kombu versions: - ">= 6" diff --git a/Dockerfile b/Dockerfile index 81d70efc2c1d..817642425700 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,6 @@ ENV NPM_DEPS_DIR=${HOME}/node_modules ENV VITE_MANIFEST_FILE_NAME=manifest.json ENV STATIC_URL_PREFIX=/static-server/ ENV MEDIA_URL_PREFIX=/user-media/ -ENV ELASTIC_CLIENT_APIVERSIONING=1 RUN < Date: Tue, 3 Feb 2026 22:02:34 +0100 Subject: [PATCH 2/4] Fix requirements --- requirements/dev.txt | 3 --- requirements/prod.txt | 9 ++++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 129786f2a654..1c47e2317abf 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -337,9 +337,6 @@ ruff==0.14.14 \ --hash=sha256:e651e977a79e4c758eb807f0481d673a67ffe53cfa92209781dfa3a996cf8412 \ --hash=sha256:e8058d2145566510790eab4e2fad186002e288dec5e0d343a92fe7b0bc1b3e13 \ --hash=sha256:f666445819d31210b71e0a6d1c01e24447a20b85458eea25a25fe8142210ae0e -typing_extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 hashin==1.0.5 \ --hash=sha256:33f74f0e033cfc928dce246ccb1de8e38b45916b313678137306cccbfeeee47f \ --hash=sha256:d1b9985addd3554ec85fd5b4e749b6faf577d49ac865a4ebda591ebf1e8f4d8a diff --git a/requirements/prod.txt b/requirements/prod.txt index eda470d5f687..c620a9ae4d09 100644 --- a/requirements/prod.txt +++ b/requirements/prod.txt @@ -171,9 +171,9 @@ setuptools==80.9.0 \ six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 -urllib3==1.26.20 \ - --hash=sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e \ - --hash=sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32 +urllib3==2.6.3 \ + --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \ + --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4 # babel is required by Sphinx, django-babel, puente babel==2.17.0 \ --hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \ @@ -1385,6 +1385,9 @@ pure_eval==0.2.3 \ traitlets==5.14.3 \ --hash=sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7 \ --hash=sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f +typing_extensions==4.15.0 \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 # Dependencies for IPython parso==0.8.5 \ --hash=sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a \ From 1798a9d1e6cde865d9294003b069799f55014df2 Mon Sep 17 00:00:00 2001 From: Mathieu Pillard Date: Fri, 6 Feb 2026 11:13:07 +0100 Subject: [PATCH 3/4] Fix tests - don't expect a tuple, expect a list --- src/olympia/search/tests/test_filters.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/olympia/search/tests/test_filters.py b/src/olympia/search/tests/test_filters.py index f46af01c287b..97b31766c901 100644 --- a/src/olympia/search/tests/test_filters.py +++ b/src/olympia/search/tests/test_filters.py @@ -179,7 +179,7 @@ def _test_q(self, qs, query): 'bool': { 'must': [ {'term': {'is_experimental': False}}, - {'terms': {'status': (4,)}}, + {'terms': {'status': [4,]}}, {'exists': {'field': 'current_version'}}, {'term': {'is_disabled': False}}, ] @@ -425,7 +425,7 @@ def test_status(self): assert 'must' not in qs['query']['bool'] filter_ = qs['query']['bool']['filter'] - assert {'terms': {'status': amo.APPROVED_STATUSES}} in filter_ + assert {'terms': {'status': list(amo.APPROVED_STATUSES)}} in filter_ assert {'exists': {'field': 'current_version'}} in filter_ assert {'term': {'is_disabled': False}} in filter_ @@ -1527,7 +1527,7 @@ def test_combined(self): assert 'must_not' not in bool_ filter_ = bool_['filter'] - assert {'terms': {'status': amo.APPROVED_STATUSES}} in filter_ + assert {'terms': {'status': list(amo.APPROVED_STATUSES)}} in filter_ assert {'exists': {'field': 'current_version'}} in filter_ assert {'term': {'is_disabled': False}} in filter_ @@ -1554,7 +1554,7 @@ def test_filter_featured_sort_random(self): assert 'must_not' not in bool_ filter_ = bool_['filter'] - assert {'terms': {'status': amo.APPROVED_STATUSES}} in filter_ + assert {'terms': {'status': list(amo.APPROVED_STATUSES)}} in filter_ assert {'exists': {'field': 'current_version'}} in filter_ assert {'term': {'is_disabled': False}} in filter_ @@ -1572,7 +1572,7 @@ def test_filter_promoted_sort_random(self): assert 'must_not' not in bool_ filter_ = bool_['filter'] - assert {'terms': {'status': amo.APPROVED_STATUSES}} in filter_ + assert {'terms': {'status': list(amo.APPROVED_STATUSES)}} in filter_ assert {'exists': {'field': 'current_version'}} in filter_ assert {'term': {'is_disabled': False}} in filter_ From 708eaea7afb2803eec251d0d19618fc449801066 Mon Sep 17 00:00:00 2001 From: Mathieu Pillard Date: Fri, 6 Feb 2026 11:22:40 +0100 Subject: [PATCH 4/4] Cleanup --- src/olympia/search/tests/test_filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/olympia/search/tests/test_filters.py b/src/olympia/search/tests/test_filters.py index 97b31766c901..a53af7624053 100644 --- a/src/olympia/search/tests/test_filters.py +++ b/src/olympia/search/tests/test_filters.py @@ -179,7 +179,7 @@ def _test_q(self, qs, query): 'bool': { 'must': [ {'term': {'is_experimental': False}}, - {'terms': {'status': [4,]}}, + {'terms': {'status': [4]}}, {'exists': {'field': 'current_version'}}, {'term': {'is_disabled': False}}, ]