Exceção de trabalho: Holidays::InvalidRegion

Estou começando a solucionar problemas do Discourse, então não tenho certeza por onde começar com isso.

Isso começou há cerca de um mês. Agora tenho 4347 instâncias de 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	2:53 pm

opts	

Não modificamos o plugin discourse-calendar.

Alguém pode me dar uma direção para começar?

Isso provavelmente se deve a uma atualização recente nas definições de feriados, que pode ter feito com que a lista de regiões gerada mudasse sem atualizar as preferências de Região do Calendário existentes dos usuários.

O erro ocorre para usuários que selecionaram anteriormente uma das regiões agora removidas como sua Região do Calendário.

Você está vendo muitas instâncias da exceção porque o trabalho agendado que a aciona é executado a cada 10 minutos.

Precisaremos lidar com isso de forma mais elegante, contabilizando as atualizações nas definições de feriados que removem regiões da lista de regiões gerada.

1 curtida

Interessante! Posso dizer que nossa base de usuários é excepcionalmente internacional, então isso pode ser relevante.

Estou correto em assumir que 1) não há nada que eu possa fazer a respeito e 2) isso não importa muito? Ou preciso fazer um relatório de bug?

Obrigado

Tópico movido para Bug, portanto, não é necessário fazer outro relatório.

Como não removemos nenhuma região principal aqui, suspeito que o problema esteja relacionado a definições de região em nível de estado ou território, semelhante ao que você vê abaixo para os EUA:

A alteração provavelmente ocorreu entre estes dois commits:

Isso depende do seu nível de conforto em mexer nos internos. Você precisará:

  1. Identificar usuários que tenham uma preferência de Região do Calendário definida.
  2. Verificar quais desses valores não estão na lista atual de regiões válidas:
    REGIONS.rb
  3. Atualizar as preferências de região desses usuários para uma região de nível superior válida. Por exemplo, uma configuração de preferência como United States (us_id) deve se tornar United States.

Importa se o seu site usa eventos de calendário de feriados. Para os usuários afetados, nenhum evento de feriado será gerado até que a Região do Calendário deles seja corrigida.

2 curtidas

Obrigado! Agradeço a sua ajuda.

Estava investigando o mesmo problema porque tivemos um aumento de erros em nossa instância interna do Discourse, então eu corrigi :wink:

3 curtidas

Maravilha! Obrigado.