Hi,

HAProxy 2.5-dev1 was released on 2021/06/30. It added 282 new commits
after version 2.5-dev0.

This version is quite large, but not larger than most -dev1 versions which
accumulate lots of pending stuff, especially if we consider that roughly
one third of the patches are cleanups, CI updates, regtests and doc updates.

We're also seeing one of the important benefits of having released a clean
2.4, which is that developers were less disturbed by bugs and are all busy
doing new stuff for 2.5, so it's crucial that we keep going on this trend
of higher quality dot-0 releases.

Among the most visible changes that 2.5-dev1 will bring for now, we can
enumerate:
  - removal of the deprecated "nbproc" directive. Threads have been
    enabled by default since 2.0 now, and nbproc was deprecated, so it's
    now gone. Some bind/frontend options like "bind-process", "process",
    or some global directives such as "cpu-map" were minimally updated
    accordingly, but I'm still not completely happy with the current
    state. I'd like to replace "process" and "bind-process" with a less
    misleading "thread" statement which would first alias these and could
    be extended later.

  - removal of other long-deprecated directives such as "grace",
    "no option http-use-htx", "option forceclose", "http-tunnel",
    "tune.chksize", and the incorrect "set-cookie()" sample fetch
    function.

  - start of unification of config error handling to simplify the reuse
    at runtime of code initially designed to be used at boot time only.
    For example error messages used to be sent to stderr using ha_alert()
    or ha_warning() but now we may also want to report them to the CLI if
    a dynamic config change happened there. Now a context is prepended in
    front of error messages ("config" for what is produced by the config
    parser). At the moment the messages can be diverted to a temporary
    buffer but we've figured ways to improve this for the long term so
    that over time error reporting becomes smoother.

  - performance improvements of the HTTP/1 small chunk parser. The initial
    chunk parser was very fast and robust against small chunks but over
    time as the code became more generic (namely to deal both with legacy
    and HTX), it became less efficient. Now not only the performance is
    back, but the parser is even faster than the original one, making
    haproxy even less sensitive to such unusual but undesirable traffic.

  - simplification of the pools code, initially to fix a rare bug in the
    lockless version, that opened an opportunity for using the lockless
    implementation everywhere, resulting in the removal of the very old
    locked implementation that was kept for non-capable architectures. As
    a result, threads will now be faster on less common architectures
    (e.g. i686, MIPS, PPC64, ...)

  - significant queue speedup on multi-thread. Performance gains of up
    to 90% were measured on a 8-core machine thanks to significant locking
    reduction when delivering traffic to saturated servers.

  - significant performance improvement in DNS response processing, by
    using cross-references that removes one to two complexity orders and
    avoids some O(N^3) searches.

  - new CLI commands to add/change/show/remove "ca-file" and "crl-file"
    used for bind and server lines. This allows to update their contents
    at run time now.

  - the majority of commonly used SSL-related server keywords can now
    be configured on dynamic servers from the CLI.

  - the config parser will now report an error when extra arguments are
    present in macros

  - a new "-cc" command-line option allows haproxy to execute an expression
    made of config predicates, which eases the verification of version
    information or enabled options. Expressions are still very limited
    for now but are expected to significantly improve during 2.5-dev. We
    may even backport a few useful features if that makes sense.

  - some HTTP actions were made available to tcp-request content (e.g.
    "set-log-level", "set-mark", "set-tos", "set-nice", "set-src" and
    "set-src-port").

  - before first warning or error, haproxy's version and executable path
    are displayed. This can help figure that a script launched the wrong
    version or understand why a certain config error is reported.

  - "show map/acl" will now report the number of entries on the summary
    output. This can help an agent figure whether it's reasonable to dump
    all the keys or not.

  - OCSP response and information are now accessible from the CLI in
    "show ssl cert", "show ssl ocsp-response" and when displaying the
    details of a certificate.

  - some clients which don't know what ALPN will negotiate emit plenty
    of parallel connections with "h2,http/1.1" in the ALPN field, and if
    they see the server accepts h2, will close the other ones. This used
    to cause errors to be logged, filling some users' logs. Now these
    ones are automatically removed when "http-ignore-probes" is set.

I'm sure I missed a few given the quantity, so please don't feel offended
if your work is not listed here :-)  And I haven't listed bug fixes nor
the usual ci/regtest/doc updates.

I'm really not good at speaking about what people are working on, but at
least some work has already started to improve the most common load
balancing algos' performance (roundrobin, leastconn, first) under high
loads, I hope all of them will be done for 2.5. I'd also like to take
this opportunity for implementing the "pack" algo that was discussed a
few years ago among a few people here, doing exactly the opposite of
leastconn, packing connetions on the most loaded server (while respecting
maxconn) so as to keep the least number of servers in use. That's very
close to "first" except that there's no ordering constraint so it can
converge faster to turn off containers or VMs.

An important change I'd like to address for 2.5 is the introduction of
thread groups. These ones could help those dealing with dual-socket
systems by reducing the shared elements, and could possibly allow to
break the 64 threads barrier. I think it would fit nicely in 2.5 as
an alternative for those who were used to multi-process and who for
some reason would like to preserve a "share-little" model. This would
bring a scheduler per group, and FDs wouldn't be shared between groups,
but server states etc would still be shared and CLI would apply process
wide so that it wouldn't suffer from the old nbproc deficiencies. We'll
see how that turns out. It doesn't look overly complicated but I'm sure
the devil is in the details.

I'm aware of some stick-table improvements that will allow to store arrays
of gpt/gpc instead of just two, for those with complex deployments.

A generic HTTP client for use with everything that needs outgoing HTTP
requests is in the work as well. The Lua's client should be ported to it
so that it natively supports H2, chunks etc, and later we could use it
for plenty of stuff like OCSP, logging over HTTP, access to various
APIs, letsencrypt, retrieve service definitions from xDS, and so on.

Along recent face-to-face discussions I could note that there are plenty
of features or changes that would be nice to have, but given that we're
approaching the vacation period for lots of people, I don't expect many
big changes during the forthcoming weeks but it's also often the period
that allows to be more creative and to risk to break more stuff without
annoying everyone, so who knows :-)

As usual, feedback is welcome. If you face config errors due to removed
keywords and you find that error messages are not clear enough or that
the config doesn't explain well how to proceed, please don't be shy and
report that here, as you certainly won't be the only one then!

Except for the last few patches, this has been running without a glitch
for 18 days on haproxy.org, which is not surprising considering that we
didn't introduce dangerous changes yet. If you're interested in testing
some of the features above, 2.5-dev1 could possibly be safer than
upcoming -dev versions, so it's the right moment. I'll try to continue
to push weekly updates unless there's really nothing outstanding or I'm
burried under a ton of bugs.

Please find the usual URLs below :
   Site index       : http://www.haproxy.org/
   Discourse        : http://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Wiki             : https://github.com/haproxy/wiki/wiki
   Sources          : http://www.haproxy.org/download/2.5/src/
   Git repository   : http://git.haproxy.org/git/haproxy.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy.git
   Changelog        : http://www.haproxy.org/download/2.5/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Alex (1):
      DOC: use the req.ssl_sni in examples

Alexandar Lazic (1):
      DOC/MINOR: move uuid in the configuration to the right alphabetical order

Amaury Denoyelle (41):
      BUG/MAJOR: server: prevent deadlock when using 'set maxconn server'
      MINOR: errors: allow empty va_args for diag variadic macro
      REORG: errors: split errors reporting function from log.c
      CLEANUP: server: fix cosmetic of error message on sni parsing
      MEDIUM: errors: implement user messages buffer
      MINOR: log: do not discard stderr when starting is over
      MEDIUM: errors: implement parsing context type
      MINOR: errors: use user messages context in print_message
      MINOR: log: display exec path on first warning
      MINOR: errors: specify prefix "config" for parsing output
      MINOR: log: define server user message format
      REORG: server: use parsing ctx for server parsing
      REORG: config: use parsing ctx for server config check
      MINOR: server: use parsing ctx for server init addr
      MINOR: server: use ha_alert in server parsing functions
      BUG: errors: remove printf positional args for user messages context
      BUG/MINOR: server: explicitly set "none" init-addr for dynamic servers
      BUG/MINOR: stick-table: insert srv in used_name tree even with fixed id
      BUG/MEDIUM: server: extend thread-isolate over much of CLI 'add server'
      BUG/MEDIUM: server: clear dynamic srv on delete from proxy id/name trees
      BUG/MEDIUM: server: do not forget to generate the dynamic servers ids
      BUG/MINOR: server: do not keep an invalid dynamic server in px ids tree
      BUG/MEDIUM: server: do not auto insert a dynamic server in px addr_node
      BUG/MINOR: backend: restore the SF_SRV_REUSED flag original purpose
      BUG/MINOR: backend: do not set sni on connection reuse
      MINOR: ssl: fix typo in usage for 'new ssl ca-file'
      MINOR: ssl: always initialize random generator
      MINOR: ssl: check allocation in ssl_sock_init_srv
      MINOR: ssl: check allocation in parse ciphers/ciphersuites/verifyhost
      MINOR: ssl: check allocation in parse npn/sni
      MINOR: server: disable CLI 'set server ssl' for dynamic servers
      MINOR: ssl: render file-access optional on server crt loading
      MINOR: ssl: split parse functions for alpn/check-alpn
      MINOR: ssl: support ca-file arg for dynamic servers
      MINOR: ssl: support crt arg for dynamic servers
      MINOR: ssl: support crl arg for dynamic servers
      MINOR: ssl: enable a series of ssl keywords for dynamic servers
      MINOR: ssl: support ssl keyword for dynamic servers
      REGTESTS: server: test ssl support for dynamic servers
      BUG/MAJOR: server: fix deadlock when changing maxconn via agent-check
      REGTESTS: fix maxconn update with agent-check

Christopher Faulet (53):
      BUG/MEDIUM: filters: Exec pre/post analysers only one time per filter
      BUG/MINOR: http-comp: Preserve HTTP_MSGF_COMPRESSIONG flag on the response
      MINOR: h1-htx: Update h1 parsing functions to return result as a size_t
      MEDIUM: h1-htx: Adapt H1 data parsing to copy wrapping data in one call
      MINOR: mux-h1/mux-fcgi: Don't needlessly loop on data parsing
      MINOR: h1-htx: Move HTTP chunks parsing into a dedicated function
      MEDIUM: h1-htx: Split function to parse a chunk and the loop on the buffer
      MEDIUM: h1-htx: Add a function to parse contiguous small chunks
      MINOR: h1-htx: Use a correlation table to speed-up small chunks parsing
      MINOR: buf: Add function to realign a buffer with a specific head position
      MINOR: muxes/h1-htx: Realign input buffer using b_slow_realign_ofs()
      CLEANUP: mux-h1: Rename functions parsing input buf and filling output buf
      Revert "MEDIUM: http-ana: Deal with L7 retries in HTTP analysers"
      BUG/MINOR: http-ana: Send the right error if max retries is reached on L7 
retry
      BUG/MINOR: http-ana: Handle L7 retries on refused early data before K/A 
aborts
      MINOR: http-ana: Perform L7 retries because of status codes in response 
analyser
      CLEANUP: http-ana: Remove useless if statement about L7 retries
      BUG/MAJOR: stream-int: Release SI endpoint on server side ASAP on retry
      MINOR: backend: Don't release SI endpoint anymore in connect_server()
      BUG/MINOR: vars: Be sure to have a session to get checks variables
      CLEANUP: mux-fcgi: Don't needlessly store result of data/trailers parsing
      MINOR: http-ana: Use -1 status for client aborts during queuing and 
connect
      REGTESTS: Fix http_abortonclose.vtc to support -1 status for some client 
aborts
      BUG/MEDIUM: compression: Fix loop skipping unused blocks to get the next 
block
      BUG/MEDIUM: compression: Properly get the next block to iterate on payload
      BUG/MEDIUM: compression: Add a flag to know the filter is still 
processing data
      BUG/MAJOR: htx: Fix htx_defrag() when an HTX block is expanded
      BUG/MINOR: mux-fcgi: Expose SERVER_SOFTWARE parameter by default
      BUG/MINOR: h1-htx: Fix a signess bug with char data type when parsing 
chunk size
      CLEANUP: l7-retries: do not test the buffer before calling b_alloc()
      BUG/MINOR: server-state: load SRV resolution only if params match the 
config
      DOC: lua: Add a warning about buffers modification in HTTP
      BUG/MINOR: server: Forbid to set fqdn on the CLI if SRV resolution is 
enabled
      BUG/MEDIUM: server/cli: Fix ABBA deadlock when fqdn is set from the CLI
      MINOR: resolvers: Clean server in a dedicated function when removing a 
SRV item
      MINOR: resolvers: Remove server from named_servers tree when removing a 
SRV item
      BUG/MEDIUM: resolvers: Add a task on servers to check SRV resolution 
status
      BUG/MINOR: resolvers: Use resolver's lock in resolv_srvrq_expire_task()
      BUG/MINOR: server/cli: Fix locking in function processing "set server" 
command
      MINOR: tcp-act: Add set-src/set-src-port for "tcp-request content" rules
      DOC: config: Add missing actions in "tcp-request session" documentation
      CLEANUP: dns: Remove a forgotten debug message
      BUG/MINOR: resolvers: Always attach server on matching record on 
resolution
      BUG/MINOR: resolvers: Reset server IP when no ip is found in the response
      MINOR: resolvers: Reset server IP on error in 
resolv_get_ip_from_response()
      BUG/MINOR: tcpcheck: Fix numbering of implicit HTTP send/expect rules
      MINOR: http-act/tcp-act: Add "set-log-level" for tcp content rules
      MINOR: http-act/tcp-act: Add "set-nice" for tcp content rules
      MINOR: http-act/tcp-act: Add "set-mark" and "set-tos" for tcp content 
rules
      CLEANUP: tcp-act: Sort action lists
      BUG/MINOR: mqtt: Fix parser for string with more than 127 characters
      BUG/MINOR: mqtt: Support empty client ID in CONNECT message
      BUG/MEDIUM: resolvers: Make 1st server of a template take part to SRV 
resolution

David Carlier (2):
      BUILD: Makefile: fix linkage for Haiku.
      BUILD/MEDIUM: tcp: set-mark setting support for FreeBSD.

Dirkjan Bussink (1):
      BUG/MINOR: checks: return correct error code for srv_parse_agent_check

Dragan Dosen (2):
      MINOR: map/acl: print the count of all the map/acl entries in "show 
map/acl"
      CLEANUP: pattern: remove export of non-existent function pattern_delete()

Emeric Brun (5):
      BUG/MINOR: resolvers: answser item list was randomly purged or errors
      MEDIUM: resolvers: add a ref on server to the used A/AAAA answer item
      MEDIUM: resolvers: add a ref between servers and srv request or used SRV 
record
      BUG/MAJOR: resolvers: segfault using server template without SRV RECORDs
      CLEANUP: peers: re-write intdecode function comment.

Ilya Shipitsin (5):
      CI: introduce scripts/build-vtest.sh for installing VTest
      CI: github actions: add OpenTracing builds
      CI: github actions: add OpenSSL-3.0.0 builds
      CI: github actions: enable alpine/musl builds
      CLEANUP: assorted typo fixes in the code and comments

Mark Mullan (1):
      DOC: intro: Fix typo in starter guide

Maximilian Mader (2):
      CLEANUP: tools: Make errptr const in `parse_line()`
      MINOR: haproxy: Add `-cc` argument

Miroslav Zagorac (4):
      BUILD/MINOR: opentracing: fixed build when using clang
      Revert "BUG/MINOR: opentracing: initialization after establishing daemon 
mode"
      BUG/MEDIUM: opentracing: initialization before establishing daemon and/or 
chroot mode
      CLEANUP: server: a separate function for initializing the per_thr field

Remi Tricot-Le Breton (52):
      CLEANUP: ssl: Move ssl_store related code to ssl_ckch.c
      MINOR: ssl: Allow duplicated entries in the cafile_tree
      MEDIUM: ssl: Chain ckch instances in ca-file entries
      MINOR: ssl: Add reference to default ckch instance in bind_conf
      MINOR: ssl: Add helper functions to create/delete cafile entries
      MEDIUM: ssl: Add a way to load a ca-file content from memory
      MINOR: ssl: Add helper function to add cafile entries
      MINOR: ssl: Ckch instance rebuild and cleanup factorization in CLI handler
      MEDIUM: ssl: Add "set+commit ssl ca-file" CLI commands
      REGTESTS: ssl: Add new ca-file update tests
      MINOR: ssl: Add "abort ssl ca-file" CLI command
      MINOR: ssl: Add a cafile_entry type field
      MINOR: ssl: Refactorize the "show certificate details" code
      MEDIUM: ssl: Add "show ssl ca-file" CLI command
      MEDIUM: ssl: Add "new ssl ca-file" CLI command
      MINOR: ssl: Add "del ssl ca-file" CLI command
      REGTESTS: ssl: Add "new/del ssl ca-file" tests
      DOC: ssl: Add documentation about CA file hot update commands
      DOC: internals: update the SSL architecture schema
      MINOR: ssl: Chain instances in ca-file entries
      MEDIUM: ssl: Add "set+commit ssl crl-file" CLI commands
      MEDIUM: ssl: Add "new+del crl-file" CLI commands
      MINOR: ssl: Add "abort ssl crl-file" CLI command
      MEDIUM: ssl: Add "show ssl crl-file" CLI command
      REGTESTS: ssl: Add "new/del ssl crl-file" tests
      REGTESTS: ssl: Add "set/commit ssl crl-file" test
      DOC: ssl: Add documentation about CRL file hot update commands
      BUILD/MINOR: ssl: Fix compilation with SSL enabled
      BUILD/MINOR: ssl: Fix compilation with OpenSSL 1.0.2
      CLEANUP: ssl: Fix coverity issues found in CA file hot update code
      BUG/MEDIUM: ebtree: Invalid read when looking for dup entry
      BUG/MINOR: server: Missing calloc return value check in srv_parse_source
      BUG/MINOR: peers: Missing calloc return value check in 
peers_register_table
      BUG/MINOR: ssl: Missing calloc return value check in 
ssl_init_single_engine
      BUG/MINOR: http: Missing calloc return value check in 
parse_http_req_capture
      BUG/MINOR: proxy: Missing calloc return value check in proxy_parse_declare
      BUG/MINOR: proxy: Missing calloc return value check in proxy_defproxy_cpy
      BUG/MINOR: http: Missing calloc return value check while parsing 
tcp-request/tcp-response
      BUG/MINOR: http: Missing calloc return value check while parsing 
tcp-request rule
      BUG/MINOR: compression: Missing calloc return value check in 
comp_append_type/algo
      BUG/MINOR: worker: Missing calloc return value check in 
mworker_env_to_proc_list
      BUG/MINOR: http: Missing calloc return value check while parsing redirect 
rule
      BUG/MINOR: http: Missing calloc return value check in make_arg_list
      BUG/MINOR: proxy: Missing calloc return value check in 
chash_init_server_tree
      BUG/MINOR: ssl: OCSP stapling does not work if expire too far in the 
future
      MINOR: ssl: Keep the actual key length in the certificate_ocsp structure
      MINOR: ssl: Add new "show ssl ocsp-response" CLI command
      MINOR: ssl: Add the OCSP entry key when displaying the details of a 
certificate
      MINOR: ssl: Add the "show ssl cert foo.pem.ocsp" CLI command
      REGTESTS: ssl: Add "show ssl ocsp-response" test
      BUILD: ssl: Fix compilation with BoringSSL
      MINOR: ssl: Use OpenSSL's ASN1_TIME convertor when available

Tim Duesterhus (13):
      MINOR: cfgparse: Fail when encountering extra arguments in macro
      CLEANUP: reg-tests: Remove obsolete no-htx parameter for reg-tests
      CLEANUP: cfgparse: Remove duplication of `MAX_LINE_ARGS + 1`
      CI: Make matrix.py executable and add shebang
      REGTESTS: Remove REQUIRE_VERSION=1.6 from all tests
      REGTESTS: Remove REQUIRE_VERSION=1.7 from all tests
      CI: Replace the requirement for 'sudo' with a call to 'ulimit -n'
      REGTESTS: Replace REQUIRE_VERSION=2.5 with 'haproxy -cc'
      REGTESTS: Replace REQUIRE_OPTIONS with 'haproxy -cc' for 2.5+ tests
      REGTESTS: Replace REQUIRE_BINARIES with 'command -v'
      REGTESTS: Remove support for REQUIRE_BINARIES
      BUG/MINOR: cache: Correctly handle existing-but-empty 'accept-encoding' 
header
      CLEANUP: Prevent channel-t.h from being detected as C++ by GitHub

Tim Düsterhus (1):
      DOC: Replace issue templates by issue forms

William Lallemand (4):
      BUILD: fix compilation for OpenSSL-3.0.0-alpha17
      CI: github actions: -Wno-deprecated-declarations with OpenSSL 3.0.0
      BUILD: make tune.ssl.keylog available again
      REGTESTS: ssl: show_ssl_ocspresponce.vtc is broken with BoringSSL

Willy Tarreau (94):
      CLEANUP: backend: fix incorrect comments on locking conditions for lb 
functions
      SCRIPTS: opentracing: enable parallel builds in build-ot.sh
      BUG/MINOR: pools: fix a possible memory leak in the lockless pool_flush()
      BUG/MINOR: pools: make DEBUG_UAF always write to the to-be-freed location
      MINOR: pools: do not maintain the lock during pool_flush()
      MINOR: pools: call malloc_trim() under thread isolation
      MEDIUM: pools: use a single pool_gc() function for locked and lockless
      BUG/MAJOR: pools: fix possible race with free() in the lockless variant
      CLEANUP: pools: remove now unused seq and pool_free_list
      MEDIUM: pools: remove the locked pools implementation
      BUG/MEDIUM: errors: include missing obj_type file
      MINOR: config: remove support for deprecated option "tune.chksize"
      MINOR: config: completely remove support for "no option http-use-htx"
      MINOR: log: remove the long-deprecated early log-format tags
      MINOR: http: remove the long deprecated "set-cookie()" sample fetch 
function
      MINOR: config: reject long-deprecated "option forceclose"
      MINOR: config: remove deprecated option "http-tunnel"
      MEDIUM: proxy: remove the deprecated "grace" keyword
      MAJOR: config: remove parsing of the global "nbproc" directive
      BUILD: init: remove initialization of multi-process thread mappings
      BUILD: log: remove unused fmt_directive()
      BUG/MEDIUM: shctx: use at least thread-based locking on USE_PRIVATE_CACHE
      BUG/MINOR: ssl: use atomic ops to update global shctx stats
      BUG/MINOR: mworker: fix typo in chroot error message
      CLEANUP: global: remove unused definition of stopping_task[]
      MEDIUM: init: remove the loop over processes during init
      MINOR: mworker: remove the initialization loop over processes
      CLEANUP: global: remove the nbproc field from the global structure
      CLEANUP: global: remove pid_bit and all_proc_mask
      MEDIUM: global: remove dead code from nbproc/bind_proc removal
      MEDIUM: config: simplify cpu-map handling
      MEDIUM: cpu-set: make the proc a single bit field and not an array
      CLEANUP: global: remove unused definition of MAX_PROCS
      MEDIUM: global: remove the relative_pid from global and mworker
      DOC: update references to process numbers in cpu-map and bind-process
      MEDIUM: config: warn about "bind-process" deprecation
      CLEANUP: shctx: remove the different inter-process locking techniques
      BUG/MAJOR: queue: set SF_ASSIGNED when setting strm->target on dequeue
      MINOR: backend: only skip LB when there are actual connections
      BUG/MINOR: mux-h1: do not skip the error response on bad requests
      MINOR: connection: add helper conn_append_debug_info()
      MINOR: mux-h2/trace: report a few connection-level info during h2_init()
      CLEANUP: mux-h2/traces: better align user messages
      BUG/MINOR: stats: make "show stat typed desc" work again
      MINOR: mux-h2: obey http-ignore-probes during the preface
      BUG/MINOR: mux-h2/traces: bring back the lost "rcvd H2 REQ" trace
      BUG/MINOR: mux-h2/traces: bring back the lost "sent H2 REQ/RES" traces
      CI: ssl: enable parallel builds for OpenSSL on Linux
      CI: ssl: do not needlessly build the OpenSSL docs
      CI: ssl: keep the old method for ancient OpenSSL versions
      MINOR: queue: update the stream's pend_pos before queuing it
      MEDIUM: queue: make pendconn_process_next_strm() only return the pendconn
      MINOR: queue: update proxy->served once out of the loop
      MEDIUM: queue: refine the locking in process_srv_queue()
      MINOR: lb/api: remove the locked argument from take_conn/drop_conn
      MINOR: queue: create a new structure type "queue"
      MINOR: proxy: replace the pendconns-related stuff with a struct queue
      MINOR: server: replace the pendconns-related stuff with a struct queue
      MEDIUM: queue: use a dedicated lock for the queues
      MEDIUM: queue: simplify again the process_srv_queue() API
      MINOR: queue: factor out the proxy/server queuing code
      MINOR: queue: use atomic-ops to update the queue's index
      MEDIUM: queue: determine in process_srv_queue() if the proxy is usable
      MEDIUM: queue: move the queue lock manipulation to 
pendconn_process_next_strm()
      MEDIUM: queue: unlock as soon as possible
      MINOR: queue: make pendconn_first() take the lock by itself
      CLEANUP: backend: remove impossible case of round-robin + consistent hash
      Revert "MINOR: queue: make pendconn_first() take the lock by itself"
      Revert "MEDIUM: queue: unlock as soon as possible"
      Revert "MEDIUM: queue: move the queue lock manipulation to 
pendconn_process_next_strm()"
      Revert "MEDIUM: queue: determine in process_srv_queue() if the proxy is 
usable"
      Revert "MINOR: queue: use atomic-ops to update the queue's index"
      Revert "MINOR: queue: factor out the proxy/server queuing code"
      Revert "MEDIUM: queue: simplify again the process_srv_queue() API"
      Revert "MEDIUM: queue: use a dedicated lock for the queues"
      Revert "MEDIUM: queue: refine the locking in process_srv_queue()"
      Revert "MINOR: queue: update proxy->served once out of the loop"
      Revert "MEDIUM: queue: make pendconn_process_next_strm() only return the 
pendconn"
      MEDIUM: queue: update px->served and lb's take_conn once per loop
      MEDIUM: queue: use a dedicated lock for the queues (v2)
      MEDIUM: queue: simplify again the process_srv_queue() API (v2)
      MEDIUM: queue: determine in process_srv_queue() if the proxy is usable 
(v2)
      MINOR: queue: factor out the proxy/server queuing code (v2)
      MINOR: queue: use atomic-ops to update the queue's index (v2)
      MEDIUM: queue: take the proxy lock only during the px queue accesses
      MEDIUM: queue: use a trylock on the server's queue
      MINOR: queue: add queue_init() to initialize a queue
      MINOR: queue: add a pointer to the server and the proxy in the queue
      MINOR: queue: store a pointer to the queue into the pendconn
      MINOR: queue: remove the px/srv fields from pendconn
      MINOR: queue: simplify pendconn_unlink() regarding srv vs px
      BUG: backend: stop looking for queued connections once there's no more
      BUG/MINOR: queue/debug: use the correct lock labels on the queue lock
      BUILD: tcp-act: avoid warning when set-mark / set-tos are not supported

---

Reply via email to