MINOR: debug: make "show threads" properly iterate over all threads

Previously it would re-dump all threads to the same trash if  the output
buffer was full, which it never was since the trash is of the same size.
Now it dumps one thread, copies it to the buffer and yields until it can
continue. Showing 256 threads works as expected.
This commit is contained in:
Willy Tarreau 2023-05-04 19:07:56 +02:00
parent 880d1684a7
commit 009b5519e6
1 changed files with 11 additions and 7 deletions

View File

@ -370,14 +370,18 @@ static int cli_io_handler_show_threads(struct appctx *appctx)
else
thr = 0;
chunk_reset(&trash);
ha_thread_dump_all_to_trash();
do {
chunk_reset(&trash);
ha_thread_dump(&trash, thr);
if (applet_putchk(appctx, &trash) == -1) {
/* failed, try again */
appctx->st1 = thr;
return 0;
}
thr++;
} while (thr < global.nbthread);
if (applet_putchk(appctx, &trash) == -1) {
/* failed, try again */
appctx->st1 = thr;
return 0;
}
return 1;
}