From a950fe4d932312143d79a5fd8fd66717320a24a6 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Tue, 14 Apr 2026 10:44:00 -0500 Subject: [PATCH] Back out wgrib2 PNG/AEC flags + drop MrmsFetchWorker from prod MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit that added -DUSE_PNG=ON -DUSE_AEC=ON to the wgrib2 cmake invocation broke the image build: wgrib2 3.6.0 turns find_package(g2c 1.9.0 REQUIRED) on when those flags are enabled, and NCEPLIBS-g2c isn't installed in the wgrib2-builder stage. Revert to the stock wgrib2 cmake config so CI is green again and pull MrmsFetchWorker out of the prod cron instead. Without the PNG decoder the worker can't read MRMS PrecipRate (GRIB2 DRT 5.41) and was logging "packing type 41 not supported" every two minutes. AsosAdjustmentWorker's MRMS path already handles an empty cache gracefully — the ASOS nudge still runs, it just drops the live radar overlay. Re-add MrmsFetchWorker once the Dockerfile installs NCEPLIBS-g2c and rebuilds wgrib2 with PNG/AEC support. --- Dockerfile | 6 +++++- config/runtime.exs | 11 +++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index d457af6d..155f9ded 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,13 +31,17 @@ RUN apt-get update \ WORKDIR /tmp/wgrib2 +## NOTE: wgrib2 3.6.0 enabling -DUSE_PNG / -DUSE_AEC triggers a hard +## find_package(g2c 1.9.0 REQUIRED) for NCEPLIBS-g2c, which isn't +## installed here. Until that's addressed, the stock build stays — +## MRMS PrecipRate (packing type 41) can't be decoded, so +## MrmsFetchWorker is kept out of the prod cron. RUN wget -q --content-disposition "https://github.com/NOAA-EMC/wgrib2/archive/refs/tags/v${WGRIB2_VERSION}.tar.gz" \ -O wgrib2.tar.gz \ && tar xzf wgrib2.tar.gz \ && cd wgrib2-${WGRIB2_VERSION} \ && mkdir build && cd build \ && cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release \ - -DUSE_PNG=ON -DUSE_AEC=ON \ && make -j$(nproc) \ && make install \ && strip /usr/local/bin/wgrib2 diff --git a/config/runtime.exs b/config/runtime.exs index e534bcbc..3abe84d4 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -215,10 +215,13 @@ if config_env() == :prod do # Hourly cron caused overlapping/failed runs because one full sweep # exceeds a 60-minute window. {"5 */3 * * *", Microwaveprop.Workers.PropagationGridWorker}, - # MRMS refreshes the PrecipRate cache that AsosAdjustmentWorker - # overlays onto the score grid. Both must run together — an ASOS - # nudge without a fresh MRMS frame reverts to HRRR-only rain. - {"*/2 * * * *", Microwaveprop.Workers.MrmsFetchWorker}, + # MrmsFetchWorker is intentionally absent: the prod wgrib2 build + # doesn't have the PNG decoder (DRT 5.41) that MRMS PrecipRate + # uses, so every fetch failed with "packing type 41 not + # supported". AsosAdjustmentWorker gracefully handles an empty + # MRMS cache — the rain overlay is a nice-to-have, the ASOS + # nudge still runs on its own. Re-add once the Dockerfile + # installs NCEPLIBS-g2c + rebuilds wgrib2 with -DUSE_PNG=ON. {"*/10 * * * *", Microwaveprop.Workers.AsosAdjustmentWorker}, {"*/15 * * * *", Microwaveprop.Workers.PropagationPruneWorker}, {"*/30 * * * *", Microwaveprop.Workers.BackfillEnqueueWorker,