From 7a70d9543525681b5c408cfd17782843da13177f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 25 Apr 2025 12:35:11 +0200 Subject: [PATCH] Add warning for Elasticsearch index analyzers mismatch (#34515) --- app/lib/admin/system_check/elasticsearch_check.rb | 15 +++++++++++++++ config/locales/en.yml | 2 ++ 2 files changed, 17 insertions(+) diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb index ea35807f30..3950756e6a 100644 --- a/app/lib/admin/system_check/elasticsearch_check.rb +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -38,6 +38,11 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck :elasticsearch_index_mismatch, mismatched_indexes.join(' ') ) + elsif !specifications_match? + Admin::SystemCheck::Message.new( + :elasticsearch_analysis_mismatch, + mismatched_specifications_indexes.join(' ') + ) elsif cluster_health['status'] == 'red' Admin::SystemCheck::Message.new(:elasticsearch_health_red) elsif cluster_health['number_of_nodes'] < 2 && es_preset != 'single_node_cluster' @@ -111,10 +116,20 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck end end + def mismatched_specifications_indexes + @mismatched_specifications_indexes ||= INDEXES.filter_map do |klass| + klass.base_name if klass.specification.changed? + end + end + def indexes_match? mismatched_indexes.empty? end + def specifications_match? + mismatched_specifications_indexes.empty? + end + def es_preset ENV.fetch('ES_PRESET', 'single_node_cluster') end diff --git a/config/locales/en.yml b/config/locales/en.yml index f0e1f86c4e..63ef106d5c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -903,6 +903,8 @@ en: system_checks: database_schema_check: message_html: There are pending database migrations. Please run them to ensure the application behaves as expected + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch index analyzer settings are outdated. Please run tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch cluster is unhealthy (red status), search features are unavailable elasticsearch_health_yellow: