Changes in Vinyl Cache 9.0¶
For information about updating your current Varnish deployment to the new version, see Upgrading to Vinyl Cache 9.0.
A more detailed and technical account of changes in Vinyl Cache, with links to issues that have been fixed and pull requests that have been merged, may be found in the change log.
vinyld¶
Other changes in vinyld¶
Varnish Extensions (VEXTs) can now be loaded by specifying their basename as
-E<name>. When <name> is not a path (does not contain /), a search
in vmod_path is conducted for libvmod_<name>.so.
Receiving SIGTERM in the management process is no longer logged as an
error, but rather as an INFO log record.
For requests having no request body, the Content-Length header will now
only be unset when the request method is one of: GET, HEAD, DELETE,
OPTIONS, TRACE. For other methods, a Content-Length header with
value 0 will be set.
A conditional GET for object revalidation is now demoted to a regular fetch if the stale object being revalidated gets invalidated (e.g. by a ban or purge) while the backend request is in progress.
Changes to VCL¶
VCL variables¶
The VCL variable beresp.storage_hint has been removed.
The req.ttl variable has been renamed to req.max_age for clarity.
req.ttl is retained as an alias but is now deprecated and will be removed
in a future version.
A new bereq.retry_connect variable has been added to control whether
vinyld will make a second attempt to connect to the backend if a first
connection reuse attempt failed. This can be useful to prevent undesired retries
of potentially non-idempotent requests. Setting to false means no retries
will be made. This parameter only affects automatic retries triggered by
connection reuse failures and does not affect VCL retries.
Other changes to VCL¶
A new unused VCL keyword has been added to mark symbols as intentionally
unused. This prevents errors about unused symbols during VCL compilation and
provides finer grained control compared to the -err_unref VCC feature,
which disables the error globally for all symbols.
VCL subroutine calls (VCL_SUB) are now supported from vcl_init and
vcl_fini.
The ACL’s +fold feature can now be followed with an optional (-report)
to suppress folding-related warnings during VCL compilation.
VMODs¶
A new vmod_math has been added, providing mathematical functions.
vmod_std has a new .rfc_ttl() function to re-calculate the object
timers (beresp.ttl, beresp.grace and beresp.keep) based on the
current state of beresp as if it had been processed by core code before
vcl_backend_response was called. This does not change
beresp.uncacheable.
vinyllog¶
The BackendOpen VSL tag now also logs connection age and connection reuses
when relevant. These can be useful when troubleshooting idle timeout issues
from the backend.
The response reason when a stale object is not a valid object for refresh has been made more descriptive to make it easier to differentiate between failure cases in the logs.
The session close reason descriptions REM_CLOSE and REQ_CLOSE have been
generalized from “Client Closed” / “Client requested close” to “Peer Closed” /
“Peer requested close” since they apply to both client and backend connections.
vinylstat¶
The workspace overflow counters (ws_backend_overflow, ws_client_overflow,
ws_thread_overflow, ws_session_overflow) are now shown by default
instead of requiring the diag level.