Since the introduction of payload support on the CLI in 1.9-dev1 by
commit
abbf60710 ("MEDIUM: cli: Add payload support"), a chunk is
temporarily allocated for the CLI to support defragmenting a payload
passed with a command. However it's only released when passing via
the CLI_ST_END state (i.e. on clean shutdown), but not on errors.
Something as trivial as:
$ while :; do ncat --send-only -U /path/to/cli <<< "show stat"; done
with a few hundreds of servers is enough see the number of allocated
trash chunks go through the roof in "show pools".
This needs to be backported as far as 2.0.
(cherry picked from commit
18b2a9dd874b66acca304580047fa6b3c16da1e3)
Signed-off-by: Willy Tarreau <w@1wt.eu>
*/
si_shutw(si);
free_trash_chunk(appctx->chunk);
+ appctx->chunk = NULL;
break;
}
else if (appctx->st0 == CLI_ST_GETREQ) {
*/
static void cli_release_handler(struct appctx *appctx)
{
+ free_trash_chunk(appctx->chunk);
+ appctx->chunk = NULL;
+
if (appctx->io_release) {
appctx->io_release(appctx);
appctx->io_release = NULL;