The torture test run for previous commit 787dc20 ("BUG/MEDIUM: lists: add missing store barrier on MT_LIST_BEHEAD()") finally broke again after 34M connections. It appeared that MT_LIST_ADD and MT_LIST_ADDQ were suffering from the same missing barrier when restoring the original pointers before giving up, when checking if the element was already added. This is indeed something which seldom happens with the shared scheduler, in case two threads simultaneously try to wake up the same tasklet. With a store barrier there after reverting the pointers, the torture test survived 750M connections on the NanoPI-Fire3, so it looks good this time. Probably that MT_LIST_BEHEAD should be added to test-list.c since it seems to be more sensitive to concurrent accesses with MT_LIST_ADDQ. It's worth noting that there is no barrier between the last two pointers update, while there is one in MT_LIST_POP and MT_LIST_BEHEAD, the latter having shown to be needed, but I cannot demonstrate why we would need one here. Given that the code seems solid here, let's stick to what is shown to work. This fix should be backported to 2.1, just for the sake of safety since the issue couldn't be triggered there, but it could change with the compiler or when backporting a fix for example.
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
Shell
100%