discourse/spec
Alan Guo Xiang Tan 7e412cc067
FIX: Demon::EmailSync heartbeat check not consistent
In `Demon::EmailSync#after_fork`, we had the following lines of code:

```
loop do
  break if Discourse.redis.set(HEARTBEAT_KEY, Time.now.to_i, ex: HEARTBEAT_INTERVAL, nx:
true)
  sleep HEARTBEAT_INTERVAL
end
```

What this means is that if the key already exists in Redis, we will
sleep for `Demon::EmailSync::HEARTBEAT_INTERVAL` seconds which has been
set to 60 seconds. This is highly problematic because the expiry of the
Redis key uses the same interval. That means that by the time we break
out of the loop, the Redis key could have expired. The key expiring
is an indication the process is no longer alive leading to the heartbeat
test failing and causing the process to restart for no good reason.

The solution to resolve this problem is to just remove those lines as I
cannot figure out why those lines would even be necessary. There is no
reason why we would need to sleep for a given interval before booting up
the process.

This commit also updates the Redis key, which is used to store the
heartbeat timestamp, to include the process's hostname and pid. We
should not be restarting all `Demon::EmailSync` processes across
different hosts just because one process on a particular host failed.
2025-01-10 14:14:06 +08:00
..
fabricators FEATURE: Improve wizard quality and rearrange steps (#30055) 2025-01-02 09:28:23 +10:00
fixtures FIX: Allow attachments to be opened in a new tab instead of downloading them (#30535) 2025-01-07 10:32:32 +08:00
generator DEV: Silence the output of migration specs (#26365) 2024-03-26 11:32:44 +01:00
helpers UX: add color-scheme meta tag to _head (#30245) 2024-12-13 08:10:08 -03:00
import_export DEV: Allow fab! without block (#24314) 2023-11-09 16:47:59 -06:00
initializers DEV: Allow fab! without block (#24314) 2023-11-09 16:47:59 -06:00
integration SECURITY: When enabled only allow Discourse Connect logins 2024-12-19 13:13:23 -03:00
integrity DEV: Add spec to ensure app works with multiple tagged loggers 2024-08-13 18:10:03 +02:00
jobs DEV: Allow export user archive (job) to be requested and sent to an admin (#30543) 2025-01-03 14:27:10 +08:00
lib FIX: Demon::EmailSync heartbeat check not consistent 2025-01-10 14:14:06 +08:00
mailers FEATURE: add support for One-Click unsubscribe (RFC 8058) 2024-12-31 15:28:59 +01:00
migrations DEV: update fa6 icons to drop fa prefix (#30100) 2024-12-05 10:00:41 +08:00
models FEATURE: Add a onebox_locale site setting. (#30655) 2025-01-09 14:11:37 +11:00
multisite FIX: do not memoize score types (#30657) 2025-01-09 13:20:59 +11:00
requests DEV: Make silence_reason and can_be_deleted optional (#30647) 2025-01-08 12:43:39 -07:00
script/import_scripts DEV: Catch missing translations during test runs (#26258) 2024-05-24 22:15:53 +08:00
serializers FIX: Allow signups when full names are disabled (#30551) 2025-01-04 15:13:44 +03:00
services FEATURE: Add option to hide full name input at signup (#30471) 2024-12-30 22:26:20 +03:00
support DEV: Remove invalid parsing options (#30545) 2025-01-03 13:17:49 +01:00
system FIX: Add back missing API key 'peek' step (#30683) 2025-01-10 10:21:22 +08:00
tasks DEV: Fix constant redefinition warnings when running specs (#29837) 2024-11-20 15:17:36 +11:00
views FEATURE: Simplify crawler content for non-canonical post URLs (#26324) 2024-03-26 15:18:46 +00:00
rails_helper.rb DEV: Fix flaky deprecated setting specs (#30550) 2025-01-04 12:55:22 +01:00
regenerate_swagger_docs
swagger_helper.rb DEV: Bump rswag-specs from 2.11.0 to 2.13.0 (#24654) 2023-12-07 08:16:47 +08:00