Job-Ausnahme: Holidays::InvalidRegion

Ich bin neu in der Fehlerbehebung von Discourse und bin mir nicht sicher, wo ich anfangen soll.

Das Problem besteht seit etwa einem Monat. Ich habe jetzt 4347 Instanzen von 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	

Wir haben das Plugin discourse-calendar nicht geändert.

Kann mir jemand einen Hinweis geben, wo ich anfangen soll?

Dies ist wahrscheinlich auf ein kürzliches Update der Feiertagsdefinitionen zurückzuführen, das dazu geführt haben könnte, dass die generierte Regionsliste geändert wurde, ohne die bestehenden Kalenderregion-Einstellungen der Benutzer zu aktualisieren.\n\nDer Fehler tritt bei Benutzern auf, die zuvor eine der nun entfernten Regionen als ihre Kalenderregion ausgewählt hatten.\n\nSie sehen diese Ausnahme viele Male, da der geplante Job, der dies auslöst, alle 10 Minuten ausgeführt wird.\n\nWir müssen dies besser handhaben, indem wir Updates der Feiertagsdefinitionen berücksichtigen, die Regionen aus der generierten Regionsliste entfernen.

1 „Gefällt mir“

Interessant! Ich kann sagen, dass unsere Nutzerbasis außergewöhnlich international ist, das könnte also passen.

Liege ich richtig in der Annahme, dass 1) ich nichts dagegen tun kann und 2) es nicht wirklich wichtig ist? Oder muss ich einen Fehlerbericht erstellen?

Danke

Ich habe dieses Thema nach Bug verschoben, daher ist es nicht notwendig, einen weiteren Bericht zu erstellen.

Da wir keine wichtigen Regionen entfernt haben hier, vermute ich, dass das Problem mit regionalen Definitionen auf Bundesstaats- oder Territoriumsebene zusammenhängt, ähnlich wie Sie unten für die USA sehen:

Screenshot 2025-10-07 at 2.25.09 PM

Die Änderung ist höchstwahrscheinlich zwischen diesen beiden Commits passiert:

Das hängt von Ihrem Komfortlevel ab, wenn Sie sich mit den Interna beschäftigen. Sie müssen:

  1. Benutzer identifizieren, die eine Einstellung für die Kalenderregion haben.
  2. Prüfen, welche dieser Werte nicht in der aktuellen Liste der gültigen Regionen enthalten sind:
    REGIONS.rb
  3. Die Regionseinstellungen dieser Benutzer auf eine gültige übergeordnete Region aktualisieren. Eine Einstellung wie United States (us_id) sollte beispielsweise zu United States werden.

https://github.com/discourse/discourse/blob/039d3ffd0a33869f1cf390279fd6d5d5ff7b9757/plugins/discourse-calendar/vendor/holidays/lib/generated_definitions/REGIONS.rb#L3

Das ist wichtig, wenn Ihre Website Feiertagskalenderereignisse verwendet. Für betroffene Benutzer werden keine Feiertagsereignisse generiert, bis ihre Kalenderregion korrigiert ist.

2 „Gefällt mir“

Danke! Ich weiß Ihre Hilfe zu schätzen.

Ich habe dasselbe Problem untersucht, da wir einen Anstieg der Fehler für unsere interne Discourse-Instanz hatten, also habe ich es behoben :wink:

3 „Gefällt mir“

Wunderbar! Danke.