Skip to content

v0.42.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 02:33
· 76 commits to main since this release
e00e365

Critical hotfix for the 0.42.0 object cache

Important

If you enabled the object cache on agent 0.42.0, update to this version before re-enabling it. If a site was already affected (fatal errors on every request after enabling): delete wp-content/object-cache.php, restart PHP or the container (required to release leaked file descriptors), update the agent, then re-enable.

[0.42.1] - 2026-06-12

Fixed

  • Object cache: a boot recursion in drop-in 2.1.0 could exhaust the PHP worker's file descriptors and take the site down. The boot-time failback safety check ran before the cache global was assigned; it called into the WordPress options API, which re-entered the boot path and opened one persistent Redis connection per recursion level until the worker hit its descriptor limit. Affected sites returned a fatal on every request and kept broken workers until the web server was restarted. The check now runs only after the cache global is assigned, and boot is guarded against re-entry, with a safe in-memory fallback serving any cache call that arrives while boot is still running.
  • Sockets are now closed explicitly on failed or abandoned connection attempts, including when boot falls back to the in-memory cache.
  • Unavailable serializer or compression codecs no longer abort the connection. The engine falls back to the PHP serializer or no compression, reports the effective codec to the dashboard, and the integrity check compares effective values so stored data is never read with the wrong codec.
  • AUTH and SELECT results are verified, so a half-established connection can no longer be reported as connected.

Added

  • A per-request connection attempt budget (12) that converts any future connection loop into a single degraded request instead of an outage.
  • A persisted reconnect cool-down (15 seconds doubling to 5 minutes) so a down Redis is not re-dialed on every request; the dashboard shows the cool-down state, and a clock step backward fails open rather than suppressing the cache.
  • Connection retry bounds enforced at both the agent and the control plane (retry count 0 to 10, retry interval 1 to 5000 ms).
  • New regression nets: an artifact-level boot test that fails on any recursive boot, plus end-to-end stages for descriptor counting and codec fallback.

Control plane and dashboard

  • Object cache config saves validate retry bounds before persisting.
  • Readable labels for the new degradation causes (reconnect cool-down, connection attempt limit) and for previously raw cause strings.

Agent 0.42.1 with drop-in 2.1.1; existing installs refresh automatically after the agent updates. No new migrations.