Upgrading to Varnish 7.5¶
Logs¶
The optional reason field of BackendClose
records changed from a
description (for example “Receive timeout”) to a reason tag (for example
RX_TIMEOUT
). This will break VSL queries based on the reason field.
Using a tag should however make queries more reliable:
# before
varnishlog -q 'BackendClose ~ "Receive timeout"'
# after
varnishlog -q 'BackendClose[4] eq RX_TIMEOUT'
Such queries would no longer break when a description is changed.
Timeouts¶
The value zero for timeouts could mean either timing out immediately, never timing out, or not having a value and falling back to another. The semantic changed so zero always means non-blocking, timing out either immediately after checking whether progress is possible, or after a millisecond in parts where this can’t practically be done in a non-blocking fashion.
In order to disable a timeout, that is to say never time out, the value
INFINITY
is used (or tested with isinf()
).
In the places where a timeout setting may fall back to another value, like
VCL variables falling back to parameters, NAN
is used to convey the lack
of timeout setting.
VCL¶
All the timeouts backed by parameters can now be unset, meaning that setting the value zero no longer falls back to parameters.
Parameters¶
All the timeout parameters that can be disabled are now documented with the
timeout
flag, meaning that they can take the special value never
for
that purpose:
varnishadm param.set pipe_timeout never
The parameters idle_send_timeout
and timeout_idle
are now
limited to a maximum of 1 hour.
VRT¶
For VMOD authors, it means that the vtim_dur
type expects INFINITY
to
never time out or NAN
to not set a timeout.
For VMOD authors managing backends, there is one exception where a timeout
fallback did not change from zero to NAN
in struct vrt_backend
. The
vtim_dur
fields must take a negative value in order to fall back to the
respective parameters due to a limitation in how VCL is compiled.
As a convenience, a new macro VRT_BACKEND_INIT()
behaves like INIT_OBJ
but initializes timeouts to a negative value.
VCL COLD events have been fixed for directors vs. VMODs: VDI COLD now comes before VMOD COLD.