repeater.send_advert_interval_hours (and the room/direct advert streams) start their cadence at daemon start — the first periodic advert is sent one full interval after boot (_periodic_advert_due: "Streams start their cadence at daemon start"). Any deployment that restarts the daemon more often than the interval (nightly image updates, watchdogs, config pushes) therefore never adverts at all.
Evidence
Our observer node ran with send_advert_interval_hours: 48 and a daily container-update restart. Its last advert on the community analyzer was 4 days old before we noticed; every restart silently reset the 48 h countdown. (The node was healthy the whole time — only discovery suffered: analyzers age nodes out of the map without fresh adverts.)
Suggestion
Either (or both):
persist the per-stream last_sent timestamp (storage is already there) so a restart resumes the cadence instead of resetting it, or
an opt-in advert_on_start (first advert N minutes after boot, then the normal interval).
Workaround today: POST /api/send_advert from a cron/systemd timer, which works but duplicates scheduling the daemon already owns.
## Symptom
`repeater.send_advert_interval_hours` (and the room/direct advert streams) start their cadence at daemon start — the first periodic advert is sent one **full interval after boot** (`_periodic_advert_due`: "Streams start their cadence at daemon start"). Any deployment that restarts the daemon more often than the interval (nightly image updates, watchdogs, config pushes) therefore **never adverts at all**.
## Evidence
Our observer node ran with `send_advert_interval_hours: 48` and a daily container-update restart. Its last advert on the community analyzer was 4 days old before we noticed; every restart silently reset the 48 h countdown. (The node was healthy the whole time — only discovery suffered: analyzers age nodes out of the map without fresh adverts.)
## Suggestion
Either (or both):
- persist the per-stream `last_sent` timestamp (storage is already there) so a restart resumes the cadence instead of resetting it, or
- an opt-in `advert_on_start` (first advert N minutes after boot, then the normal interval).
Workaround today: `POST /api/send_advert` from a cron/systemd timer, which works but duplicates scheduling the daemon already owns.
<!-- github-sync-id:5229355370 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Symptom
repeater.send_advert_interval_hours(and the room/direct advert streams) start their cadence at daemon start — the first periodic advert is sent one full interval after boot (_periodic_advert_due: "Streams start their cadence at daemon start"). Any deployment that restarts the daemon more often than the interval (nightly image updates, watchdogs, config pushes) therefore never adverts at all.Evidence
Our observer node ran with
send_advert_interval_hours: 48and a daily container-update restart. Its last advert on the community analyzer was 4 days old before we noticed; every restart silently reset the 48 h countdown. (The node was healthy the whole time — only discovery suffered: analyzers age nodes out of the map without fresh adverts.)Suggestion
Either (or both):
last_senttimestamp (storage is already there) so a restart resumes the cadence instead of resetting it, oradvert_on_start(first advert N minutes after boot, then the normal interval).Workaround today:
POST /api/send_advertfrom a cron/systemd timer, which works but duplicates scheduling the daemon already owns.