v7.41.4
Harden Redis object cache against alloptions corruption causing 4 GB OOM crashes
thesportingbase.com suffered two outages (2026-05-28, 2026-06-03) where unserialize() read a corrupted length prefix from the alloptions blob (LZ4+igbinary fails to round-trip) and tried to allocate 4,295,229,440 bytes, fatalling every FPM worker that read it. v7.39.10 fixed one trigger; this hardens the cache itself.
- P1 (the real fix): the object-cache drop-in no longer persists the
options/site-optionsgroups to Redis. WP core memoisesalloptionsper request, so the cost is at most one indexedwp_optionsSELECT per worker. Override withdefine('WP_REDIS_PERSIST_OPTIONS', true);. - P2:
get()rejects a non-arrayoptions:alloptions/notoptionsas a cache miss and rebuilds from DB. - P3: auto-flush on serializer/compression drift, detected via a
rawCommandsentinel key (covers manual wp-config edits / extension changes). - P4: admin UI warns on LZ4+igbinary and documents the skipped groups.
Drop-in @version 7.19.0 → 7.41.4.