Commit Graph
318 Commits
Author SHA1 Message Date
Enot (ded) Skelly 99d7eb0bab feat: add node stale/delete config
closes: #93
2026-07-24 13:09:51 -07:00
Enot (ded) Skelly 3f2506fc8b feat: add geojson for iatas
closes #66
2026-07-24 12:59:48 -07:00
MrAlders0n cbde3d02da perf(stats): matview-back top talkers and advertisers 2026-07-24 12:07:05 -07:00
MrAlders0n bc3a375816 perf(stats): bucket payload & observer matviews by hour for windowed queries
The payload-breakdown and top-observers matviews stored a single 7-day
total per group, so the 24h/7d/30d selector did nothing: payload ignored
the window entirely (the store discarded `since`) and top-observers only
varied which rows cleared the last_heard cutoff, never the counts.

Bucket both views by hour over a 30-day horizon and sum the buckets in
range, mirroring mv_hourly_iata_stats. The stats endpoints now honour the
requested window while still reading a small precomputed table.
2026-07-24 12:07:05 -07:00
MrAlders0n b93ce7aba6 serve top observers from a matview instead of scanning per request 2026-07-24 12:07:05 -07:00
MrAlders0n d8ff7d0542 track payload_type on observations and serve the breakdown from a matview 2026-07-24 12:07:05 -07:00
MrAlders0n 63c0b9779d perf(routes): index known_routes(last_seen)
The routes list orders by last_seen with no index, so every page
seq-scanned and sorted ~150k rows. Same fix as the packets list got
in 008.
2026-07-24 12:07:05 -07:00
MrAlders0n 42edcdeb7b perf(scopes): stop cross-joining packets in scope stats
GetScopeStats left-joined packets, observer_scopes and nodes at once,
multiplying rows into the millions before COUNT(DISTINCT) deduped them
(~10s per call). Count each table on its own and index packets(scope_id).
2026-07-24 12:07:05 -07:00
MrAlders0n a84112f7fb fix(traces): review fixes for trace_iatas
Refresh last_heard on duplicate observations too, capped at hourly, so
steady traffic can't age a trace out of the filter (dedup key has no
heard_at). Drop the unused last_heard index column so upserts stay HOT,
and share one retention cutoff across the cleanup deletes.
2026-07-24 12:07:05 -07:00
MrAlders0n 457747b353 perf(traces): track trace activity per IATA in its own table
The trace list joined every trace packet to ~50M observations to apply
the IATA filter; the parallel hash join overran docker's 64MB /dev/shm
and the filtered list errored. Keep a small trace_iatas table at ingest
(like channel_iatas) and group packets by tag instead. Filtered stats
are now per tag rather than per matching packet.
2026-07-24 12:07:05 -07:00
MrAlders0n ba0e85c44e fix(channels): review fixes for channel_iatas
Refresh last_heard on duplicate observations too, capped at hourly, so
steady traffic can't age a channel out of the filter while its packets
stay retained (dedup key has no heard_at). Guard the seed join against
the docker /dev/shm cap like the trace one, and drop the unused
last_heard index column so the upserts stay HOT.
2026-07-24 12:07:05 -07:00
MrAlders0n dff9c6cf00 perf(channels): track channel activity per IATA in its own table
The IATA filter ran a correlated EXISTS over packets/observations with
ILIKE, which skipped the iata index and took ~7s live. Keep a small
channel_iatas table at ingest (like node_iatas) and filter against it.
Also honor the iatas= param so multi-site regions stop getting the
global list. Filter now ages out with packet retention rather than
matching any retained packet.
2026-07-24 12:07:05 -07:00
Enot (ded) Skelly b33ebc007b feat: add plural value filter params
closes #76
2026-07-23 14:26:16 -07:00
Enot (ded) Skelly 8e2798612b feat: add clock drift tracking
closes #71
2026-07-23 13:34:41 -07:00
Enot (ded) Skelly b38663d3a1 feat: add stats for top advertiser and talkers
closes #75
closes #74
2026-07-23 10:41:16 -07:00
Enot (ded) Skelly 0ca28cc6a8 feat: node prefix search
pubkeyPrefix takes any even length prefix string case-insensitive
and returns all matches
2026-07-23 10:14:47 -07:00
Enot (ded) Skelly d8c622316d fix: radio frequency precision
closes #77
2026-07-23 09:58:43 -07:00
Enot (ded) Skelly 3d4f1a266a forgot swagger 2026-07-23 09:56:17 -07:00
Enot (ded) Skelly d7fe41c4a2 fix: missing db test stub 2026-07-23 09:54:36 -07:00
Enot (ded) Skelly f07edf9fb6 feat: include source and destination in path data where available
realted to #85
2026-07-23 09:44:27 -07:00
Enot (ded) Skelly 7a58a07bbd fix: trace packet paths
closes #86
2026-07-23 09:20:00 -07:00
Enot (ded) Skelly 8b5e1853b1 bump test 2026-07-23 08:53:20 -07:00
Enot (ded) Skelly ac67308f21 fix: dont log empty status from observers
closes #79
2026-07-23 08:43:26 -07:00
MrAlders0n 30772da2c5 perf(packets): drive IATA-filtered list from the observation index
Quiet sites probed hundreds of thousands of packets to fill a page.
Walk idx_observations_iata_heard per requested site and dedup instead.
Filtered lists now order by site-local recency; the cursor follows.
2026-07-20 09:07:05 -07:00
MrAlders0n 508337b8ca perf(db): pass IATA filters as bpchar[] instead of CSV
text[] from string_to_array can't match the CHAR(3) indexes and hides
the values from the planner. Handlers already have a slice; stop
joining to CSV in the store layer and pass a typed array everywhere.
2026-07-20 09:07:05 -07:00
MrAlders0n b8665ebd66 perf(db): index packets(last_heard_at)
The packet list sorts by last_heard_at, so every page was a seq scan
plus sort over all packets. Cheap to maintain now that presence writes
are coalesced.
2026-07-20 09:07:05 -07:00
MrAlders0n 0afba79b02 perf(paths): split path hash resolution by prefix width
the CASE predicate forced postgres to replan every call; per-width queries reuse a cached plan on the (iata, prefix_n) indexes
2026-07-20 09:01:51 -07:00
MrAlders0n 70c8a87323 build: bump Go to 1.26.5 for GO-2026-5856 crypto/tls fix 2026-07-20 08:55:18 -07:00
MrAlders0n d113036414 feat(beacon): route ingest through the presence coalescer 2026-07-20 08:55:18 -07:00
MrAlders0n 41a3aa4711 feat(config): presence flush interval and packet ttl settings 2026-07-20 08:55:18 -07:00
MrAlders0n 5804524f0e feat(db): add batched presence touch queries
single-statement flush targets for coalesced last_seen/last_heard_at bumps
2026-07-20 08:55:18 -07:00
MrAlders0n 2f12480ec4 feat(presence): coalesce presence writes in memory
batches observer/packet last-seen bumps and flushes on an interval instead of one tx per observation
2026-07-20 08:55:18 -07:00
Enot (ded) Skelly 0ca3c95c9e fix(hub): bug in subscribe logic and a little race condition 2026-07-02 14:19:03 -07:00
Enot (ded) Skelly 975f2f3656 feat(ws): make resolved paths a config toggle in session 2026-07-02 13:54:41 -07:00
Enot (ded) Skelly ca65ed1d9d fix(ingest): add more possible heard at timestamp formats 2026-07-02 13:09:26 -07:00
Enot (ded) Skelly a14a0ac658 feat(paths): included resolved path in ws observation events
changes to shared helper for resolve paths
2026-07-02 09:39:10 -07:00
Enot (ded) Skelly 4e2ee62bad feat(nodes): add ?neighbors to list nodes
inlcudes neighbor IDs in node details list
2026-07-02 09:12:23 -07:00
Enot (ded) Skelly ee2fac1b20 fix(ingest): verify adverts 2026-07-02 08:27:36 -07:00
Enot (ded) Skelly 420a43172b fix(ingest): dedupe unknown channel hashes 2026-07-02 08:08:54 -07:00
Enot (ded) Skelly 4860921e90 chore: version bump v1.5.4 v1.5.4 2026-06-24 08:04:54 -07:00
Enot (ded) Skelly 25316a3474 fix(observations): drop heardAt from packet_observation unique constraint
this was causing duplicates and each obersver heard a given
packet hash or it didn't, there are not more observations of
the same hash from one observer
2026-06-24 08:04:04 -07:00
Enot (ded) Skelly 86b0549c75 chore: version bump v1.5.3 v1.5.3 2026-06-20 10:33:54 -07:00
Enot (ded) Skelly 3d43600632 fix: forgot swagger v1.5.2 2026-06-20 10:28:51 -07:00
Enot (ded) Skelly 82ede1e124 chore: version bump v1.5.1 2026-06-20 10:26:13 -07:00
MrAlders0n 2618f7b233 fix: github workflow, post images publically 2026-06-20 13:18:39 -04:00
dependabot[bot] 08ccf220cf chore(deps): bump github.com/go-chi/chi/v5 from 5.2.2 to 5.2.4
Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.2.2 to 5.2.4.
- [Release notes](https://github.com/go-chi/chi/releases)
- [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-chi/chi/compare/v5.2.2...v5.2.4)

---
updated-dependencies:
- dependency-name: github.com/go-chi/chi/v5
  dependency-version: 5.2.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-20 10:14:08 -07:00
Enot (ded) Skelly 556ae066fb docs(neighbors): forgot neighbors snr in swagger 2026-06-16 16:09:56 -07:00
Enot (ded) Skelly 7aa5aa3d3a feat(neighbors): grab neighbors for nodes in traces w/ snr 2026-06-16 16:07:35 -07:00
Enot (ded) Skelly f6f94acad8 feat(neighbors): add zero hop advert neighbors for observers w/ snr 2026-06-16 14:47:30 -07:00
Enot (ded) Skelly fd24a71143 feat(neighbors): add observer neighbor snr on discovery response 2026-06-16 14:26:33 -07:00