prop/lib/microwaveprop/propagation
Graham McIntire 4f82bd691e
perf(prop): cap ScoreCache LRU + drop eager warmers to fix hot-pod OOMs
ScoreCache held 437 entries × ~1.94 MiB each (~850 MiB per pod) of
{band_mhz, valid_time} grids — data already on NFS as compact .prop
files. NotifyListener and ScoreCacheReconciler both eagerly materialised
every band into ETS on each Rust completion / 60s sweep, so 5 hot
replicas wasted ~4.2 GiB of redundant cache and OOMed at 6 GiB.

Bound the cache to 32 entries with eviction by oldest valid_time, drop
the eager warm loops, and let LiveView callers lazy-fill via the
existing ScoresFile read path. ScoreCacheReconciler had no remaining
purpose and is deleted; runbook + prom_ex counters updated to match.

Steady-state cache footprint ~60 MiB per pod instead of ~850 MiB.
2026-04-24 18:49:36 -05:00
..
band_config.ex feat(propagation): per-band weight calibration from full-corpus correlation 2026-04-18 10:19:26 -05:00
common_volume.ex feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
duct.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00
eme.ex feat(eme): add /eme Earth-Moon-Earth calculator 2026-04-23 16:18:20 -05:00
freshness_monitor.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
grid.ex fix(enrichment): mark OCONUS contacts hrrr_status :unavailable 2026-04-23 14:19:23 -05:00
grid_task_enqueuer.ex fix(grid-tasks): reclaim orphan running rows on hourly seed 2026-04-23 12:57:39 -05:00
hf_muf.ex HfMuf physics: distance-adjusted MUF from GIRO MUFD(3000) 2026-04-15 14:59:39 -05:00
inversion.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
mechanism_classifier.ex feat(propagation): per-contact mechanism classification 2026-04-18 10:42:08 -05:00
moon_ephemeris.ex feat(propagation): per-contact mechanism classification 2026-04-18 10:42:08 -05:00
notify_listener.ex perf(prop): cap ScoreCache LRU + drop eager warmers to fix hot-pod OOMs 2026-04-24 18:49:36 -05:00
pipeline_status.ex feat(map): shareable URL params for view/band/time 2026-04-19 08:53:07 -05:00
profiles_file.ex fix: three more Rust/Elixir contract drift bugs on /map and /weather 2026-04-24 14:04:02 -05:00
rain_scatter.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
rain_scatter_classifier.ex feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
recalibrator.ex perf(concurrency): partition Task.Supervisor to remove bottleneck on heavy async_stream paths 2026-04-21 14:20:29 -05:00
region.ex Phase 7: Regionalized seasonal scoring 2026-04-10 08:39:01 -05:00
run_timing.ex fix(dialyzer): actually fix LiveTable warnings instead of hiding them 2026-04-21 12:58:10 -05:00
score_cache.ex perf(prop): cap ScoreCache LRU + drop eager warmers to fix hot-pod OOMs 2026-04-24 18:49:36 -05:00
scorer.ex fix(logging): suppress /metrics logs and harden scorer hot path 2026-04-21 10:44:25 -05:00
scores_file.ex test: expand coverage and refactor to idiomatic style 2026-04-23 13:28:42 -05:00
sporadic_e.ex Add 50/144/222 MHz bands, rename 440→432 2026-04-16 12:36:10 -05:00