Re: pgbnech: allow to cancel queries during benchmark

Поиск
Список
Период
Сортировка
От Kirk Wolak
Тема Re: pgbnech: allow to cancel queries during benchmark
Дата
Msg-id CACLU5mT_etDu7hsH8GWk3DWYRgJgrANUBryHzFCfkZK=xk3Mrg@mail.gmail.com
обсуждение исходный текст
Ответ на pgbnech: allow to cancel queries during benchmark  (Yugo NAGATA <nagata@sraoss.co.jp>)
Ответы Re: pgbnech: allow to cancel queries during benchmark  (Yugo NAGATA <nagata@sraoss.co.jp>)
Список pgsql-hackers
On Mon, Jun 26, 2023 at 9:46 AM Yugo NAGATA <nagata@sraoss.co.jp> wrote:
Hello,

This attached patch enables pgbench to cancel queries during benchmark.

Formerly, Ctrl+C during benchmark killed pgbench immediately, but backend
processes executing long queries remained for a while. You can simply
reproduce this problem by cancelling the pgbench running a custom script
executing "SELECT pg_sleep(10)".

The patch fixes this so that cancel requests are sent for all connections on
Ctrl+C, and all running queries are cancelled before pgbench exits.

In thread #0, setup_cancel_handler is called before the loop, the
CancelRequested flag is set when Ctrl+C is issued. In the loop, cancel
requests are sent when the flag is set only in thread #0. SIGINT is
blocked in other threads, but the threads will exit after their query
are cancelled. If thread safety is disabled or OS is Windows, the signal
is not blocked because pthread_sigmask cannot be used.
(I didn't test the patch on WIndows yet, though.)

I choose the design that the signal handler and the query cancel are
performed only in thread #0 because I wanted to make the behavior as
predicable as possible. However, another design that all thread can
received SIGINT and that the first thread that catches the signal is
responsible to sent cancel requests for all connections may also work.

Also, the array of CState that contains all clients state is changed to
a global variable so that all connections can be accessed within a thread.


+1
  I also like the thread #0 handling design.  I have NOT reviewed/tested this yet. 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Nathan Bossart
Дата:
Сообщение: Re: Clean up JumbleQuery() from query text
Следующее
От: James Coleman
Дата:
Сообщение: Analyze on table creation?