Commit Graph
422 Commits
Author SHA1 Message Date
MrAlders0n 8a488fde95 fix(meshmapper): retry failed catalogue fetches sooner
A transient failure pushed the next attempt out by the full refresh interval. Failures now retry in five minutes, with a server Retry-After still honoured as a ceiling.
2026-09-30 10:31:08 -04:00
MrAlders0n 9ce4e8d10c fix(cache): invalidate derived scope keys on catalogue import 2026-09-30 10:31:08 -04:00
MrAlders0n 3b548900a0 fix(api): tolerate client clock skew and drop the dead route evidence cursor 2026-09-30 10:31:08 -04:00
MrAlders0n 1c2841a3c9 perf(db): compute route ambiguity once per reconfirm run
The four-way GROUP BY over node_short_ids ran once per 1000-route batch, up to 750 times a run, and could eat the whole 5s batch budget. The task now fetches the set once and passes it to each batch.
2026-09-30 10:31:08 -04:00
MrAlders0n ab27334f15 fix(backup): report trailing archive data as corruption 2026-09-30 10:31:08 -04:00
MrAlders0n e1b78b6458 fix(profiling): offset periodic captures and harden the recorder
Periodic ticks now start five minutes off the task tickers so the hourly reconfirm trigger stops colliding with the cooldown, any capture clears a deferred periodic, subdirectories no longer stop the recorder, and the metadata sidecar is published before the profile.
2026-09-30 10:31:08 -04:00
MrAlders0n e7061f5e10 fix(api): log the cause of account 500s 2026-09-30 10:31:08 -04:00
MrAlders0n 44b9a0f6d8 ci: run packet summary and reconfirm tests, read analytics on 039 views 2026-09-30 10:31:08 -04:00
MrAlders0n c952afdd29 fix(ingest): let paho auto-ack MQTT deliveries
Sessions are clean and client IDs random, so deferring acks never bought redelivery; it only capped delivery at the broker's inflight window and pushed backlog into the broker queue, where drops are silent.
2026-09-30 10:31:08 -04:00
MrAlders0n 6852074180 fix(ingest): record hearing paths right after the insert
MarkSent ran after the side effects, so a broker copy on another worker could win it and be streamed as a repeat of the first hearing. It now runs before any further DB work, unconditionally so the set is warm before anyone opts in, and never for TRACE, whose path bytes are per-hop SNR.
2026-09-30 10:31:08 -04:00
MrAlders0n d733975165 fix(backup): abort exports on shutdown and sweep stale staging dirs
srv.Shutdown never cancelled the request context, so a SIGTERM mid-export left the plaintext dump and pg_service.conf in TMPDIR. The handler now derives its context from the app context and the router removes staging dirs older than 20 minutes at startup.
2026-09-30 10:31:08 -04:00
MrAlders0n 5cf060114a feat: add bounded CPU profiling (#182)
* feat: add bounded CPU profiling

* fix(profiling): defer cooldown-skipped samples and configure triggers
2026-09-30 07:52:59 -04:00
MrAlders0n 32644ae09f chore: set MrAlders0n as default code owner 2026-09-30 07:48:21 -04:00
MrAlders0n fd57c8b00c fix(ingest): accept space-separated and colonless-offset timestamps 2026-09-30 07:48:21 -04:00
MrAlders0n c9b7010082 chore: regenerate sqlc and document saved-route evidence 2026-09-30 07:48:21 -04:00
n30nex 89a376c291 fix(ingest): accept RFC3339 timestamp offsets and precision 2026-09-30 07:33:53 -04:00
n30nex 97cc22a5a0 fix: address maintainer review for #166 2026-09-30 07:33:45 -04:00
n30nex 3b806c1c39 fix(ingest): resolve advert endpoints after node updates 2026-09-30 07:33:45 -04:00
n30nex 6bf58acb80 fix: address maintainer review for #176 2026-09-30 07:19:03 -04:00
n30nex 8f6032877b test(channels): preserve the existing catch-up response shape 2026-09-30 07:19:03 -04:00
n30nex 07335e6625 test(channels): use the documented catch-up cursor parameter 2026-09-30 07:19:03 -04:00
n30nex 7d3a3e289e test(channels): verify scope metadata through all HTTP message routes 2026-09-30 07:19:03 -04:00
n30nex abb6a3b9cf test(channels): give stored packet fixtures explicit receive times 2026-09-30 07:19:03 -04:00
n30nex 2abed6c195 feat(channels): expose recorded packet scope in message delivery 2026-09-30 07:19:03 -04:00
n30nex 7e01abf5a0 docs(api): refresh generated contract after stack update 2026-09-30 07:19:03 -04:00
n30nex 83cbaff1cf fix: address release review follow-ups for #174 2026-09-30 07:19:03 -04:00
n30nex 574bba4e13 fix: address maintainer review for #174 2026-09-30 07:19:03 -04:00
n30nex 986a6c0788 test(scopes): synchronize the timeout fixture state 2026-09-30 07:19:03 -04:00
n30nex f6e628c501 test(scopes): run race checks on the Linux CI runner 2026-09-30 07:19:03 -04:00
n30nex c18e059e0d feat(scopes): import cached regional MeshMapper catalogues 2026-09-30 07:19:03 -04:00
n30nex 831148ff5f fix: address release review follow-ups for #172 2026-09-30 07:19:03 -04:00
n30nex 85c9123e9a fix: address maintainer review for #172 2026-09-30 07:19:03 -04:00
n30nex cd20bc5c34 test(routes): cover server-anchored evidence windows 2026-09-30 07:19:03 -04:00
n30nex c448a04ea0 feat(routes): add bounded retained observation evidence 2026-09-30 07:19:03 -04:00
n30nex b8a8188fbc test: mirror coalesced observer payload types 2026-09-30 07:19:03 -04:00
n30nex de42595de0 style: trim regenerated sqlc configuration 2026-09-30 07:19:03 -04:00
n30nex 551f061f9c docs(api): refresh generated contract after stack update 2026-09-30 07:19:02 -04:00
n30nex dea5395783 fix: address release review follow-ups for #169 2026-09-30 07:19:02 -04:00
n30nex d3c330e8fb fix: address maintainer review for #169 2026-09-30 07:19:02 -04:00
n30nex 5977e42c5c test(observers): exercise non-finite raw and archived samples 2026-09-30 07:19:02 -04:00
n30nex 47342abc99 fix(observers): keep non-finite signal samples out of JSON 2026-09-30 07:19:02 -04:00
n30nex 5fbba24a4a fix(observers): separate packet metrics from presence updates 2026-09-30 07:19:02 -04:00
n30nex fd7c6b3eb7 feat(db): retain 30-day analytics independently of packet expiry (#167) 2026-09-30 07:16:27 -04:00
MrAlders0n db30c9b573 fix(db): batch route reconfirmation to avoid ingest stalls (#180) 2026-09-28 08:41:48 -04:00
MrAlders0n 1887fccb8d perf(ingest): reduce database work and buffer MQTT bursts (#179) 2026-09-27 22:56:03 -04:00
MrAlders0n 876d99704f feat(ws): opt-in includeRepeats streams later hearings over new paths (#178)
Duplicate observations are dropped before the hub today, so a live map only sees each packet's first hearing per observer. Clients that configure includeRepeats also get later hearings whose path is new; nothing is stored, repeats skip the count query, and they are dropped first when the broadcast channel is half full.
2026-09-27 20:38:49 -04:00
MrAlders0n 90f9b50614 feat(ws): allow subdomain wildcards in allowed origins (#177) 2026-09-27 20:03:49 -04:00
MrAlders0n dec643a2ad feat(ws): opt-in allowed origins and observer key (#170) 2026-09-27 11:41:11 -04:00
MrAlders0n 91b4b457b5 perf(db): resolve packet endpoints at read time (#163)
Storing a full candidate snapshot on every observation was the wrong call. The same node lists got copied thousands of times, about 22 GB on prod. Resolve endpoints live like path hops and drop the column.
2026-09-25 13:59:07 -04:00
MrAlders0n 3dee2098ba perf(db): batch retention deletes and tune autovacuum (#162)
Default packets.retention drops to 7 days.
2026-09-25 11:38:04 -04:00