869efd5eeb
The copy of the startup logs used to rely on a re-allocated memory area on the fly, that would attempt to be delivered at once over the CLI. But if it's too large (too many warnings) it will take time to start up, and may not even show up on the CLI as it doesn't fit in a buffer. The ring buffer infrastructure solves all this with no more code, let's switch to this instead. It simply requires a parsing function to attach the ring via ring_attach_cli() and all the rest is automatically handled. Initially this was imagined as a code cleanup, until a test with a config involving 100k backends and just one occurrence of "load-server-state-from-file global" in the defaults section took approx 20 minutes to parse due to the O(N^2) cost of concatenating the warnings resulting in ~1 TB of data to be copied, while it took only 0.57s with the ring. Ideally this patch should be backported to 2.0 and 1.9, though it relies on the ring infrastructure which will then also need to be backported. Configs able to trigger the bug are uncommon, so another workaround for older versions without backporting the rings would consist in simply limiting the size of the error message in print_message() to something always printable, which will only return the first errors. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
contrib | ||
doc | ||
ebtree | ||
examples | ||
include | ||
reg-tests | ||
scripts | ||
src | ||
tests | ||
.cirrus.yml | ||
.gitignore | ||
.travis.yml | ||
BRANCHES | ||
CHANGELOG | ||
CONTRIBUTING | ||
INSTALL | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
README | ||
ROADMAP | ||
SUBVERS | ||
VERDATE | ||
VERSION |
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)