[master] 444d0bea4 doc: Changelog TLC

Nils Goroll nils.goroll at uplex.de
Fri Sep 6 17:38:07 UTC 2024


commit 444d0bea46254526149f4f5daa4c179e642746a9
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Fri Sep 6 19:37:26 2024 +0200

    doc: Changelog TLC

diff --git a/doc/changes.rst b/doc/changes.rst
index 788160c50..42c850753 100644
--- a/doc/changes.rst
+++ b/doc/changes.rst
@@ -1,6 +1,6 @@
 ..
-	Copyright (c) 2011-2023 Varnish Software AS
-	Copyright 2016-2023 UPLEX - Nils Goroll Systemoptimierung
+	Copyright (c) 2011-2024 Varnish Software AS
+	Copyright 2016-2024 UPLEX - Nils Goroll Systemoptimierung
 	SPDX-License-Identifier: BSD-2-Clause
 	See LICENSE file for full text of license
 
@@ -41,22 +41,138 @@ Varnish Cache NEXT (2024-09-15)
 .. PLEASE keep this roughly in commit order as shown by git-log / tig
    (new to old)
 
-* Backend tasks can now queue if the backend has reached its max_connections.
-  This allows the task to wait for a connection to become available rather
-  than immediately failing. This feature must be enabled with the new
-  parameters added.
+* The Varnish Delivery Processor (VDP) filter API has been generalized to also
+  accommodate future use for backend request bodies:
 
-  New parameters:
-  ``backend_wait_timeout`` sets the amount of time a task will wait.
-  ``backend_wait_limit`` sets the maximum number of tasks that can wait.
+  - ``VDP_Init()`` gained a ``struct busyobj *`` argument for use of VDPs on the
+    backend side, which is mutually exclusive with the existing ``struct req *``
+    argument (one of the two needs to be ``NULL``). ``VDP_Init()`` also gained
+    an ``intmax_t *`` pointer, which needs to point to the known content length
+    of the body data or ``-1`` for "unknown length". Filters can change this
+    value.
 
-  These parameters can also be set in the backend with ``wait_timeout``
-  and ``wait_limit``.
+  - ``struct vdp_ctx`` lost the ``req`` member, but gained ``struct objcore
+    *oc``, ``struct http *hp`` and ``intmax_t *clen`` members. The rationale
+    here is that a VDP should be concerned mainly with transforming body data
+    (for which ``clen`` is relevant) and optionally changing (from the
+    ``vdp_init_f``) the headers sent before the body data, for which ``hp`` is
+    intended. Some VDPs also work directly on a ``struct objcore *``, so ``oc``
+    is provided to the first VDP in the chain only.
 
-  New counters:
-  ``backend_wait`` count of tasks that waited in queue for a connection.
-  ``backend_wait_fail`` count of tasks that waited in queue but did not get
-  a connection within the ``wait_timeout``.
+    Generic VDPs should specifically not access the request or be concerned with
+    the object.
+
+    Yet special purpose VDPs still can take from ``VRT_CTX`` whatever references
+    they need in the ``vdp_init_f`` and store them in their private data.
+
+  - Consequent to what as been explained above, ``vdp_init_f`` lost its ``struct
+    objcore *`` argument.
+
+* VDPs with no ``vdp_bytes_f`` function are now supported if the ``vdp_init_f``
+  returns a value greater than zero to signify that the filter is not to be
+  added to the chain. This is useful to support VDPs which only need to work on
+  headers.
+
+* The ``epoll`` and ``kqueue`` waiters have been improved to correctly report
+  ``WAITER_REMCLOSE``, which increases the ``WAITER.*.remclose`` counter.
+
+* ``varnishtest`` now supports the ``shutdown`` command corresponding to the
+  ``shutdown(2)`` standard C library call.
+
+* VSC counters for waiters have been added:
+
+  * ``conns`` to count waits on idle connections
+  * ``remclose`` to count idle connections closed by the peer
+  * ``timeout`` to count idle connections which timed out in the waiter
+  * ``action`` to count idle connections which resulted in a read
+
+  These can be found under ``WAITER.<poolname>.``.
+
+* The port of a *listen_endpoint* given with the ``-a`` argument to ``varnishd``
+  can now also be a numerical port range like ``80-89``, besides the existing
+  options of port number (e.g. ``80``) and service name (e.g. ``http``). With a
+  port range, Varnish will accept connections on all ports within the range.
+
+* To implement the aforementioned feature, ``VSS_resolver_range()`` as been
+  added to ``libvarnish``.
+
+* The ``Warning: mlock() of VSM failed`` message is now emitted when locking of
+  shared memory segments (via ``mlock(2)``) fails. As Varnish performance may
+  severely be 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)``.
+
+* A bug has been fixed where string comparisons in VCL could fail with the
+  nonsensical error message ``Comparison of different types: STRING '=='
+  STRING``.
+
+.. _RFC9110: https://www.rfc-editor.org/rfc/rfc9110.html#section-14.4
+
+* 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`` in custom VCL.
+
+* Additional ``SessError`` VSL events are now generated for various HTTP/2
+  protocol errors. Some HTTP/2 log events have been changed from ``Debug`` and
+  ``Error`` to ``SessError``.
+
+* A new ``linux`` jail has been added which is now the default on Linux. For
+  now, it is almost identical to the ``unix`` jail with one addition:
+
+* 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.
+
+* A race condition with VCL temperature transitions has been addressed, which
+  likely caused issues with dynamic directors.
+
+* The implementation of the ``transit_buffer`` has now been made the
+  responsibility of storage engines.
+
+.. _4108: https://github.com/varnishcache/varnish-cache/issues/4108
+
+* Internal management of probes has been reworked to address race conditions
+  which could cause panics with VCL temperature changes and discards (`4108`_).
+
+* Backend tasks can now be instructed to queue if the backend has reached its
+  ``max_connections``. This allows tasks to wait for a connection to become
+  available rather than immediately failing. This feature must be enabled
+  through new global parameters or individual backend properties:
+
+  * ``backend_wait_timeout`` sets the amount of time a task will wait.
+  * ``backend_wait_limit`` sets the maximum number of tasks that can wait.
+
+  These parameters can also be set for individual backends using the
+  ``wait_timeout`` and ``wait_limit`` properties.
+
+  Tasks waiting on a backend going sick (either explicitly via the
+  ``backend.set_health`` command or implicitly through the probe) fail
+  immediately.
+
+  Global VSC counters have been added under ``MAIN``:
+
+  * ``backend_wait`` counts tasks which waited in queue for a connection.
+  * ``backend_wait_fail`` counts tasks which waited in queue but failed because
+    ``wait_timeout`` was reached or the backend went sick.
+
+* The size of the buffer to hold panic messages is now tunable through the new
+  ``panic_buffer`` parameter.
+
+* The Varnish Shared Memory (VSM) and Varnish Shared Counters (VSC) consumer
+  implementation in ``libvarnishapi`` have been improved for stability and
+  performance.
+
+.. _4088: https://github.com/varnishcache/varnish-cache/issues/4088
+
+* An issue has been fixed where Varnish Shared Log (VSL) queries (for example
+  using ``varnishlog -q``) with numerical values would fail in unexpected ways
+  due to truncation. (`4088`_)
 
 * The ObjWaitExtend() Object API function gained a ``statep`` argument
   to optionally return the busy object state consistent with the
@@ -79,6 +195,11 @@ Varnish Cache NEXT (2024-09-15)
 
 .. _VMOD developer documentation: doc/sphinx/reference/vmod.rst
 
+* An glitch with ttl comparisons has been fixed which could, for example, lead
+  to unexpected behavior with ``purge.soft()``.
+
+.. TODO 0e75d46357fc26ab59b9f660460d7c748f2c8be4 hpack ?
+
 ================================
 Varnish Cache 7.5.0 (2024-03-18)
 ================================


More information about the varnish-commit mailing list