haproxy public development tree
Go to file
Miroslav Zagorac 52c2ec3202 MAJOR: opentracing: reenable usage of vars to transmit opentracing context
Since commit 3a4bedccc ("MEDIUM: vars: replace the global name index with
a hash") the names of HAProxy variables are no longer saved, ie their
64-bit hashes are saved instead.

This is very convenient for the HAProxy itself, but for the OpenTracing
module it is a problem because the names of the variables are important
when transferring the OpenTracing context.  Namely, this context consists
of an unknown amount of data stored in a key-value format.  The number
of these data (and the name of the variable used for this purpose) is
determined with the configuration of the OpenTracing filter, as well as
with the tracer used.  The two previous sentences seem to be in conflict,
but that is only so at first glance.  The function in the OpenTracing
filter used to read the context does not really know this, neither their
number nor its name.  The only thing that function actually knows is the
prefix of the variable names used for context transfer, and by that it
could find all the necessary data.  Of course, until the application of
the above-mentioned commit.

The problem is solved in a very simple way: in a common variable that
the filter always knows its name, the names of all variables that are the
product of the OpenTracing context are saved.  The names of these context
variables can only be added to that common variable.  When that variable
is no longer needed (when we no longer need context), it is deleted.

The format for saving data to this common variable is as follows:
  +-----+---------------+-- .. --+-----+---------------+
  | len | variable name |        | len | variable name |
  +-----+---------------+-- .. --+-----+---------------+

The amount of memory space used to store the length of the name is 1 byte,
with a sign (the minus sign is provided for inactive records, but this is
not currently used).  This means that the maximum length of the variable
name to be saved is 127 characters, which is quite enough for use in the
filter.  The buffer size for such data storage is global.tune.bufsize.

This patch must be backported in 2.5.
2022-04-08 16:31:33 +02:00
.github CI: github actions: update OpenSSL to 3.0.2 2022-03-31 17:00:22 +02:00
addons MAJOR: opentracing: reenable usage of vars to transmit opentracing context 2022-04-08 16:31:33 +02:00
admin OPTIM: halog: skip fields 64 bits at a time when supported 2021-11-08 12:08:26 +01:00
dev DEV: coccinelle: Add a new pattern to ist.cocci 2022-03-21 08:30:47 +01:00
doc MINOR: sample: converter: Add add_item convertor 2022-04-04 07:30:58 +02:00
examples
include MINOR: quic_tls: Make key update use of reusable cipher contexts 2022-04-08 15:38:29 +02:00
reg-tests MINOR: sample: converter: Add add_item convertor 2022-04-04 07:30:58 +02:00
scripts CI: refactor OpenTracing build script 2022-01-19 07:37:40 +01:00
src MINOR: quic_tls: Make key update use of reusable cipher contexts 2022-04-08 15:38:29 +02:00
tests
.cirrus.yml
.gitattributes
.gitignore
.mailmap
.travis.yml
BRANCHES
CHANGELOG [RELEASE] Released version 2.6-dev4 2022-03-26 08:31:33 +01:00
CONTRIBUTING
INSTALL DOC: install: describe how to choose options used in the DEBUG variable 2022-03-01 08:31:50 +01:00
LICENSE
MAINTAINERS
Makefile CLEANUP: qpack: suppress by default stdout traces 2022-03-25 15:22:40 +01:00
README
ROADMAP
SUBVERS
VERDATE [RELEASE] Released version 2.6-dev4 2022-03-26 08:31:33 +01:00
VERSION [RELEASE] Released version 2.6-dev4 2022-03-26 08:31:33 +01:00

README

The HAProxy documentation has been split into a number of different files for
ease of use.

Please refer to the following files depending on what you're looking for :

  - INSTALL for instructions on how to build and install HAProxy
  - BRANCHES to understand the project's life cycle and what version to use
  - LICENSE for the project's license
  - CONTRIBUTING for the process to follow to submit contributions

The more detailed documentation is located into the doc/ directory :

  - doc/intro.txt for a quick introduction on HAProxy
  - doc/configuration.txt for the configuration's reference manual
  - doc/lua.txt for the Lua's reference manual
  - doc/SPOE.txt for how to use the SPOE engine
  - doc/network-namespaces.txt for how to use network namespaces under Linux
  - doc/management.txt for the management guide
  - doc/regression-testing.txt for how to use the regression testing suite
  - doc/peers.txt for the peers protocol reference
  - doc/coding-style.txt for how to adopt HAProxy's coding style
  - doc/internals for developer-specific documentation (not all up to date)