Исключение задачи: Holidays::InvalidRegion

Я новичок в устранении неполадок Discourse, поэтому не совсем уверен, с чего начать.

Это началось около месяца назад. Сейчас у меня уже 4347 случаев ошибки Job exception: Holidays::InvalidRegion.

/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/parse_options.rb:83:in `block in validate!'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/parse_options.rb:82:in `each'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/parse_options.rb:82:in `validate!'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/parse_options.rb:41:in `parse_regions!'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/parse_options.rb:20:in `call'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays/finder/context/between.rb:14:in `call'
/var/www/discourse/plugins/discourse-calendar/vendor/holidays/lib/holidays.rb:49:in `between'
/var/www/discourse/plugins/discourse-calendar/app/services/discourse_calendar/holiday.rb:14:in `find_holidays_for'
/var/www/discourse/plugins/discourse-calendar/jobs/scheduled/create_holiday_events.rb:68:in `block in execute'
/var/www/discourse/plugins/discourse-calendar/jobs/scheduled/create_holiday_events.rb:66:in `each'
/var/www/discourse/plugins/discourse-calendar/jobs/scheduled/create_holiday_events.rb:66:in `execute'
/var/www/discourse/app/jobs/base.rb:318:in `block (2 levels) in perform'
rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
/var/www/discourse/app/jobs/base.rb:305:in `block in perform'
/var/www/discourse/app/jobs/base.rb:301:in `each'
/var/www/discourse/app/jobs/base.rb:301:in `perform'
/var/www/discourse/app/jobs/base.rb:381:in `perform'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'

env

hostname	discourse-app
process_id	3072273
application_version	66f53ac5b9c7fdcd53868ccabac310b13ffc8910
current_db	default
current_hostname	discourse.------------.net
job	DiscourseCalendar::CreateHolidayEvents
problem_db	default
time	14:53
	
opts	

Мы не вносили никаких изменений в плагин discourse-calendar.

Может ли кто-нибудь хотя бы подсказать, в каком направлении стоит искать проблему?

Это, скорее всего, связано с недавним обновлением определений праздников, из-за которого сгенерированный список регионов изменился, но существующие настройки Регион календаря пользователей не были обновлены.

Ошибка возникает у пользователей, которые ранее выбрали один из удалённых регионов в качестве своего Региона календаря.

Вы видите множество случаев возникновения этого исключения, потому что запланированная задача, которая его запускает, выполняется каждые 10 минут.

Нам нужно будет обрабатывать это более корректно, учитывая обновления определений праздников, которые удаляют регионы из сгенерированного списка регионов.

1 лайк

Интересно! Я могу сказать, что наша пользовательская база исключительно интернациональна, так что это может иметь место.

Правильно ли я понимаю, что 1) я ничего не могу с этим поделать и 2) это не так уж важно? Или мне нужно создать отчет об ошибке?

Спасибо

Я переместил эту тему в bug, поэтому нет необходимости создавать новый отчет.

Поскольку мы на самом деле не удаляли никаких крупных регионов здесь, я подозреваю, что проблема связана с определениями регионов на уровне штата или территории, подобными тем, что вы видите ниже для США:

Скорее всего, изменение произошло между этими двумя коммитами:

Это зависит от вашей готовности копаться во внутреннем устройстве. Вам потребуется:

  1. Выявить пользователей, у которых установлена настройка Calendar Region (Регион календаря).
  2. Проверить, какие из этих значений отсутствуют в текущем списке допустимых регионов:
    REGIONS.rb
  3. Обновить настройки региона для этих пользователей на допустимый регион верхнего уровня. Например, настройка вида United States (us_id) должна стать United States.

Это имеет значение, если ваш сайт использует события праздничного календаря. Для затронутых пользователей события праздников не будут генерироваться, пока не будет исправлена их настройка Calendar Region.

2 лайка

Спасибо! Я ценю вашу помощь.

Я тоже расследовал эту проблему, так как у нас резко выросло количество ошибок в нашем внутреннем экземпляре Discourse, поэтому я её исправил :wink:

3 лайка

Прекрасно! Спасибо.