Upgrading to Varnish 7.6

In general, upgrading from Varnish 7.5 to 7.6 should not require any changes besides the actual upgrade.

The changes mentioned below are considered noteworthy nevertheless:

Noteworthy changes for container workloads

When varnishd runs in a different PID namespace on Linux, typically in a container deployment, VSM_NOPID must be added to the environment of other containers running programs attaching themselves to varnishd’s shared memory. This will otherwise fail liveness checks performed by VSM consumers.

Noteworthy changes when upgrading varnishd

Warning about failed memory locking

The Warning: mlock() of VSM failed message is now emitted when locking of shared memory segments (via mlock(2)) fails. As Varnish performance may be severely impacted if shared memory segments are not resident in RAM, users seeing this message are urged to review the RLIMIT_MEMLOCK resource control as set via ulimit -l or LimitMEMLOCK with systemd(1). This is not new at all, just now the warning has been added to make administrators more aware.

Warning if tmpfs is not used

On Linux (when the new linux jail is used), the Working directory not mounted on tmpfs partition warning is now emitted if the working directory is found to reside on a file system other than tmpfs. While other file systems are supported (and might be the right choice where administrators understand how to avoid blocking disk IO while varnishd is writing to shared memory), tmpfs is the failsafe option to avoid performance issues.

Upgrading VCL

An issue has been addressed in the builtin.vcl where backend responses would fail if they contained a Content-Range header when no range was requested. According to RFC9110, this header should just be ignored, yet some Varnish users might prefer stricter checks. Thus, we decided to change the builtin.vcl only and users hitting this issue are advised to call vcl_beresp_range from custom VCL.

Changes for developers and VMOD authors

The VDP filter API has changed. See VDP filter API changes for details.

The signature of ObjWaitExtend() has changed. See Object API changes for details.

varnishd now creates a worker_tmpdir which can be used by VMODs for temporary files. See Event functions for details.

eof