Back to Varnish Cache

varnishd

doc/sphinx/whats-new/changes-6.4.rst

1.06.0 KB
Original Source

.. Copyright (c) 2020 Varnish Software AS SPDX-License-Identifier: BSD-2-Clause See LICENSE file for full text of license

.. _whatsnew_changes_6.4:

%%%%%%%%%%%%%%%%%%%%%%%% Changes in Varnish 6.4.0 %%%%%%%%%%%%%%%%%%%%%%%%

For information about updating your current Varnish deployment to the new version, see :ref:whatsnew_upgrading_6.4.

A more detailed and technical account of changes in Varnish, with links to issues that have been fixed and pull requests that have been merged, may be found in the change log_.

.. _change log: https://github.com/varnishcache/varnish-cache/blob/master/doc/changes.rst

varnishd

bugs


Numerous bugs have been fixed.

Generic Parameter Handling

Some parameters have dependencies and those are better documented now. For example :ref:ref_param_thread_pool_min can't be increased above :ref:ref_param_thread_pool_max, which is now indicated as such in the manual.

On a running Varnish instance the param.show command will display the actual minimum or maximum, but an attempt to param.set a parameter above or below its dynamic maximum or minimum will mention the failure's cause in the error message::

varnish> param.show thread_pool_reserve
200
thread_pool_reserve
        Value is: 0 [threads] (default)
        Maximum is: 95

        [...]

varnish> param.show thread_pool_min
200
thread_pool_min
        Value is: 100 [threads] (default)
        Maximum is: 5000

        [...]

varnish> param.set thread_pool_reserve 100
106
Must be no more than 95 (95% of thread_pool_min)

(attempting to set param 'thread_pool_reserve' to '100')

Expect further improvements in future releases.

Parameters


* Raised the minimum for the :ref:`ref_param_vcl_cooldown` parameter
  to 1 second.

Changes in behavior
  • The if-range header is now handled, allowing clients to conditionally request a range based on a date or an ETag.

  • Output VCC warnings also for VCLs loaded via the varnishd -f option

Changes to VCL

  • New syntax for "no backend"::

    backend dummy none;
    
    sub vcl_recv {
        set req.backend_hint = dummy;
    }
    

    It can be used whenever a backend is needed for syntactical reasons. The none backend will fail any attempt to use it. The other purpose is to avoid the declaration of a dummy backend when one is not needed: for example an active VCL only passing requests to other VCLs with the return (vcl(...)) syntax or setups relying on dynamic backends from a VMOD.

  • std.rollback(bereq) is now safe to use, see :ref:vmod_std(3) for details.

  • Deliberately closing backend requests through return(abandon), return(fail) or return(error) is no longer accounted as a fetch failure.

  • Numerical expressions can now be negative or negated as in set resp.http.ok = -std.integer("-200");.

  • The += operator is now available for headers and response bodies::

    set resp.http.header += "string";
    

VCL variables


* Add more vcl control over timeouts with the ``sess.timeout_linger``,
  ``sess.send_timeout`` and ``sess.idle_send_timeout`` variables
  corresponding the parameters by the same names.

VMODs
=====

* Imported :ref:`vmod_cookie(3)` from `varnish_modules`_

  The previously deprecated function ``cookie.filter_except()`` has
  been removed during import. It was replaced by ``cookie.keep()``

varnishlog
==========

* A ``Notice`` VSL tag has been added.

* Log records can safely have empty fields or fields containing blanks
  if they are delimited by "double quotes". This was applied to
  ``SessError`` and ``Backend_health``.

varnishadm
==========

* New ``pid`` command in the Varnish CLI, to get the master and optionally
  cache process PIDs, for example from ``varnishadm``.

varnishstat
===========

* Add vi-style CTRL-f / CTRL-b for page down/up to interactive
  ``varnishstat``.

* The ``MAIN.sess_drop`` counter is gone.

* Added ``rx_close_idle`` counter for separate accounting when
  ``sess.timeout_idle`` / :ref:`ref_param_timeout_idle` is reached.

* ``sess.send_timeout`` / :ref:`ref_param_send_timeout` being reached
  is no longer reported as ``MAIN.sc_rem_close``, but as
  ``MAIN.sc_tx_error``.

Changes for developers and VMOD authors
=======================================

General
~~~~~~~

* New configure switch: ``--with-unwind``. Alpine linux appears to offer a
  ``libexecinfo`` implementation that crashes when called by Varnish, this
  offers the alternative of using ``libunwind`` instead.

* The option ``varnishtest -W`` is gone, the same can be achieved with
  ``varnishtest -p debug=+witness``. A ``witness.sh`` script is available
  in the source tree to generate a graphviz dot file and detect potential
  lock cycles from the test logs.

* Introduced ``struct reqtop`` to hold information on the ESI top request
  and ``PRIV_TOP``.

* New or improved Coccinelle semantic patches that may be useful for
  VMOD or utilities authors.

* Added ``VSLs()`` and ``VSLbs()`` functions for logging ``STRANDS`` to
  VSL.

* Added ``WS_VSB_new()`` / ``WS_VSB_finish()`` for VSBs on workspaces.

* added ``v_dont_optimize`` attribute macro to instruct compilers
  (only gcc as of this release) to not optimize a function.

* Added ``VSB_tofile()`` to ``libvarnishapi``.

VMODs
~~~~~

* It is now possible for VMOD authors to customize the connection pooling
  of a dynamic backend. A hash is now computed to determine uniqueness and
  a backend declaration can contribute arbitrary data to influence the pool.

* ``VRB_Iterate()`` signature has changed.

* ``VRT_fail()`` now also works from director code.

* ``body_status`` and ``req_body_status`` have been collapsed into one
  type. In particular, the ``REQ_BODY_*`` enums now have been replaced
  with ``BS_*``.

* Added ``VRT_AllocStrandsWS()`` as a utility function to allocate
  STRANDS on a workspace.

*eof*

.. _varnish_modules: https://github.com/varnish/varnish-modules