mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 05:41:26 +02:00
The issue with non-rotating freq counters was addressed in commit 8cc586c73 ("BUG/MEDIUM: freq_ctr/threads: use the global_now_ms variable") using the global date. But an issue remained with the comparison of the most recent time. Since the initial time in the structure is zero, the tick_is_lt() works on half of the periods depending on the first date an entry is touched. And the wrapping happened last night: $ date --date=@$(((($(date +%s) * 1000) & -0x8000000) / 1000)) Mon Mar 29 23:59:46 CEST 2021 So users of the last fix (backported to 2.3.8) may experience again an always increasing rate for the next 24 days if they restart their process. Let's always update the time if the latest date was not updated yet. It will likely be simplified once the function is reorganized but this will do the job for now. Note that since this timer is only used by freq counters, no other sub-system is affected. The bug can easily be tested with this config during the right time period (i.e. today to today+24 days + N*49.7 days): global stats socket /tmp/sock1 frontend web bind :8080 mode http http-request track-sc0 src stick-table type ip size 1m expire 1h store http_req_rate(2s) Issuing 'socat - /tmp/sock1 <<< "show table web"' should show a stable rate after 2 seconds. The fix must be backported to 2.3 and any other version the fix above goes into. Thanks to Thomas SIMON and Sander Klein for quickly reporting this issue with a working reproducer.
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%