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 Contribute > Bug verschoben, daher besteht keine Notwendigkeit, einen weiteren Bericht zu erstellen.

Da wir hier hier keine größeren Regionen entfernt haben, vermute ich, dass das Problem mit regionsspezifischen oder bundesstaatenspezifischen Regionen-Definitionen zusammenhängt, ähnlich wie unten für die USA dargestellt:

Die Änderung hat höchstwahrscheinlich zwischen diesen beiden Commits stattgefunden:

Das hängt von deiner Komfortzone im Umgang mit den Interna ab. Du musst:

  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 Regionen-Einstellungen dieser Benutzer auf eine gültige Region der obersten Ebene aktualisieren. Zum Beispiel sollte eine Einstellung wie United States (us_id) zu United States werden.

Doch, wenn deine Seite Feiertagskalenderereignisse verwendet. Bei betroffenen Benutzern 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.