Upgrading to Varnish 7.3

New VSL format

The binary format of Varnish logs changed to increase the space for VXIDs from 32 bits to 64. This is not a change that older versions of the Varnish logging utilities can understand, and the new utilities can also not process old logs.

There is no conversion tool from the old format to the new one, so this should become a problem only when raw logs are stored for future processing. If old binary logs need to remain usable, the only solution is to use a compatible Varnish version and at the time of this release, the 6.0 branch is the only one without an EOL date.

For developers and VMOD authors: C interface changes requiring adjustments

Via backends

The new backend argument to the VRT_new_backend*() functions is optional and NULL can be passed to match the previous behavior.

suckaddr

The following functions return or accept const pointers from now on:

  • VSA_Clone()

  • VSA_getsockname()

  • VSA_getpeername()

  • VSA_Malloc()

  • VSA_Build*()

  • VSS_ResolveOne()

  • VSS_ResolveFirst()

VSA_free() has been added to free heap memory allocated by VSA_Malloc() or one of the VSA_Build*() functions with a NULL first argument.

directors

Directors which take and hold references to other directors via VRT_Assign_Backend() (typically any director which has other directors as backends) are now expected to implement the new .release callback of type void vdi_release_f(VCL_BACKEND). This function is called by VRT_DelDirector(). The implementation is expected drop any backend references which the director holds (again using VRT_Assign_Backend() with NULL as the second argument).

Failure to implement this callback can result in deadlocks, in particular during VCL discard.

eof