작업 예외: Holidays::InvalidRegion

디스코urs 문제 해결에 대해 초보라서 어디서부터 시작해야 할지 잘 모르겠습니다.

이 문제는 한 달쯤 전에 시작되었습니다. 지금은 Job exception: Holidays::InvalidRegion 오류가 4,347건이나 발생했습니다.

/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	

discourse-calendar 플러그인은 수정하지 않았습니다.

혹시 방향을 잡아줄 수 있는 분이 있을까요?

이 문제는 휴일 정의에 대한 최근 업데이트로 인해 발생했을 가능성이 높으며, 이로 인해 생성된 지역 목록이 변경되었음에도 불구하고 사용자의 기존 캘린더 지역 설정이 업데이트되지 않았을 수 있습니다.

이 오류는 이전에 이제 제거된 지역 중 하나를 캘린더 지역으로 선택했던 사용자에게 발생합니다.

이 예외가 10분마다 실행되는 예약 작업에 의해 트리거되기 때문에, 해당 예외의 인스턴스가 많이 표시되는 것을 확인할 수 있습니다.

생성된 지역 목록에서 지역을 제거하는 휴일 정의 업데이트를 고려하여 이 문제를 더 우아하게 처리해야 합니다.

1개의 좋아요

흥미롭네요! 저희 사용자층이 매우 국제적이라 그런 추세일 수도 있겠어요.

제가 이해한 대로 1) 이 문제에 대해 제가 할 수 있는 일이 없고, 2) 크게 문제가 되지 않는다는 것 맞나요? 아니면 버그 보고를 해야 하나요?

감사합니다

이 주제를 #contribute:bug로 이동했으므로 별도의 보고는 필요하지 않습니다.

여기에서 주요 지역을 실제로 제거한 것은 아니므로, 아래 미국에서 볼 수 있는 것과 유사한 주 또는 영토 수준의 지역 정의와 관련이 있을 것으로 추정됩니다:

변경 사항은 가장 가능성이 높게 다음 두 커밋 사이에 발생했을 것입니다.

이는 내부 구조를 직접 다뤄보는 데 대한 본인의 편안함에 따라 달라집니다. 다음을 수행해야 합니다:

  1. 캘린더 지역 설정이 지정된 사용자를 식별합니다.
  2. 그 값 중 현재 유효한 지역 목록에 없는 것이 있는지 확인합니다:
    REGIONS.rb
  3. 해당 사용자의 지역 설정을 유효한 최상위 지역으로 업데이트합니다. 예를 들어, United States (us_id)와 같은 설정은 United States가 되어야 합니다.

사이트가 휴일 캘린더 이벤트를 사용하는 경우 중요합니다. 영향을 받는 사용자의 경우 캘린더 지역이 수정될 때까지 휴일 이벤트가 생성되지 않습니다.

2개의 좋아요

감사합니다! 도움 주셔서 감사합니다.

내부 Discourse 인스턴스에서 오류가 급증하여 같은 문제를 조사하고 있었고, 그래서 수정했습니다 :wink:

3개의 좋아요

멋져요! 감사합니다.