# Job exception: Holidays::InvalidRegion

**URL:** https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873
**Category:** Bug
**Tags:** events, fixed
**Created:** [October 7, 2025, 9:37am UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873 "2025-10-07T09:37:07Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [October 7, 2025, 9:37am UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/1 "2025-10-07T09:37:07Z")

</div>

I’m new at Discourse troubleshooting, so I’m not sure where to start on this.

This started a month or so ago. I’m now at 4347 instances of `Job exception: Holidays::InvalidRegion`.

```plaintext
/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

```plaintext
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	

```

We haven’t modified the `discourse-calendar` plugin.

Can someone start to point me in the right direction?

---

<div class="post-metadata">

### Author: ![selase](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/selase/32/270909_2.png) [@selase](https://meta.discourse.org/u/selase)
#### Post date: [October 7, 2025, 1:43pm UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/2 "2025-10-07T13:43:37Z")

</div>

This is likely due to a recent update to the holiday definitions, which may have caused the generated [region list](https://github.com/discourse/discourse/blob/039d3ffd0a33869f1cf390279fd6d5d5ff7b9757/plugins/discourse-calendar/vendor/holidays/lib/generated_definitions/REGIONS.rb) to change without updating users’ existing **Calendar Region** preferences.

The error occurs for users who previously selected one of the now-removed regions as their **Calendar Region**.

You’re seeing that many instances of the exception because the scheduled job that triggers this runs every 10 minutes.

We’ll need to handle this more gracefully, by accounting for holiday definition updates that remove regions from the generated region list.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [October 7, 2025, 2:01pm UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/3 "2025-10-07T14:01:26Z")

</div>

Interesting! I can say that our user base is exceptionally international, so that may track.

Am I correct to assume that 1) there is nothing I can do about this and 2) it doesn’t really matter much? Or do I need to make a bug report?

Thanks

---

<div class="post-metadata">

### Author: ![selase](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/selase/32/270909_2.png) [@selase](https://meta.discourse.org/u/selase)
#### Post date: [October 7, 2025, 3:22pm UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/4 "2025-10-07T15:22:03Z")

</div>

I’ve moved this topic to #Contribute > Bug, so there’s no need to make another report.

Since we haven’t actually removed any major regions [here](https://github.com/discourse/discourse/tree/16a2ff65b2a31d1c08a799a01ce0083e6599a9a3/plugins/discourse-calendar/vendor/holidays/definitions), I suspect the issue is related to state- or territory-level region definitions similar to what you see below for the US:

 ![Screenshot 2025-10-07 at 2.25.09 PM](https://global.discourse-cdn.com/meta/original/4X/1/5/b/15b020cf208b6e924fec910e41282f5fadfeac5a.png)

The change most likely happened between these two commits

- [FEATURE: Update US Holidays (#34558) · discourse/discourse@eabbac1 · GitHub](https://github.com/discourse/discourse/commit/eabbac18cf786541268941191bffbd3070b8ee46)
- [CHORE: Import holiday definition updates. (#34835) · discourse/discourse@1983a44 · GitHub](https://github.com/discourse/discourse/commit/1983a448126b36548c4cb2f60b4eeae554832cc5)

> [@one1](#):
>
> 1. there is nothing I can do about this and

That depends on your comfort level with poking around the internals. You’ll need to:

1. Identify users who have a **Calendar Region** preference set.
2. Check which of those values are not in the current list of valid regions:  
[REGIONS.rb](https://github.com/discourse/discourse/blob/039d3ffd0a33869f1cf390279fd6d5d5ff7b9757/plugins/discourse-calendar/vendor/holidays/lib/generated_definitions/REGIONS.rb#L3)
3. Update those users’ region preferences to a valid top-level region. For example, a preference setting like `United States (us_id)` should become `United States`

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

> [@one1](#):
>
> 1. it doesn’t really matter much?

It does if your site uses holiday calendar events. For affected users, no holiday events will be generated until their **Calendar Region** is fixed.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [October 10, 2025, 7:48am UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/5 "2025-10-10T07:48:00Z")

</div>

Thank you! I appreciate your help.

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [October 17, 2025, 1:52pm UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/6 "2025-10-17T13:52:13Z")

</div>

Was investigating the same issue because we had a surge in errors for our internal discourse instance, so I fixed it 😉

[https://github.com/discourse/discourse/pull/35473](https://github.com/discourse/discourse/pull/35473)

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [October 17, 2025, 2:05pm UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/8 "2025-10-17T14:05:18Z")

</div>

Wonderful! Thank you.

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [October 19, 2025, 10:52am UTC](https://meta.discourse.org/t/job-exception-holidays-invalidregion/384873/9 "2025-10-19T10:52:23Z")

</div>


