Hot pods were restart-looping every ~25 minutes on liveness probe timeouts. Root cause: ScoreCacheReconciler mirrored every .prop file from NFS into ETS, including 7 days of GEFS Day 2-7 forecasts. With 23 bands × 43 valid_times × ~2 MB per grid = 1.95 GB in the propagation_score_cache table alone; GC sweeps starved the scheduler enough that /live dropped its 3 s budget. The /map UI only ever requests the [now-1h, now+18h] window. Share that bound as Propagation.hot_cache_window/0 and apply it in the reconciler's disk-scan path plus NotifyListener's post-warm prune. Long-horizon GEFS files stay on disk and are still served via the lazy read_from_disk_and_cache path when requested directly. Adds ScoreCache.prune_outside_window/2 (inclusive bounds) and updates the reconciler tests to use relative-to-now timestamps since hardcoded fixture dates now drift out of window. |
||
|---|---|---|
| .. | ||
| microwaveprop | ||
| microwaveprop_web | ||
| mix/tasks | ||
| microwaveprop.ex | ||
| microwaveprop_web.ex | ||