diff --git a/app/workers/search_index_add_worker.rb b/app/workers/search_index_add_worker.rb index 2cf51aaa4a7..fe2f8ae22a1 100644 --- a/app/workers/search_index_add_worker.rb +++ b/app/workers/search_index_add_worker.rb @@ -5,20 +5,32 @@ def perform(class_name, id) @class_name = class_name @id = id - if searchable_instance.nil? - logger.warn("SearchIndexAddWorker: Could not find #{class_name} with id #{id} (#{Time.zone.now.utc}).") - elsif !searchable_instance.can_index_in_search? - logger.warn("SearchIndexAddWorker: Was asked to index #{class_name} with id #{id}, but it was unindexable (#{Time.zone.now.utc}).") + searchable_instance = find_searchable_instance + return unless searchable_instance + + if searchable_instance.can_index_in_search? + add_to_search_index(searchable_instance) else - index = Whitehall::SearchIndex.for(searchable_instance.search_api_index, logger:) - index.add searchable_instance.search_index + logger.warn("SearchIndexAddWorker: Was asked to index #{class_name} with id #{id}, but it was unindexable (#{Time.zone.now.utc}).") end + rescue StandardError => e + logger.error("SearchIndexAddWorker: Error adding #{class_name} with id #{id} to search index: #{e.message}") end private - def searchable_instance - @searchable_instance ||= searchable_class.find_by(id:) + def find_searchable_instance + searchable_class.find_by(id:) + rescue StandardError => e + logger.error("SearchIndexAddWorker: Error finding #{class_name} with id #{id}: #{e.message}") + nil + end + + def add_to_search_index(searchable_instance) + index = Whitehall::SearchIndex.for(searchable_instance.search_api_index, logger:) + index.add searchable_instance.search_index + rescue StandardError => e + logger.error("SearchIndexAddWorker: Error adding #{class_name} with id #{id} to search index: #{e.message}") end def searchable_class diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e34768066b..084d2886c63 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -409,7 +409,7 @@ en: fa: Persian fi: Finnish fr: French - gd: Irish + ga: Irish gu: Gujarati he: Hebrew hi: Hindi