Исключение задачи: 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) это не так уж важно? Или мне нужно создать отчет об ошибке?

Спасибо

Я перенес эту тему в Contribute > Bug, поэтому создавать новый отчет не нужно.

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

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

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

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

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

2 лайка

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

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

3 лайка

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