mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 21:31:28 +02:00
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.
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)
Description
Languages
C
98.1%
Shell
0.8%
Makefile
0.5%
Lua
0.2%
Python
0.2%