Excepción de trabajo: Holidays::InvalidRegion

Soy nuevo en la solución de problemas de Discourse, así que no estoy seguro por dónde empezar con esto.

Esto comenzó hace aproximadamente un mes. Ahora tengo 4347 instancias 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	

No hemos modificado el plugin discourse-calendar.

¿Alguien puede empezar a orientarme?

Es probable que esto se deba a una actualización reciente de las definiciones de días festivos, que puede haber provocado que la lista de regiones generada cambie sin actualizar las preferencias existentes de Región del calendario de los usuarios.

El error se produce para los usuarios que previamente seleccionaron una de las regiones ahora eliminadas como su Región del calendario.

Está viendo que la excepción ocurre muchas veces porque el trabajo programado que la activa se ejecuta cada 10 minutos.

Necesitaremos manejar esto de manera más elegante, teniendo en cuenta las actualizaciones de las definiciones de días festivos que eliminan regiones de la lista de regiones generada.

1 me gusta

¡Interesante! Puedo decir que nuestra base de usuarios es excepcionalmente internacional, así que eso podría ser una pista.

¿Tengo razón al suponer que 1) no hay nada que pueda hacer al respecto y 2) en realidad no importa mucho? ¿O necesito informar de un error?

Gracias

He movido este tema a Bug, así que no es necesario hacer otro informe.

Dado que en realidad no hemos eliminado ninguna región importante aquí, sospecho que el problema está relacionado con definiciones de regiones a nivel estatal o territorial, similar a lo que ves a continuación para los EE. UU.:

El cambio probablemente ocurrió entre estos dos commits:

Eso depende de tu nivel de comodidad para investigar los detalles internos. Necesitarás:

  1. Identificar a los usuarios que tienen configurada una preferencia de Región del calendario.
  2. Comprobar cuáles de esos valores no están en la lista actual de regiones válidas:
    REGIONS.rb
  3. Actualizar las preferencias de región de esos usuarios a una región de nivel superior válida. Por ejemplo, una configuración de preferencia como United States (us_id) debería convertirse en United States.

Sí importa si tu sitio utiliza eventos de calendario de días festivos. Para los usuarios afectados, no se generarán eventos de días festivos hasta que se corrija su Región del calendario.

2 Me gusta

¡Gracias! Aprecio tu ayuda.

Estaba investigando el mismo problema porque tuvimos un aumento en los errores para nuestra instancia interna de Discourse, ¡así que lo arreglé! :wink:

3 Me gusta

¡Maravilloso! Gracias.